Example #1
0
void Persona::VerParaModificar(String ci)
{
        String* d= buscarDatos(ci);
        Form7->Edit1->Text=d[2];
        Form7->Edit2->Text=d[3];
        Form7->DateTimePicker1->Date=StrToDate(d[4]);
        Form7->Edit3->Text=d[6];
        Form7->Edit4->Text=d[7];
        Form7->MaskEdit2->Text=d[8];
        Form7->MaskEdit3->Text=d[9];
        if(d[1]=="Paciente")
        {
                Form7->Panel1->Show();
                Form7->Panel2->Hide();
                Form7->Button3->Hide();
                Form7->Edit5->Text=d[10];
                Form7->Edit6->Text=d[11];
        }
        if(d[1]=="Representante")
        {
                Form7->Panel1->Hide();
                Form7->Panel2->Show();
                Form7->Button3->Hide();
                Form7->Edit7->Text=d[11];
                Form7->MaskEdit4->Text=d[12];
                Form7->Memo1->Text=d[13];
                Form7->ComboBox1->Text=d[10];
        }
        if(d[1]=="Empleados")
        {
                Form7->Panel1->Hide();
                Form7->Panel2->Hide();
                Form7->Button3->Show();
        }
}
Example #2
0
Date ScanDate(const char *s, Date def)
{
	Date d;
	if(StrToDate(d, s, def))
		return d;
	return def;
}
Example #3
0
int main(void)
{
    LONG result = RETURN_OK;

    do
    {
        dt.dat_Stamp.ds_Days = days;
        dt.dat_Format = FORMAT_DOS;
        dt.dat_StrDate = s;

        DateToStr(&dt);

        dt.dat_Stamp.ds_Days = -1;
        StrToDate(&dt);

        //printf("date \"%s\" day = %ld\n", s, days);

        if (dt.dat_Stamp.ds_Days != days)
        {
            printf("Bad results for date \"%s\" (day #%ld). "
                "StrToDate thought it was day #%ld\n", s, (long)days,
                (long)dt.dat_Stamp.ds_Days);
            result = RETURN_ERROR;
        }

        days++;

    }
    while (!CheckSignal(SIGBREAKF_CTRL_C) && (days < 36525));
        /* 2078-01-01: same as 1978 in FORMAT_DOS */

    return result;
}
Example #4
0
//---------------------------------------------------------------------------
TDateTime TQueryCustDlg::GetToDate()
{
  if (ToEdit->Text.c_str())
     return StrToDate(ToEdit->Text);
  else
     return 0;
}
Example #5
0
void __fastcall TfrmRaporMenu::TahsilatRaporSorgusu(void)
{
    frmOdemeRaporu->queryODEME->Close();
    frmOdemeRaporu->queryODEME->ParamByName("TARIH1")->AsDateTime =
        StrToDate(Edit_Tarih1->Text);
    frmOdemeRaporu->queryODEME->ParamByName("TARIH2")->AsDateTime =
        StrToDate(Edit_Tarih2->Text);
    frmOdemeRaporu->queryODEME->ParamByName("MNO1")->AsString =
        Edit_MusteriNo1->Text;
    frmOdemeRaporu->queryODEME->ParamByName("MNO2")->AsString =
        Edit_MusteriNo2->Text;
    frmOdemeRaporu->queryODEME->ParamByName("SATICI1")->AsString =
        combo_Satici1->Text;
    frmOdemeRaporu->queryODEME->ParamByName("SATICI2")->AsString =
        combo_Satici2->Text;
    frmOdemeRaporu->queryODEME->Open();
}
Example #6
0
//---------------------------------------------------------------------------
void __fastcall TFin2001::RefazConsulta()
{
	Word Year, Month, Day;
	System::TDateTime DateTimeIni, DateTimeFim;
	float TotalEntrada, TotalSaida;

	DecodeDate(StrToDate(data_ini->Text), Year, Month, Day);
	DateTimeIni = EncodeDateTime(Year, Month, Day, 00, 00, 00, 0);
	DecodeDate(StrToDate(data_fim->Text), Year, Month, Day);
	DateTimeFim = EncodeDateTime(Year, Month, Day, 23, 59, 59, 0);

	QyEntrada->Active = false;
	QySaida->Active = false;

	QyEntrada->ParamByName("data_ini")->AsDateTime = DateTimeIni;
	QyEntrada->ParamByName("data_fim")->AsDateTime = DateTimeFim;
	QySaida->ParamByName("data_ini")->AsDateTime = DateTimeIni;
	QySaida->ParamByName("data_fim")->AsDateTime = DateTimeFim;

	QyEntrada->Active = true;
	QySaida->Active = true;

	TotalEntrada = TotalSaida = 0;
	QyEntrada->First();
	QyEntrada->DisableControls();
	while (!QyEntrada->Eof) {
		TotalEntrada += QyEntrada->FieldByName("valor_lancamento")->AsFloat;
		QyEntrada->Next();
	}
	QyEntrada->First();
	QyEntrada->EnableControls();

	QySaida->First();
	QySaida->DisableControls();
	while (!QySaida->Eof) {
		TotalSaida += QySaida->FieldByName("valor_lancamento")->AsFloat;
		QySaida->Next();
	}
	QySaida->First();
	QySaida->EnableControls();

	edtTotalEntrada->Text = CurrToStrF(TotalEntrada,ffCurrency,2);
	edtTotalSaida->Text = CurrToStrF(TotalSaida,ffCurrency,2);
   edtDiferenca->Text = CurrToStrF((TotalEntrada-TotalSaida),ffCurrency,2);
}
Example #7
0
int main(void)
{
    UtilityBase = (struct UtilityBase *)OpenLibrary("utility.library", 0);
    if (UtilityBase)
    {
	dt.dat_StrDate = "31-dec-2000";
	dt.dat_Format = FORMAT_DOS;
	
	if (StrToDate(&dt))
	{
	    dt.dat_StrDate = s;
	    if (DateToStr(&dt))
	    {
	    	printf("Verified date: \"%s\" days = %ld min = %ld tick = %ld\n",
		    	s,
		    	dt.dat_Stamp.ds_Days,
			dt.dat_Stamp.ds_Minute,
			dt.dat_Stamp.ds_Tick);
	    	
		Amiga2Date(dt.dat_Stamp.ds_Days * 60 * 60 * 24 + 
		    	   dt.dat_Stamp.ds_Minute * 60 +
			   dt.dat_Stamp.ds_Tick / 50, &cd);
			   
		printf("\nAmiga2Date says:\n\n");
		printf("sec   = %d\n", cd.sec);
		printf("min   = %d\n", cd.min);
		printf("hour  = %d\n", cd.hour);
		printf("mday  = %d\n", cd.mday);
		printf("month = %d\n", cd.month);
		printf("year  = %d\n", cd.year);
		printf("wday  = %d\n", cd.wday);

    	    	printf("\n-------- One day later -----------\n\n");
		
		Amiga2Date((dt.dat_Stamp.ds_Days + 1) * 60 * 60 * 24 + 
		    	   dt.dat_Stamp.ds_Minute * 60 +
			   dt.dat_Stamp.ds_Tick / 50, &cd);
			   
		printf("\nAmiga2Date says:\n\n");
		printf("sec   = %d\n", cd.sec);
		printf("min   = %d\n", cd.min);
		printf("hour  = %d\n", cd.hour);
		printf("mday  = %d\n", cd.mday);
		printf("month = %d\n", cd.month);
		printf("year  = %d\n", cd.year);
		printf("wday  = %d\n", cd.wday);

	    }
	    else puts("DateToStr failed!");
	}
	else puts("StrToDate failed!");
	
    	CloseLibrary((struct Library *)UtilityBase);
    }

    return 0;
}
Example #8
0
void __fastcall TfrmRaporMenu::TaksitRaporSorgusu(void)
{
    frmTaksitRaporu->queryTAKSIT->Close();
    frmTaksitRaporu->queryTAKSIT->ParamByName("TARIH1")->AsDateTime =
        StrToDate(Edit_Tarih1->Text);
    frmTaksitRaporu->queryTAKSIT->ParamByName("TARIH2")->AsDateTime =
        StrToDate(Edit_Tarih2->Text);
    frmTaksitRaporu->queryTAKSIT->ParamByName("MNO1")->AsString =
        Edit_MusteriNo1->Text;
    frmTaksitRaporu->queryTAKSIT->ParamByName("MNO2")->AsString =
        Edit_MusteriNo2->Text;
    frmTaksitRaporu->queryTAKSIT->Open();

    frmTaksitRaporu->queryMUSTERI->Close();
    frmTaksitRaporu->queryMUSTERI->Open();
    frmTaksitRaporu->queryTUTAR->Close();
    frmTaksitRaporu->queryTUTAR->Open();
}
Example #9
0
//---------------------------------------------------------------------------
void __fastcall TQueryCustDlg::OkBtnClick(TObject *Sender)
{
  TDateTime Test;
  try
  {
    Test = StrToDate(FromEdit->Text); // validate date strings
    Test = StrToDate(ToEdit->Text);
    if (((int)ToDate != 0) && (ToDate < FromDate))
    {
      ShowMessage("\"TO\" date cannot be less than \"FROM\" date");
      ModalResult = mrNone;
    }
    else ModalResult = mrOk;
  }
  catch(EConvertError * ece)
  {
    ShowMessage("  Invalid date specified");
    ModalResult = mrNone;
  }
}
Example #10
0
void Empleado::DatosParaModificar(String ci)
{
        String* d= buscarDatos(ci);
        Form3->ComboBox1->Text=d[11];
        Form3->Edit1->Text=d[12];
        Form3->Edit2->Text=d[13];
        Form3->Memo1->Text=d[14];
        Form3->Memo2->Text=d[15];
        Form3->DateTimePicker1->Date=StrToDate(d[16]);
        Form3->Edit3->Text=d[17];

}
Example #11
0
//задание цвета строки
void AnimeList::RowColor(int row)
{
	Date release;
	Array<CellSeries> array;
	Date today = GetSysDate();
	String xml = listName.Get(row, SeriesRelease);
	String number, date;
	int ep = listName.Get(row, Episodes);
	int ser;
	if(xml.GetCount() > 0)
	{
		int pos;
		while(xml.GetCount() > 0){ 
			pos = xml.Find("-");
			if(pos > 0)
			{
				number = String(xml, pos);
				xml.Remove(0, pos + 1);
				date = String(xml, 10);
				xml.Remove(0, 11);
				series.number = StrInt(number);
				StrToDate(series.release, date);
				array.Add(series);
			}
		}
		release = array[array.GetCount()-1].release;
		if((ep == array[array.GetCount()-1].number) & (today < release))
			ser = array[array.GetCount()-1].number - 1;
		else
			ser = ((today - release) / 7) + array[array.GetCount()-1].number;
	} else
	{
		release = listName.Get(row, Release);
		ser = ((today - release) / 7) + 1;
	}
	int views = listName.Get(row, Views);
	if(views == ep) //полностью просмотрено
		for(int i=0;i<listName.GetColumnCount();i++)
			listName.SetDisplay(row, i, Single<ColumnBlue>());
	else
		if((views < ep) & (views != 0) & (views == ser)) //нет новых серий, в просмотре
			for(int i=0;i<listName.GetColumnCount();i++)
				listName.SetDisplay(row, i, Single<ColumnGreen>());
		else
			if((views < ep) & (views != 0) & (views < ser)) //есть новые серии, в просмотре
				for(int i=0;i<listName.GetColumnCount();i++)
					listName.SetDisplay(row, i, Single<ColumnRed>());
			else
				if(views == 0) //нет просмотренных серий
					for(int i=0;i<listName.GetColumnCount();i++)
						listName.SetDisplay(row, i, Single<ColumnDefault>());
}
void __fastcall TTimelineMainForm::Move1Click(TObject *Sender)
{
  AnsiString S;

  if( TimeLine1->Selected != NULL )
  {
    S = DateToStr(TimeLine1->Selected->Date);
    if( InputQuery("Move item", "Move to new date:", S) )
    {
      TimeLine1->Selected->Date = StrToDate(S);
    }
  }
}
Example #13
0
// ---------------------------------------------------------------------------
void __fastcall TStdDataForm::ConvertFilterCriteria(void) {
	if (FilterCriteria->Text != "") {
		switch (FilterOnRadioGroup->ItemIndex) {
		case 0:
			FLastDate = StrToDate(FilterCriteria->Text);
			break;
		case 1:
			FLastAmount = StrToFloat(FilterCriteria->Text);
			break;
		}
	}
	if (Orders->Filtered)
		Orders->Refresh();
}
Example #14
0
//---------------------------------------------------------------------------
void TfrmCalcParameter::GetDemo()
{
  AnsiString DirTrab=ExtractFileDir(Application->ExeName)+"\\";
  char* workdir;
  workdir=0;
  workdir = new char[255];
  strcpy(workdir,DirTrab.c_str());

  char clima[255];
  strcpy(clima,workdir);
  strncat(clima,"Toralapa93.csv",14);
  strcpy(condTemp->FileName,clima);

  strcpy(condTemp->TitTMin,"tmin");
  strcpy(condTemp->TitTMax,"tmax");
  strcpy(condTemp->TitPrec,"Rain");
  condTemp->LoadClimateInformation();
  PutValuesOnForm();
  DateTimePicker1->Date=StrToDate("10/22/1993");
  DateTimePicker2->Date=StrToDate("4/23/1994");
  edEmDay->Text=25;
  delete workdir;
}
Example #15
0
//выбор в главном массиве
void AnimeList::Change()
{
	if(listName.IsCursor()) {
		infoTab.complete.SetLabel(AsString(listName.Get(Complete)));
		infoTab.name.SetLabel(AsString(listName.Get(Named)));
		infoTab.nameRus.SetLabel(AsString(listName.Get(NamedRus)));
		infoTab.episodes.SetLabel(AsString(listName.Get(Episodes)));
		infoTab.views.SetLabel(AsString(listName.Get(Views)));
		infoTab.dateRelease.SetLabel(AsString(listName.Get(Release)));
		test.testStr.SetText(AsString((listName.Get(SeriesRelease))));
		
		if(parameters.checkSave)
		{
			String text;
			int v = listName.Get(Views);
			v++;
			text = Format(AsString(listName.Get(Named))+ " %d", v);
			copy.SetText(text);
			copy.SelectAll();
			copy.Copy();
		};
		
		seriesArray.Clear();
		test.testList.Clear();
		//заполнение массива релизов серий из поля SeriesRelease главного массива (парсер строки)
		String xml = listName.Get(SeriesRelease);
		String number, date;
		int pos;
		while(xml.GetCount() > 0){ 
			pos = xml.Find("-");
			if(pos > 0)
			{
			number = String(xml, pos);
			xml.Remove(0, pos + 1);
			date = String(xml, 10);
			xml.Remove(0, 11);
			series.number = StrInt(number);
			StrToDate(series.release, date);
			seriesArray.Add(series);
			}
		}
			
		if(listName.Get(Complete) != "Yes")
			AnimeSeries();
		else
			seriesDate.Clear();
	}
}
void __fastcall TTimelineMainForm::TimeLine1DragDrop(TObject *Sender,
      TObject *Source, int X, int Y)
{
  AnsiString S;

  if( (Sender == Source) && (TimeLine1->Selected != NULL ) )
  {
    S = DateToStr(TimeLine1->DateAtPos(X));

    if( InputQuery("Confirm move", Format("Move \"%s\" to new date:", OPENARRAY(TVarRec, (TimeLine1->Selected->Caption) ) ), S ) )
    {
      TimeLine1->Selected->Date  = StrToDate(S);
      TimeLine1->Selected->Level = TimeLine1->LevelAtPos(Y);
    }
  }

}
Example #17
0
void __fastcall TfrmMusteri::OdemeRaporu(void)
{
    tblMUSTERIAYLIK_TAKSIT->Value = 0;
    tblMUSTERIODENEN_TUTAR->Value = 0;
    tblMUSTERIKALAN_BORC->Value = 0;
    tblMUSTERIMAL_BEDELI->Value = 0;
    tblMUSTERISON_TAKSIT_TARIHI->Value = StrToDate("01.01.1980");

    querySATISFISI->Close();
    querySATISFISI->ParamByName("M_NO")->AsString = tblMUSTERIM_NO->Value;
    querySATISFISI->Open();

    queryODEME->Close();
    queryODEME->ParamByName("M_NO")->AsString = tblMUSTERIM_NO->Value;
    queryODEME->Open();

    queryDEVIR->Close();
    queryDEVIR->ParamByName("MUSTERI_NO")->AsString = tblMUSTERIM_NO->Value;
    queryDEVIR->Open();
    queryDEVIR->First();
    while (queryDEVIR->Eof == false) {
        tblMUSTERIODENEN_TUTAR->Value += queryDEVIRODEME_TUTARI->Value;
        queryDEVIR->Next();
    }

    queryTAKSIT->Close();
    queryTAKSIT->ParamByName("MUSTERI_NO")->AsString = tblMUSTERIM_NO->Value;
    queryTAKSIT->Open();
    queryTAKSIT->First();
    tblMUSTERIAYLIK_TAKSIT->Value = queryTAKSITTAKSIT_TUTARI->Value;
    while (queryTAKSIT->Eof == false) {
        tblMUSTERISON_TAKSIT_TARIHI->Value = queryTAKSITVADE_TARIHI->Value;
        tblMUSTERIODENEN_TUTAR->Value += queryTAKSITODEME_TUTARI->Value;
        queryTAKSIT->Next();
    }

    querySATIS->Close();
    querySATIS->ParamByName("M_NO")->AsString = tblMUSTERIM_NO->Value;
    querySATIS->Open();

    tblMUSTERIMAL_BEDELI->Value = querySATISMAL_BEDELI->Value;
    tblMUSTERIODENEN_TUTAR->Value += querySATISPESINAT->Value;
    tblMUSTERIKALAN_BORC->Value
        = tblMUSTERIMAL_BEDELI->Value - tblMUSTERIODENEN_TUTAR->Value;
}
Example #18
0
const char *StrToTime(const char *datefmt, Time& d, const char *s)
{
	s = StrToDate(datefmt, d, s);
	if(!s)
		return NULL;
	d.hour = d.minute = d.second = 0;
	for(int i = 0; i < 3; i++) {
		while(*s == ' ' || *s == ':')
			s++;
		int n;
		if(IsDigit(*s)) {
			char *q;
			n = strtoul(s, &q, 10);
			s = q;
		} else
			break;
		if(n < 0 || n > (i ? 59 : 23))
			return NULL;
		(i == 0 ? d.hour : i == 1 ? d.minute : d.second) = n;
	}
	return s;
}
Example #19
0
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
// Блок действий с работой/доплатой
//------------------------------------------------------------------------------
//=====================================================================
// добавление/редактирование работы
TWork* TController::addWork()
{
	bool payment = false;	// добавляется доплата или работа
	if(formWork->rgType->ItemIndex == 1)
		payment = true;
	//--------------------------------------------------------------------------
	/* 1) проверяются, заполнены ли все поля  */
	if((Trim(formWork->edtNumber->Text) == "") || (Trim(formWork->memoTitle->Text) == ""))
	{
		ShowMessage("Не все поля заполнены!");
		return NULL;
	}
	//--------------------------------------------------------------------------
	// если добавляется доплата, смотрим, есть ли такая работа
	if(payment)
	{
		bool flag = false; // есть ли такая работа
		int wnum = 0;
		for(int i=0; i<selectedKHR->Works.size(); i++)
		{
			if(StrToInt(formWork->edtNumber->Text) == selectedKHR->Works[i]->ulWorkNum)
			{
				flag = true;
				wnum = i;
			}
		}
		if(!flag)
		{
			ShowMessage("Нет работы, к которой добавляется доплата.");
			return NULL;
		}
		else if (selectedKHR->Works[wnum]->havePayment && selectedWork == NULL)
		{
			ShowMessage("У этой работы уже есть доплата.");
			return NULL;
		}
	}
	else
	/* проверка на наличие такой работы */
	{
		for(int i=0; i<selectedKHR->Works.size(); i++)
		{
			// собственный номер работы пропускается
			if((selectedWork != NULL) && (selectedWork->ulWorkNum == selectedKHR->Works[i]->ulWorkNum))
				break;
			else if(StrToInt(formWork->edtNumber->Text) == selectedKHR->Works[i]->ulWorkNum && (!payment))
			{
				ShowMessage("Работа с таким номером существует!");
				return NULL;
			}
		}
	}
	//--------------------------------------------------------------------------
	/* проверка правильности ввода дат начала и окончания */
	if((int)formWork->dtStartDate->Date > (int)formWork->dtEndDate->Date)
	{
		ShowMessage("Работа не может начинаться раньше, чем заканчивается!");
		return NULL;
	}
	//--------------------------------------------------------------------------
	/* заполнение информации о работе */
	TWork *newWork = new TWork;
	newWork->ulWorkNum = StrToInt(formWork->edtNumber->Text);
	if(payment)
		newWork->bPayment = true;
	else
		newWork->bPayment = false;
	newWork->szTitle = STR(formWork->memoTitle->Text);
	for (int i=0; i < formWork->sgWorks->RowCount; i++)
	{
		if(formWork->sgWorks->Cells[0][i] != "")
		{
			if(StrToInt(formWork->sgWorks->Cells[0][i]) != newWork->ulWorkNum)
			{
				if(Model->existWork(selectedKHR, StrToInt(formWork->sgWorks->Cells[0][i])))
				{
					// добавить проверку на наличие такой работы в КХР
					TDependance *dep=new TDependance;
					dep->ulWork = StrToInt(formWork->sgWorks->Cells[0][i]);
					if(formWork->listReq->Items->Item[i]->Checked == true)
						dep->bNeedToStart = true;
					else
						dep->bNeedToStart = false;
					newWork->WorkDep.push_back(dep);
				}
				else
				{
					ShowMessage("Нет работы с номером, указанным в зависимости!");
					delete newWork;
					return NULL;
				}
			}
			else
			{
				ShowMessage("У работы не может быть связь от самой себя!");
				delete newWork;
				return NULL;
			}
		}
	}
	newWork->dtStart = StrToDate(DateToStr(formWork->dtStartDate->Date));
	newWork->dtEnd	 = StrToDate(DateToStr(formWork->dtEndDate->Date));
	newWork->ulLength = Model->numWorkDays(newWork->dtStart, newWork->dtEnd);
	newWork->center.x = workCoord.x;
	newWork->center.y = workCoord.y;

	/* 	в случае если происходит редактирование работы,
		её состояние и координаты должны сохраняться */
	if(!formMain->AddOrEdit)
		newWork->eWorkState = selectedWork->eWorkState;
	else
		newWork->eWorkState = E_WS_OPEN;


	//--------------------------------------------------------------------------
	/* 3) проверка на корректность связей: для доплаты проверка не производится */
	if (formWork->cbCorrect->Checked == true && !payment)
	{
		if(!checkWork(selectedKHR, newWork))
		{
			ShowMessage("Связи некорректны! ");
			delete newWork;
			return NULL;
		}
	}
	//--------------------------------------------------------------------------
	/* 4) проверка на наличие исполнителей */
	for (int i=0; i < formWork->sgVolume->RowCount; i++)
	{
		if(formWork->sgVolume->Cells[0][i] != "") //если строчка заполнена
		{
			// проверка на наличие исполнителя
			if(!Model->checkExecutor(selectedKHR, STR(formWork->sgVolume->Cells[0][i])))
			{
				if(MessageDlg("Такого исполнителя: " + formWork->sgVolume->Cells[0][i]+ " - не существует! Добавить в список?",
					mtInformation, TMsgDlgButtons() << mbNo << mbYes , 7) == 7)
				{
					// нажата кнопка "Отмена"
					delete newWork;
					return NULL;
				}
				else
				{
					// добавление нового исполнителя в список
					Model->addExecutor(selectedKHR, STR(formWork->sgVolume->Cells[0][i]));

					TWorkVolume *vol = new TWorkVolume;
					int id = Model->executorByName(selectedKHR, STR(formWork->sgVolume->Cells[0][i]));
					vol->ulExecutor = id;
					for(int j=1; j<formWork->sgVolume->ColCount; j++)
					{
						if(formWork->sgVolume->Cells[j][i] != "")
						{
							if(StrToFloat(Trim(formWork->sgVolume->Cells[j][i])) != 0)
							{
								bool k = Model->checkQuart(j, newWork->dtStart, newWork->dtEnd);
								if(!k)
								{
									ShowMessage("Неправильно распределена трудоёмкость по кварталам!");
									delete newWork;
									return NULL;
								}
							}
							vol->ulVolume[j-1] = StrToInt(formWork->sgVolume->Cells[j][i]);
						}
						else
							vol->ulVolume[j-1] = 0;
					}
					newWork->WorkVolume.push_back(vol);
				}
			}
			else
			{
				// исполнитель существует
				TWorkVolume *vol = new TWorkVolume;
				int id = Model->executorByName(selectedKHR, STR(formWork->sgVolume->Cells[0][i]));
				vol->ulExecutor = id;

				for(int j=1; j<formWork->sgVolume->ColCount; j++)
				{
					if(formWork->sgVolume->Cells[j][i] != "")
					{
						if(StrToFloat(Trim(formWork->sgVolume->Cells[j][i])) != 0)
						{
							bool k = Model->checkQuart(j, newWork->dtStart, newWork->dtEnd);
							if(!k)
							{
								ShowMessage("Неправильно распределена трудоёмкость по кварталам!");
								delete newWork;
								return NULL;
							}
						}
						vol->ulVolume[j-1] = StrToInt(formWork->sgVolume->Cells[j][i]);
					}
					else
						vol->ulVolume[j-1] = 0;
				}
				newWork->WorkVolume.push_back(vol);
		 	}
		}
	}
    // установка связи доплаты с работой при редактировании доплаты
	if(payment)
		if(!formMain->AddOrEdit)
		{
			for(int i = 0;i < selectedKHR->Works.size(); i ++)
			{
				if(selectedKHR->Works[i]->ulWorkNum == newWork->ulWorkNum)
				{
					selectedKHR->Works[i]->havePayment = true;
					Model->addPayment(selectedKHR->Works[i], selectedWork);
				}
				if(selectedKHR->Works[i]->ulWorkNum == selectedWork->ulWorkNum)
				{
					selectedKHR->Works[i]->connectPayment.clear();
					selectedKHR->Works[i]->havePayment = false;
				}
			}
		}
	// Изменение номера редактируемой работы у связанных с ней работ, доплат, вех
	if(!formMain->AddOrEdit)
		if(selectedWork->ulWorkNum != newWork->ulWorkNum)
		{
			vector <TWork*> workNext = Model->getNext(selectedKHR, selectedWork);
			vector <TWork*> workPrev;
			for(int t = 0; t < workNext.size(); t ++)
				for(int i = 0; i < selectedKHR->Works.size(); i++)
					if(selectedKHR->Works[i]->ulWorkNum == workNext[t]->ulWorkNum)
					{
						for(int j = 0; j < selectedKHR->Works[i]->WorkDep.size(); j++)
							if(selectedKHR->Works[i]->WorkDep[j]->ulWork == selectedWork->ulWorkNum)
								selectedKHR->Works[i]->WorkDep[j]->ulWork = newWork->ulWorkNum;
					}
			for(int i = 0; i < selectedKHR->Payments.size(); i++)
				if(selectedKHR->Payments[i]->ulWorkNum == selectedWork->ulWorkNum)
					selectedKHR->Payments[i]->ulWorkNum = newWork->ulWorkNum;
			for(int i = 0; i < selectedKHR->Stages.size(); i++)
				if(selectedKHR->Stages[i]->ulStageNum == selectedWork->ulWorkNum)
					selectedKHR->Stages[i]->ulStageNum = newWork->ulWorkNum;
			for(int i =0; i < selectedKHR->Connects.size(); i++)
				if(selectedKHR->Connects[i]->begin == selectedWork->ulWorkNum)
					selectedKHR->Connects[i]->begin = newWork->ulWorkNum;
		}
	/* проверки пройдены, работа включается в список
	   новая работа => добавление */
	if(formMain->AddOrEdit)
	{
		selectedWork = newWork;
		if(formWork->rgType->ItemIndex == 0)
		{
			selectedKHR->Works.push_back(newWork);
			Model->addConnections(selectedKHR, selectedWork);
		}
		else
		{
			// нужно изменить информацию о работе, к кот. добавляется доплата
			TWork* pwork = getWorkByNum(selectedKHR, newWork->ulWorkNum);
			pwork->havePayment = true;
			Model->addPayment(pwork, newWork);
			selectedKHR->Payments.push_back(newWork);
		}
	}
	else
	{
		newWork->center.x = selectedWork->center.x ;
		newWork->center.y = selectedWork->center.y ;
		Model->editWork(selectedWork, newWork);
		if(!selectedWork->bPayment)
			Model->addConnections(selectedKHR, selectedWork);
		coordClear();
		delete newWork;
	}
 //	clearSelected();	// ни работа, ни КХР не выбрана
	return selectedWork;
}
Example #20
0
void __fastcall TMainForm::ButtonFindClick(TObject *Sender)
{
  AnsiString query = "SELECT * FROM " + m_shema + "." + m_current_table + " ";
  bool first_time = true;
  for (int i=1; i < ValueListEditorFind->RowCount; i++)
  {
   if (!ValueListEditorFind->Cells [1][i].IsEmpty())
   {
     if (first_time)
     {
       query += " WHERE ";
       first_time = false;
     }
     else
         query += " AND ";

     if (ValueListEditorFind->Cells [1][i].Trim().UpperCase() == "NULL")
     {
       query += m_view_list [i-1].field_name + " IS NULL ";
     }
     else if (ValueListEditorFind->Cells [1][i].Trim().UpperCase() == "NOT NULL")
     {
       query += "NOT " + m_view_list [i-1].field_name + " IS NULL ";
     }
     else
     {

     switch (m_view_list [i-1].type)
     {
       case VTVarchar:
         //query += m_view_list [i-1].field_name + " = \'";
         //query += ValueListEditorFind->Cells [1][i] + "\'";
         query += "UPPER (" + m_view_list [i-1].field_name + ") LIKE \'%";
         query += ValueListEditorFind->Cells [1][i].Trim().UpperCase() + "%\'";
         break;

       case VTShort:
         try
         {
           int temp;
           temp = StrToInt (ValueListEditorFind->Cells [1][i]);

           query += m_view_list [i-1].field_name + " = ";
           query += ValueListEditorFind->Cells [1][i];
         }
         catch (...)
         {
           ShowMessage ("Неверно задано значение в поле \'" + m_view_list [i-1].full_name + "\'");
           return;
         }
         break;

       case VTInteger:
         try
         {
           int temp;
           temp = StrToInt (ValueListEditorFind->Cells [1][i]);

           query += m_view_list [i-1].field_name + " = ";
           query += ValueListEditorFind->Cells [1][i];
         }
         catch (...)
         {
           ShowMessage ("Неверно задано значение в поле \'" + m_view_list [i-1].full_name + "\'");
           return;
         }
         break;

       case VTBool:
         try
         {
           int temp;
           temp = StrToInt (ValueListEditorFind->Cells [1][i]);

           query += m_view_list [i-1].field_name + " = ";
           query += ValueListEditorFind->Cells [1][i];
         }
         catch (...)
         {
           ShowMessage ("Неверно задано значение в поле \'" + m_view_list [i-1].full_name + "\'");
           return;
         }
         break;

       case VTDouble:
         try
         {
           float temp;
           temp = StrToFloat (ValueListEditorFind->Cells [1][i]);

           query += m_view_list [i-1].field_name + " = ";
           query += ValueListEditorFind->Cells [1][i];
         }
         catch (...)
         {
           ShowMessage ("Неверно задано значение в поле \'" + m_view_list [i-1].full_name + "\'");
           return;
         }
         break;

       case VTDate:
         {
           try
           {
             TDate date = StrToDate (ValueListEditorFind->Cells [1][i]);

             query += m_view_list [i-1].field_name + " = ";
             query += "TO_DATE (\'" + date.FormatString("dd.mm.yyyy")+ "\', \'DD.MM.YYYY\')";
           }
           catch (...)
           {
             ShowMessage ("Неверно задана дата в поле \'" + m_view_list [i-1].full_name + "\'");
             return;
           }
         }
         break;
     }
     }

   }
  }

  OraQueryAllJournal->Close();

  OraQueryAllJournal->SQL->Text = query;
  OraQueryAllJournal->Open();

  if (OraQueryAllJournal->RecordCount == 0)
  {
      for (int i=1; i < ValueListEditorJParam->RowCount; i++)
        ValueListEditorJParam->Cells [1][i] = "";
  }
}
Example #21
0
void TDataManager::KHRParse(AnsiString fileName)
{
// создаёт новую структуру КХР, разбирает все данные из xml-файла и заполняет
	// вызывает функцию контроллера AddKHR(TKHR *khr)
	// контроллер добавляет КХР в вектор элементов
	TKHR *khr = new TKHR;

	//---------------------------
	// открытие xml-файла
	string temp =  fileName.c_str();
	khr->path = temp;
	formMain->xmlReader->LoadFromFile(UnicodeString(fileName.c_str()));
	// parse xml
	try
	{
		_di_IXMLNode Root = formMain->xmlReader->DocumentElement;
		khr->szNumber 		= VARSTR(Root->Attributes["number"]);
		khr->szTitle  		= VARSTR(Root->Attributes["name"]);
		khr->dtStartDate	= StrToDate(VARSTR(Root->Attributes["begin"]));
		khr->szOrder 		= VARSTR(Root->Attributes["orderNum"]);
		khr->szFileName 	= VARSTR(Root->Attributes["file"]);
		//-----------------------------------------------------------------------------------------
		// разбираем вложенные теги КХР
		for (int i=0; i < Root->ChildNodes->Count; i++)
		{
			// работы
			if (Root->ChildNodes->Nodes[i]->NodeName == "work")
			{
				TWork *work = new TWork;
				_di_IXMLNode oneWork = Root->ChildNodes->Nodes[i];
				work->ulWorkNum = int(oneWork->Attributes["number"]);
				work->bPayment 	= StrToBool(VARSTR(oneWork->Attributes["type"]));
				work->szTitle 	= VARSTR(oneWork->Attributes["name"]);
				work->dtStart 	= StrToDate(VARSTR(oneWork->Attributes["begin"]));
				work->dtEnd 	= StrToDate(VARSTR(oneWork->Attributes["end"]));
				work->dtMoveTo 	= StrToDate(VARSTR(oneWork->Attributes["move"]));
				work->ulLength 	= int(oneWork->Attributes["length"]);
				work->havePayment 	= StrToBool(VARSTR(oneWork->Attributes["pay"]));
				work->haveStage 	= StrToBool(VARSTR(oneWork->Attributes["stage"]));
				work->eWorkState    = int(oneWork->Attributes["state"]);
				work->center.x 		= float(oneWork->Attributes["x"]);
				work->center.y		= float(oneWork->Attributes["y"]);
				// вспомогательные переменные
				int iCmdCounter = 0; // счетчик команд работы

				// вложенные теги работы
				for (int j=0; j < oneWork->ChildNodes->Count; j++)
				{
					// точки связи к доплате
					if (oneWork->ChildNodes->Nodes[j]->NodeName == "paypoint")
					{
						_di_IXMLNode point = oneWork->ChildNodes->Nodes[j];
						T2d dot;
						dot.x = float(point->Attributes["x"]);
						dot.y = float(point->Attributes["y"]);
						work->connectPayment.push_back(dot);
					}
					// исполнители
					else if (oneWork->ChildNodes->Nodes[j]->NodeName == "executor")
					{
						TWorkVolume *vol = new TWorkVolume;
						_di_IXMLNode oneEx = oneWork->ChildNodes->Nodes[j];
						vol->ulExecutor = int(oneEx->Attributes["number"]);

						for (int k=0; k < oneEx->ChildNodes->Count; k++)
						{
							if (oneEx->ChildNodes->Nodes[k]->NodeName == "quartvol")
							{
								_di_IXMLNode oneVol = oneEx->ChildNodes->Nodes[k];
								vol->ulVolume[k] = int(oneVol->Attributes["volume"]);
							}
						}
						work->WorkVolume.push_back(vol);
					}
					// зависимости
					else if (oneWork->ChildNodes->Nodes[j]->NodeName == "dependence")
					{

						TDependance *dep 	= new TDependance;
						_di_IXMLNode oneDep = oneWork->ChildNodes->Nodes[j];
						dep->bNeedToStart 	= StrToBool(VARSTR(oneDep->Attributes["need"]));
						dep->ulWork			= int(oneDep->Attributes["work"]);
						work->WorkDep.push_back(dep);
					}
					// команды
					else if (oneWork->ChildNodes->Nodes[j]->NodeName == "command")
					{
						_di_IXMLNode oneCmd = oneWork->ChildNodes->Nodes[j];
						work->eCommand[iCmdCounter++] = int(oneCmd->Attributes["code"]);
					}
				}

				khr->Works.push_back(work);
			}
			// доплаты
			else if (Root->ChildNodes->Nodes[i]->NodeName == "payment")
			{
				TWork *work = new TWork;
				_di_IXMLNode oneWork = Root->ChildNodes->Nodes[i];
				work->ulWorkNum = int(oneWork->Attributes["number"]);
				work->bPayment 	= StrToBool(VARSTR(oneWork->Attributes["type"]));
				work->szTitle 	= VARSTR(oneWork->Attributes["name"]);
				work->dtStart 	= StrToDate(VARSTR(oneWork->Attributes["begin"]));
				work->dtEnd 	= StrToDate(VARSTR(oneWork->Attributes["end"]));
				work->dtMoveTo 	= StrToDate(VARSTR(oneWork->Attributes["move"]));
				work->ulLength 	= int(oneWork->Attributes["length"]);
				work->eWorkState    = int(oneWork->Attributes["state"]);
				work->center.x 		= float(oneWork->Attributes["x"]);
				work->center.y		= float(oneWork->Attributes["y"]);
				// вспомогательные переменные
				int iCmdCounter = 0; // счетчик команд работы

				// вложенные теги доплаты
				for (int j=0; j < oneWork->ChildNodes->Count; j++)
				{
					// исполнители
					if (oneWork->ChildNodes->Nodes[j]->NodeName == "executor")
					{
						TWorkVolume *vol = new TWorkVolume;
						_di_IXMLNode oneEx = oneWork->ChildNodes->Nodes[j];
						vol->ulExecutor = int(oneEx->Attributes["number"]);

						for (int k=0; k < oneEx->ChildNodes->Count; k++)
						{
							if (oneEx->ChildNodes->Nodes[k]->NodeName == "quartvol")
							{
								_di_IXMLNode oneVol = oneEx->ChildNodes->Nodes[k];
								vol->ulVolume[k] = int(oneVol->Attributes["volume"]);
							}
						}
						work->WorkVolume.push_back(vol);
					}
					// зависимости
					else if (oneWork->ChildNodes->Nodes[j]->NodeName == "dependence")
					{

						TDependance *dep 	= new TDependance;
						_di_IXMLNode oneDep = oneWork->ChildNodes->Nodes[j];
						dep->bNeedToStart 	= StrToBool(VARSTR(oneDep->Attributes["need"]));
						dep->ulWork			= int(oneDep->Attributes["work"]);
						work->WorkDep.push_back(dep);
					}
					// команды
					else if (oneWork->ChildNodes->Nodes[j]->NodeName == "command")
					{
						_di_IXMLNode oneCmd = oneWork->ChildNodes->Nodes[j];
						work->eCommand[iCmdCounter++] = int(oneCmd->Attributes["code"]);
					}
				}

				khr->Payments.push_back(work);
			}
			// ссылки
			else if (Root->ChildNodes->Nodes[i]->NodeName == "link")
			{
				TLink *link = new TLink;
				_di_IXMLNode oneLink = Root->ChildNodes->Nodes[i];

				link->ulWorkNum = int(oneLink->Attributes["number"]);
				link->slText->Text 	= VARSTR(oneLink->Attributes["text"]);
				link->dtDate 	= StrToDate(VARSTR(oneLink->Attributes["date"]));
				link->szNumber  = VARSTR(oneLink->Attributes["khrnum"]);
				link->center.x 	= float(oneLink->Attributes["x"]);
				link->center.y 	= float(oneLink->Attributes["y"]);

				// вложенные теги ссылки
				for (int j=0; j < oneLink->ChildNodes->Count; j++)
				{
					// зависимости
					if (oneLink->ChildNodes->Nodes[j]->NodeName == "linkdependence")
					{
						TDependance *dep 	= new TDependance;
						_di_IXMLNode oneDep = oneLink->ChildNodes->Nodes[j];
						dep->bNeedToStart 	= StrToBool(VARSTR(oneDep->Attributes["need"]));
						dep->ulWork			= int(oneDep->Attributes["num"]);
						link->WorkDep.push_back(dep);
					}
				}

				khr->Links.push_back(link);
			}
			// вехи
			else if (Root->ChildNodes->Nodes[i]->NodeName == "stage")
			{
				TStage *nstage = new TStage;
				_di_IXMLNode oneStage = Root->ChildNodes->Nodes[i];
				nstage->ulStageNum = int(oneStage->Attributes["number"]);
				nstage->center.x  =  float(oneStage->Attributes["x"]);
				nstage->center.y  =  float(oneStage->Attributes["y"]);

				// вложенные теги вехи
				for(int j=0; j<oneStage->ChildNodes->Count; j++)
				{
					// точки связи
					if (oneStage->ChildNodes->Nodes[j]->NodeName == "point")
					{
						T2d point;
						_di_IXMLNode onePoint = oneStage->ChildNodes->Nodes[j];
						point.x = float(onePoint->Attributes["x"]);
						point.y = float(onePoint->Attributes["y"]);
						nstage->connect.push_back(point);
					}
				}

				khr->Stages.push_back(nstage);
			}
			// стрелки
			else if (Root->ChildNodes->Nodes[i]->NodeName == "connect")
			{
				TConnection *connect = new TConnection;
				_di_IXMLNode oneLine = Root->ChildNodes->Nodes[i];
				connect->begin = int(oneLine->Attributes["begin"]);
				connect->end = int(oneLine->Attributes["end"]);
				connect->needStart = StrToBool(VARSTR(oneLine->Attributes["need"]));

				// вложенные теги стрелки
				for(int j=0; j<oneLine->ChildNodes->Count; j++)
				{
					T2d point;
					_di_IXMLNode onePoint = oneLine->ChildNodes->Nodes[j];
					point.x = float(onePoint->Attributes["x"]);
					point.y = float(onePoint->Attributes["y"]);
					connect->connect.push_back(point);
				}

				khr->Connects.push_back(connect);
			}
			// исполнители КХР
			else if (Root->ChildNodes->Nodes[i]->NodeName == "executor")
			{
				TExecutor *exec 		= new TExecutor;
				_di_IXMLNode oneExec 	= Root->ChildNodes->Nodes[i];
				exec->id 				= int(oneExec->Attributes["id"]);
				exec->szName			= VARSTR(oneExec->Attributes["name"]);
				khr->Executors.push_back(exec);
			}
			// подписи исполнителей
			else if (Root->ChildNodes->Nodes[i]->NodeName == "signature")
			{
				TSignature *sig 	= new TSignature;
				_di_IXMLNode oneSig = Root->ChildNodes->Nodes[i];
				sig->szChair 		= VARSTR(oneSig->Attributes["chair"]);
				sig->szName  		= VARSTR(oneSig->Attributes["name"]);
				khr->Signatures.push_back(sig);
			}

			khr->selected = true;
		}
	}
	catch(EConvertError* e)
	{
		ShowMessage("Ошибка загрузки файла КХР: "+ e->ToString());
	}
	//---------------------------
	control->addKHR(khr);
}
void __fastcall TFormCosts::Edit3KeyPress(TObject *Sender, System::WideChar &Key)          
{
    if(Key == VK_RETURN)
    {
        if(Edit3->Text != "")
        {
            AnsiString dateth[2];
            for(int i = 1, DateNum = 0; i <= Edit3->Text.Length(); i++)
            {
                if(Edit3->Text[i] != '-')
                {
                    dateth[DateNum] += Edit3->Text[i];
                }
                else
                {
                    DateNum++;
                }
            }
            if(ADOQuery1->Active)
            {
                ADOQuery1->Active = false;
            }
            if(dateth[1] == "")
            {
                dateth[1] = dateth[0];
            }
            ADOQuery1->SQL->Text = "SELECT * FROM Costs WHERE `Дата` BETWEEN #"+FormatDateTime("yyyy-mm-dd", StrToDate(dateth[0]))+"# AND #"+FormatDateTime("yyyy-mm-dd", StrToDate(dateth[1])+1)+"#;";
            ADOQuery1->Active = true;
        }
        else
        {
            if(ADOQuery1->Active)
            {
                ADOQuery1->Active = false;
            }
            ADOQuery1->SQL->Text = "SELECT * FROM Costs";
            ADOQuery1->Active = true;
        } 
    }
    if((Key != VK_BACK) && (Key < '0' || Key > '9') && (Key != '.') && (Key != '-'))
	{
		Key=0;
	}
}
Example #23
0
//---------------------------------------------------------------------------
// Поиск
//---------------------------------------------------------------------------
void __fastcall TForm1::fnd_btnClick(TObject *Sender)
{
    AnsiString x;
    if (!vladf->Text.IsEmpty()) x+="AND Ucase(vladel) like Ucase(\"%"+vladf->Text+"%\") ";
    if (!adrf->Text.IsEmpty())  x+="AND Ucase(adr)    like Ucase(\"%"+adrf->Text+"%\") ";
    if (!zverf->Text.IsEmpty()) x+="AND Ucase(zver)   like Ucase(\"%"+zverf->Text+"%\") ";
    if (!dzf->Text.IsEmpty())   x+="AND Ucase(dz)     like Ucase(\"%"+dzf->Text+"%\") ";
    if (!dopf->Text.IsEmpty())  x+="AND Ucase(dop)    like Ucase(\"%"+dopf->Text+"%\") ";

    Form1->sub->Text=Form1->sub->Text.Trim();
    Form1->sue->Text=Form1->sue->Text.Trim();
    if (!sub->Text.IsEmpty())  x+="AND [sum]>"+sub->Text+" ";
    if (!sue->Text.IsEmpty())  x+="AND [sum]<"+sue->Text+" ";

    bool flot=false,fldo=false;
    try { StrToDate(fot->Text); flot=true; } catch(...) { }
    try { StrToDate(fdo->Text); fldo=true; } catch(...) { }
    if (flot) x+="AND [date]>=#"+fot->Date.FormatString("mm'/'dd'/'yyyy")+"# ";
    if (fldo) x+="AND [date]<=#"+fdo->Date.FormatString("mm'/'dd'/'yyyy")+"# ";

    if (vrachf->Text!="любой врач")
        x+="AND vrach_id in (select id from vrachi where name='"+vrachf->Text+"') ";

    table->Close();
    table->SQL->Clear();
    table->SQL->Add("SELECT * FROM view1 WHERE 1 "+x);
    table->ExecSQL();
    table->Open();
    table->First();

    TADOQuery* del=new TADOQuery(NULL);
    del->Connection=Form1->connect;
    del->Close();
    del->SQL->Clear();
    del->SQL->Add("select sum(sum) as s, count(*) as c from view1 where 1 "+x);
    del->ExecSQL();
    del->Open();
    del->First();
    ambl->Caption="Найдено записей: "+del->FieldByName("c")->AsString+
    "     на сумму "+
        (del->FieldByName("s")->AsInteger>0 ?
            del->FieldByName("s")->AsString :
            AnsiString("0"))
        +" рублей";
    del->Close();

    x="";
    if (!vladf->Text.IsEmpty()) x+="AND Ucase(vlad) like Ucase(\"%"+vladf->Text+"%\") ";
    if (!adrf->Text.IsEmpty())  x+="AND Ucase(vlad) like Ucase(\"%"+adrf->Text+"%\") ";
    if (!zverf->Text.IsEmpty()) x+="AND Ucase(zver) like Ucase(\"%"+zverf->Text+"%\") ";

    Form1->sub->Text=Form1->sub->Text.Trim();
    Form1->sue->Text=Form1->sue->Text.Trim();
    if (!sub->Text.IsEmpty())  x+="AND [sum]>"+sub->Text+" ";
    if (!sue->Text.IsEmpty())  x+="AND [sum]<"+sue->Text+" ";

    flot=false,fldo=false;
    try { StrToDate(fot->Text); flot=true; } catch(...) { }
    try { StrToDate(fdo->Text); fldo=true; } catch(...) { }
    if (flot) x+="AND [date]>=#"+fot->Date.FormatString("mm'/'dd'/'yyyy")+"# ";
    if (fldo) x+="AND [date]<=#"+fdo->Date.FormatString("mm'/'dd'/'yyyy")+"# ";

    vact->Close();
    vact->SQL->Clear();
    vact->SQL->Add("SELECT * FROM view2 WHERE 1 "+x);
    vact->ExecSQL();
    vact->Open();
    vact->First();

    del->SQL->Clear();
    del->SQL->Add("select sum(sum) as s, count(*) as c from view2 where 1 "+x);
    del->ExecSQL();
    del->Open();
    del->First();
    vacl->Caption="Найдено записей: "+del->FieldByName("c")->AsString+
    "     на сумму "+
        (del->FieldByName("s")->AsInteger>0 ?
            del->FieldByName("s")->AsString :
            AnsiString("0"))
        +" рублей";
    del->Close();
    delete del;
}
Example #24
0
Value Scan(dword qtype, const String& text, const Value& def, bool *hastime) {
	Date date;
	const char *s;
	if(hastime)
		*hastime = false;
	switch(qtype) {
	case INT64_V:
	case INT_V:
	case BOOL_V:
		return StrIntValue(text);
	case DATE_V:
		if(text.IsEmpty()) return (Date) Null;
		s = StrToDate(date, text, (Date)def);
		if(s)
			for(;;) {
				if(IsDigit(*s))
					break;
				if(*s == '\0')
					return date;
				s++;
			}
		return ErrorValue(t_("Invalid date !"));
	case TIME_V: {
		if(text.IsEmpty()) return (Time) Null;
		s = StrToDate(date, text, (Date)def);
		if(s)
			try {
				CParser p(s);
				Time tm = ToTime(date);
				Time d = (Time)def;
				tm.hour = d.hour;
				tm.minute = d.minute;
				tm.second = d.second;
				if(p.IsEof())
					return tm;
				if(hastime)
					*hastime = true;
				int q = p.ReadInt();
				if(q < 0 || q > 23)
					throw CParser::Error("");
				tm.hour = q;
				if(p.IsEof())
					return tm;
				p.PassChar(':');
				q = p.ReadInt();
				if(q < 0 || q > 59)
					throw CParser::Error("");
				tm.minute = q;
				if(p.IsEof())
					return tm;
				p.PassChar(':');
				q = p.ReadInt();
				if(q < 0 || q > 59)
					throw CParser::Error("");
				tm.second = q;
				if(p.IsEof())
					return tm;
			}
			catch(CParser::Error) {}
		return ErrorValue(t_("Invalid time !"));
	}
	case STRING_V:
	case WSTRING_V:
		return text;
	case DOUBLE_V:
		return StrDblValue(text);
	default:
		ASSERT(0);
		break;
	}
	return Null;
}
Example #25
0
// щелчок на кнопке OK
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    int h; // дескриптор файла

    h = FileOpen("meteo.txt",fmOpenRead);
    if ( h == -1)
    {
        ShowMessage("Файл данных meteo.txt не найден.");
        return;
    }

    Memo1->Lines->Clear();

    // Обработка файла

    AnsiString st; // строка, прочитанная из файла
    int ls;         // длинна строки

    TDateTime aDate;  // дата
    float temp;       // температура
    int nMonth;       // месяц

    int n = 0;     // количество дней (прочитанных строк)
    float sum = 0; // сумма температур
    float sred;    // среднее значение

    AnsiString buf;

    /* каждая строка файла имеет вид:
       ДД.ММ.ГГГГ Т
       где: ДД.ММ.ГГГГ - дата; Т - температура */

    do
    {
        ls = GetString(h,&st); // дата
        if ( ls != 0)
        {
            nMonth = MonthOf (StrToDate(st)) - 1; // месяц
            buf = st;

            ls = GetString(h,&st); // температура
            temp = StrToFloat(st);
            if ( nMonth == ComboBox1->ItemIndex )
            {
                n++;
                sum = sum + temp;
                buf = buf + "   " + st;
                Memo1->Lines->Add(buf);
            }
        }
    } while ( ls != 0);

    FileClose(h);

    if ( n != 0 )
    {
        sred = sum / n;
        Label1->Caption = "Среднее значение: " +
                     FloatToStrF(sred,ffGeneral,3,2);
    }
    else
        Label1->Caption = "В БД нет информации о температуре за " +
                    ComboBox1->Text;
}
Example #26
0
BOOL __asm __saveds L_GetFileVersion(
	register __a0 char *name,
	register __d0 short *version,
	register __d1 short *revision,
	register __a1 struct DateStamp *date,
	register __a2 APTR progress)
{
	char *buffer;
	BPTR file;
	short size,pos;
	char match_string[6];
	short match=0;
	BOOL ok=0;
	struct TagItem tags[2];
	unsigned short word_read=0,wordpos=0;
	unsigned short verflags=0;
	unsigned long wordcount=0,headerstart=0,matchpos=0,headerlength=0,limit;

	// Initialise things
	*version=0;
	*revision=0;
	if (date) date->ds_Days=0;

	// Allocate buffer
	if (!(buffer=AllocVec(4096,0))) return 0;

	// Open file
	if (!(file=Open(name,MODE_OLDFILE)))
	{
		FreeVec(buffer);
		return 0;
	}

	// Initialise tags
	tags[0].ti_Tag=PW_FileSize;
	tags[1].ti_Tag=TAG_END;

	// Got progress?
	if (progress)
	{
		struct FileInfoBlock __aligned info;

		// Get file info	
		if (ExamineFH(file,&info))
		{
			// Set file size
			tags[0].ti_Data=info.fib_Size;
		}
		else tags[0].ti_Data=0;

		// Set bar
		L_SetProgressWindow(progress,tags);

		// No file size?
		if (!tags[0].ti_Data) progress=0;
	}

	// Set tag to update size
	tags[0].ti_Tag=PW_FileDone;
	tags[0].ti_Data=0;

	// Build match string
	match_string[0]='$';
	match_string[1]='V';
	match_string[2]='E';
	match_string[3]='R';
	match_string[4]=':';

	// Wordcount limit
	limit=256;

	// Read first 4k
	while ((size=Read(file,buffer,4096))>-1)
	{
		short extra=0;

		// End of file?
		if (size==0)
		{
			// Did we find matchword?
			if (verflags&VERF_MATCH)
			{
				// Seek to match position
				Seek(file,matchpos,OFFSET_BEGINNING);

				// Read into buffer
				size=Read(file,buffer,512);

				// Signal a match
				match=5;
				verflags&=~VERF_MATCH;
			}

			// Failed to find anything
			else break;
		}

		// Got progress?
		if (progress)
		{
			// Check for abort
			if (L_CheckProgressAbort(progress)) break;

			// Increment total, update display
			tags[0].ti_Data+=size;
			L_SetProgressWindow(progress,tags);
		}

		// Leave last 32 bytes
		if (size>4064)
		{
			extra=size-4064;
			size=4064;
		}

		// Go through buffer
		for (pos=0;pos<size && match<5;pos++)
		{
			// Add to word
			if (wordpos==0)
			{
				// High byte
				word_read=((unsigned char)buffer[pos])<<8;
				wordpos=1;
			}

			// Low byte
			else
			if (!(verflags&VERF_FAIL))
			{
				// This completes the word
				word_read|=(unsigned char)buffer[pos];
				wordpos=0;

				// Increment count	
				++wordcount;

				// Executable?
				if (word_read==VER_EXECUTABLE && wordcount==2)
				{
					verflags|=VERF_GOT_EXE;
				}

				// Correct header?
				else
				if (verflags&VERF_GOT_EXE && (word_read==VER_HEADER_CODE || word_read==VER_HEADER_DATA) && !headerstart)
				{
					// Set flag
					verflags|=VERF_GOT_HEADER;
					headerstart=((wordcount-1)<<1)+6;

					// Get length of the header
					CopyMem((char *)(buffer+pos+1),(char *)&headerlength,sizeof(headerlength));

					// Convert length to words
					++headerlength;
					headerlength<<=1;
				}

				// Match word?
				else
				if (verflags&VERF_GOT_EXE && verflags&VERF_GOT_HEADER && word_read==VER_MATCHWORD)
				{
					struct Resident res;

					// Get resident structure
					CopyMem((char *)(buffer+pos-1),(char *)&res,sizeof(struct Resident));

					// Get position of ID string from hunk offset
					matchpos=((long)res.rt_IdString)+headerstart-1;

					// Set match flag
					verflags|=VERF_MATCH|VERF_FAIL;
				}

				// Got a header?
				else
				if (headerstart)
				{
					// Decrement a word from the headerlength
					if ((--headerlength)<=0)
					{
						// End of the header
						verflags&=~VERF_GOT_HEADER;
						headerstart=0;

						// New word count limit
						limit=wordcount+256;
					}
				}

				// Have we gone too far?
				if (wordcount>limit && !(verflags&VERF_GOT_HEADER)) verflags|=VERF_FAIL;
			}

			// Check for match
			if (buffer[pos]==match_string[match])
			{
				// Increment match count
				++match;
			}

			// Reset match count
			else match=0;
		}

		// Got a match?
		if (match==5)
		{
			short day,month,year;
			char datebuf[20];
			struct DateTime dt;

			// Got progress?
			if (progress)
			{
				// Show full bar
				tags[0].ti_Data=(ULONG)-1;
				L_SetProgressWindow(progress,tags);
			}

			// Bump position
			++pos;

			// On a space?
			if (buffer[pos]==' ')
			{
				// Find first non-space
				while (pos<size && buffer[pos]==' ') ++pos;
				if (pos>=size) break;
			}

			// Find first space
			while (pos<size && buffer[pos]!=' ' && buffer[pos]!='\n') ++pos;
			if (pos>=size || buffer[pos]=='\n') break;

			// Find first number
			while (pos<size && (buffer[pos]<'0' || buffer[pos]>'9')) ++pos;
			if (pos>=size) break;

			// Get version number
			*version=atoi(buffer+pos);

			// Find decimal point
			while (pos<size && buffer[pos]!='.' && buffer[pos]!=' ') ++pos;
			if (pos>=size-1) break;

			// Check next number
			++pos;
			if (buffer[pos]>='0' && buffer[pos]<='9')
				*revision=atoi(buffer+pos);

			// We're ok at this point
			ok=1;

			// Want date?
			if (!date) break;

			// Find parentheses for date
			while (pos<size && buffer[pos]!='(') ++pos;
			if (pos>=size) break;

			// Get day
			++pos;
			day=atoi(buffer+pos);
			if (day<1 || day>31) break;

			// Skip a segment
			if ((pos=version_skip(buffer,pos,size))==-1) break;

			// Get month
			month=atoi(buffer+pos);
			if (month<1 || month>12)
			{
				char buf[4];

				// Maybe this is a character month
				buf[0]=buffer[pos];
				buf[1]=buffer[pos+1];
				buf[2]=buffer[pos+2];
				buf[3]=0;

				// See if it matches
				for (month=0;month<12;month++)
					if (stricmp(month_str[month],buf)==0) break;

				// Did it match?
				if (month<12) ++month;
				else break;
			}

			// Skip a segment
			if ((pos=version_skip(buffer,pos,size))==-1) break;

			// Get year
			year=atoi(buffer+pos);

			// Check year
			if (year>1900 && year<2000) year-=1900;
			if (year<78) break;
			while (year>100) year-=100;

			// Build string
			lsprintf(datebuf,"%ld-%ld-%ld",month,day,year);

			// Convert to datestamp
			dt.dat_Format=FORMAT_USA;
			dt.dat_Flags=0;
			dt.dat_StrDay=0;
			dt.dat_StrDate=datebuf;
			dt.dat_StrTime="00:00:00";
			StrToDate(&dt);

			// Copy datestamp
			*date=dt.dat_Stamp;
			break;
		}

		// Any extra?
		if (extra>0)
		{
			// Seek back for extra
			Seek(file,-extra,OFFSET_CURRENT);
		}
	}

	// Close file, free buffer
	Close(file);
	FreeVec(buffer);

	return ok;
}
Example #27
0
void __fastcall TFormDataForDiplom::FormCreate(TObject *Sender)
{
   DateTimePickerDateVidachi->Date = StrToDate(opts.DateDiplom);
   DateTimePickerDatePrisQualif->Date = StrToDate(opts.DateQualif);
}
Example #28
0
int main(void)
{
    struct AnchorPath aPath;
    struct RDArgs  *rda;
    IPTR            args[5] = { NULL, NULL, NULL, NULL, FALSE };
    struct DateTime dt;
    LONG            error = 0;
    BPTR            oldCurDir;
    LONG            retval = RETURN_OK;
    BOOL            timeError = FALSE; /* Error in time/date specification? */

    rda = ReadArgs("FILE/A,WEEKDAY,DATE,TIME,ALL/S", args, NULL);

    if(rda == NULL)
    {
	PrintFault(IoErr(), "SetDate");
	return RETURN_FAIL;
    }

    /* Use the current time as default (if no DATE, TIME or WEEKDAY is
       defined) */
    DateStamp(&dt.dat_Stamp);

    dt.dat_Flags   = DTF_FUTURE;
    dt.dat_Format  = FORMAT_DOS;
    dt.dat_StrDate = (TEXT *)args[ARG_DATE];
    dt.dat_StrTime = (TEXT *)args[ARG_TIME];

    /* Change the defaults according to the user's specifications */
    if(StrToDate(&dt))
    {
	dt.dat_StrDate = (TEXT *)args[ARG_WEEKDAY];

	if(!StrToDate(&dt))
	    timeError = TRUE;
    }
    else
	timeError = TRUE;
   
    if(timeError)
    {
	PutStr("SetDate: Illegal DATE or TIME string\n");
	return RETURN_FAIL;
    }


    aPath.ap_Flags = (BOOL)args[ARG_ALL] ? APF_DOWILD : 0;
    aPath.ap_BreakBits = SIGBREAKF_CTRL_C;
    aPath.ap_Strlen = 0;

    /* Save the current dir */
    oldCurDir = CurrentDir(NULL);
    CurrentDir(oldCurDir);

    error = MatchFirst((STRPTR)args[ARG_FILE], &aPath);

    while(error == 0)
    {
	CurrentDir(aPath.ap_Current->an_Lock);

	// VPrintf("%s", (IPTR *)&aPath.ap_Info.fib_FileName);
	
	SetFileDate(aPath.ap_Info.fib_FileName, &dt.dat_Stamp);

	error = MatchNext(&aPath);
    }
    
    MatchEnd(&aPath);

    /* Restore the current dir */
    CurrentDir(oldCurDir);
    
    FreeArgs(rda);

    if(error != ERROR_NO_MORE_ENTRIES)
    {
	if(error == ERROR_BREAK)
	    retval = RETURN_WARN;
	else
	    retval = RETURN_FAIL;

	PrintFault(IoErr(), "SetDate");
    }

    return retval;
}	
Example #29
0
//when the calendar choice is changed, change variables accordingly
void __fastcall TForm3::calendarChange(TObject *Sender)
{
	pureDate = calendar->Date;
	dateChosen = StrToDate(pureDate).FormatString(L"yyyy-mm-dd");
}
Example #30
0
int Persona::calcularEdad(String fecha)
{
        int f=StrToDate(fecha);
        int fa=Date().CurrentDate();
        return (fa-f)/365.25;
}