Рассмотрим следующую задачу:
Программа по автоматизации складского учета, кондитерский цех "Загадка"
1)Необходимо рассчитать РАСХОДНУЮ ПО КАЛЬКУЛЯЦИОННОЙ КАРТОЧКЕ:
//***********************************************************************
//*** 1 ЭТАП ******* Выбираем записи из базы рецептов (MP_BREZ.DBF) *****
//****************** по номеру изделия, и помещаем во временную таблицу *
Table1->Active=false;
Table1->DatabaseName="C:\\SAAEF\\MATERIAL\\MAIN\\";
Table1->TableName="MP_BREZ.DBF";
Table1->Active=true;
//
Table6->DatabaseName="C:\\SAAEF\\MATERIAL\\TMP\\";
Table6->TableName="MP_BAZA_CALC_TMP.DBF";
Table6->Close();
Table6->Exclusive=true;
Table6->Open();
Table6->EmptyTable();
//Включить индикатор
int Rec=0;
ProgressBar1->Min = 0;
ProgressBar1->Max = Table1->RecordCount;
//*******************
Table1->First();
while (!Table1->Eof)
{
Table6->Insert(); //заполняем таблицу данными
if (Table1BL->Value==CSpinEdit4->Text)
{
Table6BL ->AsString = Table1BL ->AsString ;
Table6PB ->AsString = Table1PB ->AsString ;
Table6KOD_TOV ->AsString = Table1KOD_TOV ->AsString ;
Table6NAIM_TOV ->AsString = Table1NAIM_TOV ->AsString ;
Table6PP ->AsString = Table1PP ->AsString ;
Table6KOD_POST ->AsString = "1";
Table6NAIM_POST ->AsString = "Склад сырья";
if (ComboBox3->Text==1) //Если работает Бригада1
{
Table6KOD_POL ->AsString = "107";
Table6NAIM_POL ->AsString = "Бригада1";
}
if (ComboBox3->Text==2) //Если работает Бригада1
{
Table6KOD_POL ->AsString = "108";
Table6NAIM_POL ->AsString = "Бригада2";
}
Table6->Insert(); //Table6->Edit();
}
if (Table1BL->Value!=CSpinEdit4->Text)
{
Table6->Delete();
}
// Отобразить индикатор
ProgressBar1->Position = Rec;
Rec++;
Application->ProcessMessages();
Table1->Next(); //следующая запись
}
//****************************************************************
//*** 2 ЭТАП ******* Выбираем текущую цену на сырье из MP_KLAS.DBF
//****************************************************************
Table2->DatabaseName="C:\\SAAEF\\MATERIAL\\"+Edit8->Text;
Table2->TableName="m"+ComboBox4->Text+"_MP_KLAS.dbf";
Table2->Active=false; Table2->Close();
Table2->Active=true; Table2->Open();
//Ввести переменную sql1, содержащую текст SQL - запроса для таблицы оплат
AnsiString sql1;
Table6->First(); // Table1->TableName=ComboBox1->Text+"_MP_KLAS.dbf";
while (!Table6->Eof)
{
Table6PB ->AsString = Table1PB ->AsString ;
Table6KOD_TOV ->AsString = Table1KOD_TOV ->AsString ;
Table6NAIM_TOV ->AsString = Table1NAIM_TOV ->AsString ;
Table6PP ->AsString = Table1PP ->AsString ;
Table6KOD_POST ->AsString = "1";
Table6NAIM_POST ->AsString = "Склад сырья";
if (ComboBox3->Text==1) //Если работает Бригада1
{
Table6KOD_POL ->AsString = "107";
Table6NAIM_POL ->AsString = "Бригада1";
}
if (ComboBox3->Text==2) //Если работает Бригада1
{
Table6KOD_POL ->AsString = "108";
Table6NAIM_POL ->AsString = "Бригада2";
}
Table6->Insert(); //Table6->Edit();
}
if (Table1BL->Value!=CSpinEdit4->Text)
{
Table6->Delete();
}
// Отобразить индикатор
ProgressBar1->Position = Rec;
Rec++;
Application->ProcessMessages();
Table1->Next(); //следующая запись
}
//****************************************************************
//*** 2 ЭТАП ******* Выбираем текущую цену на сырье из MP_KLAS.DBF
//****************************************************************
Table2->DatabaseName="C:\\SAAEF\\MATERIAL\\"+Edit8->Text;
Table2->TableName="m"+ComboBox4->Text+"_MP_KLAS.dbf";
Table2->Active=false; Table2->Close();
Table2->Active=true; Table2->Open();
//Ввести переменную sql1, содержащую текст SQL - запроса для таблицы оплат
AnsiString sql1;
Table6->First(); // Table1->TableName=ComboBox1->Text+"_MP_KLAS.dbf";
while (!Table6->Eof)
{
Query2->Close();
Query2->DatabaseName="C:\\SAAEF\\MATERIAL\\"+Edit8->Text;
sql1="SELECT C_ZAK1 FROM m"+ ComboBox4->Text+"_MP_KLAS.DBF WHERE FLAG=1 AND KOD_TOV="+Table6KOD_TOV->AsString ;
Query2->SQL->Clear();
Query2->SQL->Add(sql1);
Query2->Open();
Table6->Edit();
Table6C_ZAK->AsFloat=Query2->FieldByName("C_ZAK1")->AsFloat; //Стоимость сырья, грн.
Table6->FieldByName("NOM_DOK")->AsString=Edit1->Text; //Номер документа
Table6->FieldByName("K_UPGROZ")->AsString=Edit2->Text; //Номер наряда
Table6->FieldByName("PRIZN")->AsString="21"; //Признак движения (21)
Table6->FieldByName("KURS")->AsString=MaskEdit1->Text ;
Table6->FieldByName("SROK")->AsString=DateToStr(DateTimePicker1->Date);
Table6->FieldByName("DAT_ZAP")->AsString=DateToStr(DateTimePicker2->Date);
//САМЫЙ ГЛАВНЫЙ РАСЧЕТ!!! ************************
Table6SUMZAK->AsFloat=Table6KOL_WSEGO->AsFloat*Table6C_ZAK->AsFloat*Table6KURS->AsFloat; //количество сырья * на цену сырья (грн.)
Table6K901->AsFloat=Table6KOL_WSEGO->AsFloat*Table6KURS->AsFloat; //количество сырья (всего) (кг)
//*************************************************
Table6->Post();
Table6->Next();
}
//****************************************************************
//* QUERY1 ****************************************************
Query1->Open();
Edit7->Text=Query1->FieldByName("count of BL")->AsString; //кол-во ингридиентов
Edit10->Text=Query1->FieldByName("sum of KOL_WSEGO")->AsString; // вес по рецепту (1-кг)
Edit9->Text=Query1->FieldByName("sum of SUMZAK")->AsString; // Себестоимость, грн
Query1->Close();
//* Вставляем одну строку (шапка) **********************************************
Table6->Insert();
Table6->FieldByName("NOM_DOK")->AsString=Edit1->Text; //Номер документа
Table6->FieldByName("K_UPGROZ")->AsString=Edit2->Text; //Номер наряда
Table6->FieldByName("PRIZN")->AsString="99"; //Признак ШАПКА
Table6->FieldByName("KOD_TOV")->AsString="99"; //Признак ШАПКА
Table6->FieldByName("NAIM_TOV")->AsString=Edit5->Text;
//Признак ШАПКА
Table6->FieldByName("NAIM_TOV")->AsString=Edit5->Text; //Признак ШАПКА
Table6->FieldByName("BL")->AsString=CSpinEdit4->Text; //Признак ШАПКА
Table6->FieldByName("K901")->AsString=MaskEdit1->Text; //Признак ШАПКА
Table6->FieldByName("TIME_ZAP")->AsString=Label13->Caption; //
Table6->Post();
Query2->DatabaseName="C:\\SAAEF\\MATERIAL\\"+Edit8->Text;
sql1="SELECT C_ZAK1 FROM m"+ ComboBox4->Text+"_MP_KLAS.DBF WHERE FLAG=1 AND KOD_TOV="+Table6KOD_TOV->AsString ;
Query2->SQL->Clear();
Query2->SQL->Add(sql1);
Query2->Open();
Table6->Edit();
Table6C_ZAK->AsFloat=Query2->FieldByName("C_ZAK1")->AsFloat; //Стоимость сырья, грн.
Table6->FieldByName("NOM_DOK")->AsString=Edit1->Text; //Номер документа
Table6->FieldByName("K_UPGROZ")->AsString=Edit2->Text; //Номер наряда
Table6->FieldByName("PRIZN")->AsString="21"; //Признак движения (21)
Table6->FieldByName("KURS")->AsString=MaskEdit1->Text ;
Table6->FieldByName("SROK")->AsString=DateToStr(DateTimePicker1->Date);
Table6->FieldByName("DAT_ZAP")->AsString=DateToStr(DateTimePicker2->Date);
//САМЫЙ ГЛАВНЫЙ РАСЧЕТ!!! ************************
Table6SUMZAK->AsFloat=Table6KOL_WSEGO->AsFloat*Table6C_ZAK->AsFloat*Table6KURS->AsFloat; //количество сырья * на цену сырья (грн.)
Table6K901->AsFloat=Table6KOL_WSEGO->AsFloat*Table6KURS->AsFloat; //количество сырья (всего) (кг)
//*************************************************
Table6->Post();
Table6->Next();
}
//****************************************************************
//* QUERY1 ****************************************************
Query1->Open();
Edit7->Text=Query1->FieldByName("count of BL")->AsString; //кол-во ингридиентов
Edit10->Text=Query1->FieldByName("sum of KOL_WSEGO")->AsString; // вес по рецепту (1-кг)
Edit9->Text=Query1->FieldByName("sum of SUMZAK")->AsString; // Себестоимость, грн
Query1->Close();
//* Вставляем одну строку (шапка) **********************************************
Table6->Insert();
Table6->FieldByName("NOM_DOK")->AsString=Edit1->Text; //Номер документа
Table6->FieldByName("K_UPGROZ")->AsString=Edit2->Text; //Номер наряда
Table6->FieldByName("PRIZN")->AsString="99"; //Признак ШАПКА
Table6->FieldByName("KOD_TOV")->AsString="99"; //Признак ШАПКА
Table6->FieldByName("NAIM_TOV")->AsString=Edit5->Text;
//Признак ШАПКА
Table6->FieldByName("NAIM_TOV")->AsString=Edit5->Text; //Признак ШАПКА
Table6->FieldByName("BL")->AsString=CSpinEdit4->Text; //Признак ШАПКА
Table6->FieldByName("K901")->AsString=MaskEdit1->Text; //Признак ШАПКА
Table6->FieldByName("TIME_ZAP")->AsString=Label13->Caption; //
Table6->Post();
В этом расчете используются данные из таблицы:
2)При расчете необходимо учитывать, какой именно материал в данный момент будет использоваться в расход.
Для этого был введен флаг использования материала:
int npp=StrToInt(Edit2->Text) ;
if (Application->MessageBox("Сохранить изменения ?","Сохранение изменений", MB_YESNOCANCEL + MB_ICONQUESTION)!=IDYES)
{ Abort();
}
else
{
if (ComboBox1->Text==0)
{ Table1->Edit();
Table1FLAG->AsString="0";
IEdit->Text= Table1NAIM_TOV->AsString;
Table1->Post();
}
if (ComboBox1->Text==1)
{ Table1->First();
while (!Table1->Eof)
{ Table1->Edit();
if (Table1KOD_TOV->AsString==Edit3->Text && Table1K101->AsString==npp)
{
Table1FLAG->AsString="1";
Table1C_ZAK1->AsString=DOC_NUMBEREdit->Text;
}
if (Table1KOD_TOV->AsString==Edit3->Text && Table1K101->AsString!=npp)
{
Table1FLAG->AsString="0";
}
if (Table1KOD_TOV->AsString!=Edit3->Text && Table1K101->AsString==npp)
{
}
Table1->Post();
Table1->Next();
} //End While
// DBNavigator->BtnClick(nbRefresh);
}
}
3)Создание Рецептур:
Table3->Open(); Table4->Open(); Table2->Open();
Variant LoacteResults;
Edit6->Text="";
TLocateOptions SearchOptions;
LoacteResults=Table4->Locate("KOD",ComboBox2->Text,
SearchOptions<
LoacteResults=Table2->Locate("PB",ComboBox2->Text,
SearchOptions<
CSpinEdit4->Text=ComboBox2->Text;
Edit6->Text=Table4->FieldByName("naim")->AsString;
//******************************************************
if (ComboBox2->Text=="0") //ВСЕ ИЗДЕЛИЯ
{
CSpinEdit4->Text='0';
Table4->Active=false; Table2->Active=false;
Table4->Filtered=false; Table2->Filtered=false;
Table4->Open(); Table2->Open();
Edit6->Text="ВСЕ ИЗДЕЛИЯ";
CSpinEdit4->Enabled=false;
}
//******************************************************
if (ComboBox2->Text!="0") //ИЗДЕЛИЯ ПО ФИЛЬТРУ 100-900
{
Table4->Active=false; Table2->Active=false;
Table4->Filter="KOD='"+(ComboBox2->Text)+"'";
Table2->Filter="PB='"+(ComboBox2->Text)+"'";
Table4->Filtered=true; Table2->Filtered=true;
Table4->Open(); Table2->Open();
Edit6->Text=Table4->FieldByName("naim")->AsString;
CSpinEdit4->Enabled=true;
}
//******************************************************
}
if (Application->MessageBox("Вы действительно хотите создать новый рецепт?","Создание нового рецепта!",MB_YESNO) !=IDNO)
{
//**************************************************
Table2->Insert();
Table2->Edit();
Table2PB->AsString=ComboBox2->Text;
Table2BL->AsString=CSpinEdit4->Text;
Table2KOL_WSEGO->AsString=MaskEdit1->Text;
Table2C_OPTED->AsString=DOC_NUMBEREdit->Text;
Table2PP->AsString='0';
// ***********************
Table2SUMMA->AsFloat=(StrToFloat(DOC_NUMBEREdit->Text)*StrToFloat(MaskEdit1->Text));
Table2->Post();
//**************************************************
MaskEdit1->Text="00,000000";
DBNavigator1->BtnClick(nbLast);
}
else
{
Application->MessageBox("Внимание! Вы пытаетесь ввести ошибочные данные!","Ошибка!",MB_ICONSTOP);
}
4) После проведения всех расчетов, необходимо сформировать отчеты:
}
4) После проведения всех расчетов, необходимо сформировать отчеты:
СВОДНАЯ ПО НАРЯД-ЗАКАЗУ:
//**** 1/Этап *************************************************************
//**** Выбираем данные из MXX_MP_KLAS.dbf и помещаем в таблицу расчета ***
Table1->Active=false; Table1->Close();
Table1->DatabaseName="C:\\SAAEF\\MATERIAL\\"+Edit3->Text+"\\";
Table1->TableName="M"+ComboBox1->Text+"_MP_NRZK.DBF";
Table1->Active=false; Table1->Close();
Table1->Active=true; Table1->Open();
Table2->Active=false; Table2->Close();
Table2->DatabaseName="C:\\SAAEF\\MATERIAL\\"+Edit3->Text+"\\";
Table2->TableName="M"+ComboBox1->Text+"_MP_KLAS.DBF";
Table2->Active=false; Table2->Close();
Table2->Active=true; Table2->Open();
//Включить индикатор ***********************************************************
int Rec=0;
ProgressBar1->Min = 0;
ProgressBar1->Max = Table2->RecordCount;
Label1->Caption="1/3-й этап! Выбираем сырье!";
Label1->Visible=true;
//* Empty Table 2 *****************************************
Table3->Close();
Table3->Exclusive=true;
Table3->Open();
Table3->EmptyTable();
Table3->Close();
Table3->Exclusive=false;
Table3->Open();
Table2->First();
while (!Table2->Eof)
{
Table3->Insert();
Table3KOD_TOV ->AsString = Table2KOD_TOV ->AsString ;
Table3NAIM_TOV ->AsString = Table2NAIM_TOV ->AsString ;
Table3C_ZAK1 ->AsString = Table2C_ZAK1 ->AsString ; // Цена, грн.
Table3K901 ->AsString = Table2K901 ->AsString ; // Остаток на складе, кг
Table3FLAG ->AsString = Table2FLAG ->AsString ;
//** Удаляем все с флагом = 0 **************************************************
if (Table3->FieldByName("FLAG")->AsString=='0')
{
Table3->Delete();
}
else
{
}
//******************************************************************************
// Indicator
Sleep(20);
ProgressBar1->Position = Rec;
Rec++;
Application->ProcessMessages();
Table2->Next();
}
Label1->Caption="2/3-й этап! Выбираем кол-во использованного сырья из Н/З!";
Label1->Visible=true;
//******************************************************************************
AnsiString sql1;
Table3->First(); // C:\SAAEF\MATERIAL\tmp MP_BAZA_NRZK_REP.DBF
while (!Table3->Eof)
{
Query1->Close(); Query1->DatabaseName="C:\\SAAEF\\MATERIAL\\"+Edit3->Text;
sql1="SELECT SUM(KOL_WSEGO) FROM m"+ ComboBox1->Text+"_MP_NRZK.DBF WHERE KOD_TOV="+Table3KOD_TOV->AsString+" AND K_UPGROZ="+Edit2->Text ; ;
Query1->SQL->Clear();Query1->SQL->Add(sql1);
Query1->Open();
Table3->Edit();
Table3KOL_WSEGO->AsFloat=Query1->FieldByName("SUM OF KOL_WSEGO")->AsFloat; //Суммируем кол-во сырья всего из табл мХХ_MP_NRZK.DBF
Table3SUMMA->AsFloat =Table3C_ZAK1->AsFloat*Table3KOL_WSEGO->AsFloat; //Пермножаем цену сырья на кол-во сырья выданного по Н/З
Table3K_UPGROZ ->AsString = Edit2->Text ;
Table3->Post();
// Indicator
ProgressBar1->Position = Rec;
Rec++;
Application->ProcessMessages();
Table3->Next();
}
ProgressBar1->Min = 0;
ProgressBar1->Max = Table2->RecordCount; Label1->Visible=true;
//******************************************************************************
AnsiString sql1;
Table3->First(); // C:\SAAEF\MATERIAL\tmp MP_BAZA_NRZK_REP.DBF
while (!Table3->Eof)
{
Query1->Close(); Query1->DatabaseName="C:\\SAAEF\\MATERIAL\\"+Edit3->Text;
sql1="SELECT SUM(KOL_WSEGO) FROM m"+ ComboBox1->Text+"_MP_NRZK.DBF WHERE KOD_TOV="+Table3KOD_TOV->AsString+" AND K_UPGROZ="+Edit2->Text ; ;
Query1->SQL->Clear();Query1->SQL->Add(sql1);
Query1->Open();
Table3->Edit();
Table3KOL_WSEGO->AsFloat=Query1->FieldByName("SUM OF KOL_WSEGO")->AsFloat; //Суммируем кол-во сырья всего из табл мХХ_MP_NRZK.DBF
Table3SUMMA->AsFloat =Table3C_ZAK1->AsFloat*Table3KOL_WSEGO->AsFloat; //Пермножаем цену сырья на кол-во сырья выданного по Н/З
Table3K_UPGROZ ->AsString = Edit2->Text ;
Table3->Post();
// Indicator
ProgressBar1->Position = Rec;
Rec++;
Application->ProcessMessages();
Table3->Next();
}
ProgressBar1->Min = 0;
Label1->Caption="3/3-й этап! Удаляем нулевые значения!";
Label1->Visible=true;
//******************************************************************************
Table3->First();
while (!Table3->Eof)
{
n=n+1;
if (Table3->FieldByName("KOL_WSEGO")->AsString=='0')
{
Table3->Delete(); Button7->Click();
}
else
{
}
// Indicator
ProgressBar1->Position = Rec;
Rec++;
Application->ProcessMessages();
// Next Record
Label5->Caption=n;
Label5->Visible=true;
Sleep(1);
Table3->Next();
}
//* Подсчет кол-во записей ********************************
Table3->First();
//Упорядочиваем по наименованию сырья
Table3->IndexFieldNames="NAIM_TOV"; //Поле Наименовние товара (сортировка но наименованию товара)
while (!Table3->Eof)
{
Table3->Edit();
num=num+1;
Table3K101->AsString=num;
Table3->Next();
}
//* *****************************************************
Label5->Caption="100%";
ProgressBar1->Position = 100;
Label1->Visible=true;
//******************************************************************************
Table3->First();
while (!Table3->Eof)
{
n=n+1;
if (Table3->FieldByName("KOL_WSEGO")->AsString=='0')
{
Table3->Delete(); Button7->Click();
}
else
{
}
// Indicator
ProgressBar1->Position = Rec;
Rec++;
Application->ProcessMessages();
// Next Record
Label5->Caption=n;
Label5->Visible=true;
Sleep(1);
Table3->Next();
}
//* Подсчет кол-во записей ********************************
Table3->First();
//Упорядочиваем по наименованию сырья
Table3->IndexFieldNames="NAIM_TOV"; //Поле Наименовние товара (сортировка но наименованию товара)
while (!Table3->Eof)
{
Table3->Edit();
num=num+1;
Table3K101->AsString=num;
Table3->Next();
}
//* *****************************************************
Label5->Caption="100%";
ProgressBar1->Position = 100;
5)РАСЧЕТ 3% для работников компании:
//PR_Raschet_1_QR_3_Proc_PROD
Screen->Cursor=crHourGlass;
Application->CreateForm(__classid(TPR_Raschet_1_QR_3_Proc_PROD), &PR_Raschet_1_QR_3_Proc_PROD);
switch (ComboBox2->ItemIndex)
{ case 0 : PR_Raschet_1_QR_3_Proc_PROD->QRLabel12->Caption="Январь"; break;
* * *
case 11 : PR_Raschet_1_QR_3_Proc_PROD->QRLabel12->Caption="Декабрь"; break;
}
PR_Raschet_1_QR_3_Proc_PROD->QRLabel13->Caption=Edit2->Text;
Table1->Active=false;
Table1->DatabaseName="C:\\SAAEF\\PRODUCT\\"+Edit2->Text+"\\";
Table1->TableName="M"+ComboBox2->Text+"_MP_BAZA.DBF";
PR_Raschet_1_QR_3_Proc_PROD->Table1->DatabaseName="C:\\SAAEF\\PRODUCT\\TMP";
PR_Raschet_1_QR_3_Proc_PROD->Table1->TableName="MP_OSTATKI.DBF";
PR_Raschet_1_QR_3_Proc_PROD->Table1->Active=false;
if (Table1->Exists ) //mp_BAZA.dbf
{
AnsiString sql2;
ProgressBar1->Visible=true;
Label6->Caption="Подождите! Формируется отчет!";
Label6->Visible=true;
//Очистка временной таблицы
PR_Raschet_1_QR_3_Proc_PROD->Table1->Exclusive=true;
PR_Raschet_1_QR_3_Proc_PROD->Table1->Open();
PR_Raschet_1_QR_3_Proc_PROD->Table1->EmptyTable();
PR_Raschet_1_QR_3_Proc_PROD->Table1->Close();
PR_Raschet_1_QR_3_Proc_PROD->Table1->Exclusive=false;
PR_Raschet_1_QR_3_Proc_PROD->Table1->Open();
//Проверка количества дней в месяце
int find;
if (ComboBox2->Text=="02")
{
find=27;
}
else if (ComboBox2->Text=="01"||ComboBox2->Text=="03"||ComboBox2->Text=="05"||ComboBox2->Text=="07"||ComboBox2->Text=="08"||ComboBox2->Text=="10"||ComboBox2->Text=="12")
{
}
else if (ComboBox2->Text=="01"||ComboBox2->Text=="03"||ComboBox2->Text=="05"||ComboBox2->Text=="07"||ComboBox2->Text=="08"||ComboBox2->Text=="10"||ComboBox2->Text=="12")
{
find=30;
}
else
{
}
else
{
find=29;
}
AnsiString massive_day[31]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31};
int day;
int npp=0;
// int ost=0;
float ost=0;
//*** Заполняем таблицу выбранными данными **************************************************
PR_Raschet_1_QR_3_Proc_PROD->Table1->First();
for (day=0; day<=find; day++)
{
//** 41 вид Отгрузка Водителям ******************************************************************
Query1->Close();
Query1->DatabaseName="C:\\SAAEF\\PRODUCT\\"+Edit2->Text+"\\";
sql2="SELECT SUM(SUMZAK) FROM M"+ComboBox2->Text+"_MP_BAZA.DBF WHERE PRIZN=41 AND KOD_POL="+Edit6->Text+" AND SROK='"+massive_day[day]+"."+ComboBox2->Text+"."+Edit2->Text+"'";
Query1->SQL->Clear();
Query1->SQL->Add(sql2);
Query1->Open();
PR_Raschet_1_QR_3_Proc_PROD->Table1->Insert();
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("DATOPL")->AsString=massive_day[day]+"."+ComboBox2->Text+"."+Edit2->Text;
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("SUMZAK")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_41")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
npp=npp+1;
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("NPP")->AsString=npp;
//** 42 Вид Картошка ************************************************************************
Query1->Close();
Query1->DatabaseName="C:\\SAAEF\\PRODUCT\\"+Edit2->Text+"\\";
sql2="SELECT SUM(SUMZAK) FROM M"+ComboBox2->Text+"_MP_BAZA.DBF WHERE PRIZN=42 AND KOD_POST="+Edit6->Text+" AND SROK='"+massive_day[day]+"."+ComboBox2->Text+"."+Edit2->Text+"'";
Query1->SQL->Clear();
Query1->SQL->Add(sql2);
Query1->Open();
PR_Raschet_1_QR_3_Proc_PROD->Table1->Edit();
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_42")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
//** 44 KASSA ***********************************************************************
Query1->Close();
Query1->DatabaseName="C:\\SAAEF\\PRODUCT\\"+Edit2->Text+"\\";
sql2="SELECT SUM(SUMZAK) FROM M"+ComboBox2->Text+"_MP_BAZA.DBF WHERE PRIZN=44 AND KOD_POST="+Edit6->Text+" AND SROK='"+massive_day[day]+"."+ComboBox2->Text+"."+Edit2->Text+"'";
Query1->SQL->Clear();
Query1->SQL->Add(sql2);
Query1->Open();
PR_Raschet_1_QR_3_Proc_PROD->Table1->Edit();
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_44")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
//**************************************************************************************
* * *
//** 60 Списание ************************************************************************
Query1->Close();
Query1->DatabaseName="C:\\SAAEF\\PRODUCT\\"+Edit2->Text+"\\";
sql2="SELECT SUM(SUMZAK) FROM M"+ComboBox2->Text+"_MP_BAZA.DBF WHERE PRIZN=60 AND KOD_POST="+Edit6->Text+" AND SROK='"+massive_day[day]+"."+ComboBox2->Text+"."+Edit2->Text+"'";
Query1->SQL->Clear();
Query1->SQL->Add(sql2);
Query1->Open();
PR_Raschet_1_QR_3_Proc_PROD->Table1->Edit();
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_60")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
//***********************************************************************************************
//** 3 Остаток на начало дня (первый выбор)******************************************************
//** выбираем из остатка на начало месяца и вставляем в первую строку таблицы********************
Query1->Close();
Query1->DatabaseName="C:\\SAAEF\\PRODUCT\\"+Edit2->Text+"\\";
sql2="SELECT SUM(SUMZAK) FROM M"+ComboBox2->Text+"_MP_BAZA.DBF WHERE PRIZN=10 AND KOD_POL="+Edit6->Text;
Query1->SQL->Clear();
Query1->SQL->Add(sql2);
Query1->Open();
PR_Raschet_1_QR_3_Proc_PROD->Table1->Edit();
if (PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("NPP")->AsString=='1')
{
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_10")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("OST_NACH")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
}
else
{
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_10")->AsFloat=0;
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("OST_NACH")->AsFloat=0;
}
}
// 2 ЭТАП - РАСЧЕТ!!! **************************************************************************
PR_Raschet_1_QR_3_Proc_PROD->Table1->First();
while (!PR_Raschet_1_QR_3_Proc_PROD->Table1->Eof)
{
PR_Raschet_1_QR_3_Proc_PROD->Table1->Edit();
if (PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("NPP")->AsString=='1') //только для первой записи (на первое число)
{
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("OST_KONDAY")->AsFloat= PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("OST_NACH")->AsFloat+PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_41")->AsFloat-PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_42")->AsFloat-PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_43")->AsFloat-PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_44")->AsFloat-PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_32")->AsFloat-PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_60")->AsFloat-PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_30")->AsFloat;
ost= PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("OST_KONDAY")->AsFloat;
}
else
{
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("OST_NACH")->AsFloat= ost;
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("OST_KONDAY")->AsFloat= PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("OST_NACH")->AsFloat+PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_41")->AsFloat-PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_42")->AsFloat-PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_43")->AsFloat-PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_44")->AsFloat-PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_32")->AsFloat-PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_60")->AsFloat-PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_30")->AsFloat;
ost= PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("OST_KONDAY")->AsFloat;
}
if (PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_41")->AsString=='0')
{
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("OST_NACH")->AsFloat= 0;
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("OST_KONDAY")->AsFloat= 0;
}
else
{
// PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_NACH")->AsFloat=PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_NACH")->AsFloat ;
}
PR_Raschet_1_QR_3_Proc_PROD->Table1->Next();
} //end while
//Включить индикатор *****************************************************
int Rec=0;
ProgressBar1->Min = 0;
ProgressBar1->Max = Table2->RecordCount;
Table2->First();
while (!Table2->Eof)
{
Sleep(10);
ProgressBar1->Position = Rec;
Rec++;
Application->ProcessMessages();
Table2->Next();
} //End While
// * Вывод на экран готового отчета! *************************
Screen->Cursor=crDefault;
PR_Raschet_1_QR_3_Proc_PROD->QuickRep1->Preview();
PR_Raschet_1_QR_3_Proc_PROD->Table1->Active=true;
PR_Raschet_1_QR_3_Proc_PROD->Table1->Close();
//*************************************************************
}
else
{
}
AnsiString massive_day[31]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31};
int day;
int npp=0;
// int ost=0;
float ost=0;
//*** Заполняем таблицу выбранными данными **************************************************
PR_Raschet_1_QR_3_Proc_PROD->Table1->First();
for (day=0; day<=find; day++)
{
//** 41 вид Отгрузка Водителям ******************************************************************
Query1->Close();
Query1->DatabaseName="C:\\SAAEF\\PRODUCT\\"+Edit2->Text+"\\";
sql2="SELECT SUM(SUMZAK) FROM M"+ComboBox2->Text+"_MP_BAZA.DBF WHERE PRIZN=41 AND KOD_POL="+Edit6->Text+" AND SROK='"+massive_day[day]+"."+ComboBox2->Text+"."+Edit2->Text+"'";
Query1->SQL->Clear();
Query1->SQL->Add(sql2);
Query1->Open();
PR_Raschet_1_QR_3_Proc_PROD->Table1->Insert();
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("DATOPL")->AsString=massive_day[day]+"."+ComboBox2->Text+"."+Edit2->Text;
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("SUMZAK")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_41")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
npp=npp+1;
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("NPP")->AsString=npp;
//** 42 Вид Картошка ************************************************************************
Query1->Close();
Query1->DatabaseName="C:\\SAAEF\\PRODUCT\\"+Edit2->Text+"\\";
sql2="SELECT SUM(SUMZAK) FROM M"+ComboBox2->Text+"_MP_BAZA.DBF WHERE PRIZN=42 AND KOD_POST="+Edit6->Text+" AND SROK='"+massive_day[day]+"."+ComboBox2->Text+"."+Edit2->Text+"'";
Query1->SQL->Clear();
Query1->SQL->Add(sql2);
Query1->Open();
PR_Raschet_1_QR_3_Proc_PROD->Table1->Edit();
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_42")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
//** 44 KASSA ***********************************************************************
Query1->Close();
Query1->DatabaseName="C:\\SAAEF\\PRODUCT\\"+Edit2->Text+"\\";
sql2="SELECT SUM(SUMZAK) FROM M"+ComboBox2->Text+"_MP_BAZA.DBF WHERE PRIZN=44 AND KOD_POST="+Edit6->Text+" AND SROK='"+massive_day[day]+"."+ComboBox2->Text+"."+Edit2->Text+"'";
Query1->SQL->Clear();
Query1->SQL->Add(sql2);
Query1->Open();
PR_Raschet_1_QR_3_Proc_PROD->Table1->Edit();
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_44")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
//**************************************************************************************
* * *
//** 60 Списание ************************************************************************
Query1->Close();
Query1->DatabaseName="C:\\SAAEF\\PRODUCT\\"+Edit2->Text+"\\";
sql2="SELECT SUM(SUMZAK) FROM M"+ComboBox2->Text+"_MP_BAZA.DBF WHERE PRIZN=60 AND KOD_POST="+Edit6->Text+" AND SROK='"+massive_day[day]+"."+ComboBox2->Text+"."+Edit2->Text+"'";
Query1->SQL->Clear();
Query1->SQL->Add(sql2);
Query1->Open();
PR_Raschet_1_QR_3_Proc_PROD->Table1->Edit();
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_60")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
//***********************************************************************************************
//** 3 Остаток на начало дня (первый выбор)******************************************************
//** выбираем из остатка на начало месяца и вставляем в первую строку таблицы********************
Query1->Close();
Query1->DatabaseName="C:\\SAAEF\\PRODUCT\\"+Edit2->Text+"\\";
sql2="SELECT SUM(SUMZAK) FROM M"+ComboBox2->Text+"_MP_BAZA.DBF WHERE PRIZN=10 AND KOD_POL="+Edit6->Text;
Query1->SQL->Clear();
Query1->SQL->Add(sql2);
Query1->Open();
PR_Raschet_1_QR_3_Proc_PROD->Table1->Edit();
if (PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("NPP")->AsString=='1')
{
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_10")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("OST_NACH")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
}
else
{
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_10")->AsFloat=0;
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("OST_NACH")->AsFloat=0;
}
}
// 2 ЭТАП - РАСЧЕТ!!! **************************************************************************
PR_Raschet_1_QR_3_Proc_PROD->Table1->First();
while (!PR_Raschet_1_QR_3_Proc_PROD->Table1->Eof)
{
PR_Raschet_1_QR_3_Proc_PROD->Table1->Edit();
if (PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("NPP")->AsString=='1') //только для первой записи (на первое число)
{
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("OST_KONDAY")->AsFloat= PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("OST_NACH")->AsFloat+PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_41")->AsFloat-PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_42")->AsFloat-PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_43")->AsFloat-PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_44")->AsFloat-PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_32")->AsFloat-PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_60")->AsFloat-PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_30")->AsFloat;
ost= PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("OST_KONDAY")->AsFloat;
}
else
{
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("OST_NACH")->AsFloat= ost;
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("OST_KONDAY")->AsFloat= PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("OST_NACH")->AsFloat+PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_41")->AsFloat-PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_42")->AsFloat-PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_43")->AsFloat-PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_44")->AsFloat-PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_32")->AsFloat-PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_60")->AsFloat-PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_30")->AsFloat;
ost= PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("OST_KONDAY")->AsFloat;
}
if (PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("VID_41")->AsString=='0')
{
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("OST_NACH")->AsFloat= 0;
PR_Raschet_1_QR_3_Proc_PROD->Table1->FieldByName("OST_KONDAY")->AsFloat= 0;
}
else
{
// PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_NACH")->AsFloat=PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_NACH")->AsFloat ;
}
PR_Raschet_1_QR_3_Proc_PROD->Table1->Next();
} //end while
//Включить индикатор *****************************************************
int Rec=0;
ProgressBar1->Min = 0;
ProgressBar1->Max = Table2->RecordCount;
Table2->First();
while (!Table2->Eof)
{
Sleep(10);
ProgressBar1->Position = Rec;
Rec++;
Application->ProcessMessages();
Table2->Next();
} //End While
// * Вывод на экран готового отчета! *************************
Screen->Cursor=crDefault;
PR_Raschet_1_QR_3_Proc_PROD->QuickRep1->Preview();
PR_Raschet_1_QR_3_Proc_PROD->Table1->Active=true;
PR_Raschet_1_QR_3_Proc_PROD->Table1->Close();
//*************************************************************
}
else
{
Application->MessageBox("Таблица БД за указанный месяц отсутствует!","Ошибка!",MB_ICONSTOP);
}
6)РАСЧЕТ ОСТАТКОВ:
}
6)РАСЧЕТ ОСТАТКОВ:
/PR_Raschet_1_QR_Ostatkov_PROD->
Screen->Cursor=crHourGlass;
Application->CreateForm(__classid(TPR_Raschet_1_QR_Ostatkov_PROD), &PR_Raschet_1_QR_Ostatkov_PROD);
switch (ComboBox2->ItemIndex)
{
case 0 : PR_Raschet_1_QR_Ostatkov_PROD->QRLabel12->Caption="Январь"; break;
* * *
case 11 : PR_Raschet_1_QR_Ostatkov_PROD->QRLabel12->Caption="Декабрь"; break;
}
PR_Raschet_1_QR_Ostatkov_PROD->QRLabel13->Caption=Edit2->Text;
Table1->Active=false;
Table1->DatabaseName="C:\\SAAEF\\PRODUCT\\"+Edit2->Text+"\\";
Table1->TableName="M"+ComboBox2->Text+"_MP_BAZA.DBF";
PR_Raschet_1_QR_Ostatkov_PROD->Table1->DatabaseName="C:\\SAAEF\\PRODUCT\\TMP";
PR_Raschet_1_QR_Ostatkov_PROD->Table1->TableName="MP_OSTATKI.DBF";
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Active=false;
if (Table1->Exists ) //mp_BAZA.dbf
{
AnsiString sql2;
ProgressBar1->Visible=true;
Label6->Caption="Подождите! Формируется отчет!";
Label6->Visible=true;
//Очистка временной таблицы
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Exclusive=true;
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Open();
PR_Raschet_1_QR_Ostatkov_PROD->Table1->EmptyTable();
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Close();
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Exclusive=false;
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Open();
//Проверка количества дней в месяце
int find;
if (ComboBox2->Text=="02")
{
* * *
case 11 : PR_Raschet_1_QR_Ostatkov_PROD->QRLabel12->Caption="Декабрь"; break;
}
PR_Raschet_1_QR_Ostatkov_PROD->QRLabel13->Caption=Edit2->Text;
Table1->Active=false;
Table1->DatabaseName="C:\\SAAEF\\PRODUCT\\"+Edit2->Text+"\\";
Table1->TableName="M"+ComboBox2->Text+"_MP_BAZA.DBF";
PR_Raschet_1_QR_Ostatkov_PROD->Table1->DatabaseName="C:\\SAAEF\\PRODUCT\\TMP";
PR_Raschet_1_QR_Ostatkov_PROD->Table1->TableName="MP_OSTATKI.DBF";
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Active=false;
if (Table1->Exists ) //mp_BAZA.dbf
{
AnsiString sql2;
ProgressBar1->Visible=true;
Label6->Caption="Подождите! Формируется отчет!";
Label6->Visible=true;
//Очистка временной таблицы
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Exclusive=true;
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Open();
PR_Raschet_1_QR_Ostatkov_PROD->Table1->EmptyTable();
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Close();
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Exclusive=false;
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Open();
//Проверка количества дней в месяце
int find;
if (ComboBox2->Text=="02")
{
find=27;
}
else if (ComboBox2->Text=="01"||ComboBox2->Text=="03"||ComboBox2->Text=="05"||ComboBox2->Text=="07"||ComboBox2->Text=="08"||ComboBox2->Text=="10"||ComboBox2->Text=="12")
{
}
else if (ComboBox2->Text=="01"||ComboBox2->Text=="03"||ComboBox2->Text=="05"||ComboBox2->Text=="07"||ComboBox2->Text=="08"||ComboBox2->Text=="10"||ComboBox2->Text=="12")
{
find=30;
}
else
{
}
else
{
find=29;
}
AnsiString massive_day[31]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31};
int day;
int npp=0;
// int ost=0;
float ost=0;
//*** Заполняем таблицу выбранными данными **************************************************
PR_Raschet_1_QR_Ostatkov_PROD->Table1->First();
for (day=0; day<=find; day++)
{
//** 41 вид Отгрузка Водителям ******************************************************************
Query1->Close();
Query1->DatabaseName="C:\\SAAEF\\PRODUCT\\"+Edit2->Text+"\\";
sql2="SELECT SUM(SUMZAK) FROM M"+ComboBox2->Text+"_MP_BAZA.DBF WHERE PRIZN=41 AND KOD_POL="+Edit6->Text+" AND SROK='"+massive_day[day]+"."+ComboBox2->Text+"."+Edit2->Text+"'";
Query1->SQL->Clear();
Query1->SQL->Add(sql2);
Query1->Open();
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Insert();
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("DATOPL")->AsString=massive_day[day]+"."+ComboBox2->Text+"."+Edit2->Text;
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("SUMZAK")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_41")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
npp=npp+1;
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("NPP")->AsString=npp;
//** 42 Вид Картошка ************************************************************************
Query1->Close();
Query1->DatabaseName="C:\\SAAEF\\PRODUCT\\"+Edit2->Text+"\\";
sql2="SELECT SUM(SUMZAK) FROM M"+ComboBox2->Text+"_MP_BAZA.DBF WHERE PRIZN=42 AND KOD_POST="+Edit6->Text+" AND SROK='"+massive_day[day]+"."+ComboBox2->Text+"."+Edit2->Text+"'";
Query1->SQL->Clear();
Query1->SQL->Add(sql2);
Query1->Open();
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Edit();
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_42")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
//**************************************************************************************
* * *
//** 60 Списание ************************************************************************
Query1->Close();
Query1->DatabaseName="C:\\SAAEF\\PRODUCT\\"+Edit2->Text+"\\";
sql2="SELECT SUM(SUMZAK) FROM M"+ComboBox2->Text+"_MP_BAZA.DBF WHERE PRIZN=60 AND KOD_POST="+Edit6->Text+" AND SROK='"+massive_day[day]+"."+ComboBox2->Text+"."+Edit2->Text+"'";
Query1->SQL->Clear();
Query1->SQL->Add(sql2);
Query1->Open();
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Edit();
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_60")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
//***********************************************************************************************
//** 3 Остаток на начало дня (первый выбор)******************************************************
//** выбираем из остатка на начало месяца и вставляем в первую строку таблицы********************
Query1->Close();
Query1->DatabaseName="C:\\SAAEF\\PRODUCT\\"+Edit2->Text+"\\";
sql2="SELECT SUM(SUMZAK) FROM M"+ComboBox2->Text+"_MP_BAZA.DBF WHERE PRIZN=10 AND KOD_POL="+Edit6->Text;
Query1->SQL->Clear();
Query1->SQL->Add(sql2);
Query1->Open();
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Edit();
if (PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("NPP")->AsString=='1')
{
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_10")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_NACH")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
}
else
{
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_10")->AsFloat=0;
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_NACH")->AsFloat=0;
}
}
// 2 ЭТАП - РАСЧЕТ!!! **************************************************************************
PR_Raschet_1_QR_Ostatkov_PROD->Table1->First();
while (!PR_Raschet_1_QR_Ostatkov_PROD->Table1->Eof)
{
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Edit();
if (PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("NPP")->AsString=='1') //только для первой записи (на первое число)
{
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_KONDAY")->AsFloat= PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_NACH")->AsFloat+PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_41")->AsFloat-PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_42")->AsFloat-PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_43")->AsFloat-PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_44")->AsFloat-PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_32")->AsFloat-PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_60")->AsFloat-PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_30")->AsFloat;
ost= PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_KONDAY")->AsFloat;
}
else
{
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_NACH")->AsFloat= ost;
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_KONDAY")->AsFloat= PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_NACH")->AsFloat+PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_41")->AsFloat-PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_42")->AsFloat-PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_43")->AsFloat-PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_44")->AsFloat-PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_32")->AsFloat-PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_60")->AsFloat-PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_30")->AsFloat;
ost= PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_KONDAY")->AsFloat;
}
if (PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_41")->AsString=='0')
{
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_NACH")->AsFloat= 0;
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_KONDAY")->AsFloat= 0;
}
else
{
// PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_NACH")->AsFloat=PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_NACH")->AsFloat ;
}
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Next();
} //end while
//Включить индикатор *****************************************************
int Rec=0;
ProgressBar1->Min = 0;
ProgressBar1->Max = Table2->RecordCount;
Table2->First();
while (!Table2->Eof)
{
Sleep(10);
ProgressBar1->Position = Rec;
Rec++;
Application->ProcessMessages();
Table2->Next();
} //End While
// * Вывод на экран готового отчета! *************************
Screen->Cursor=crDefault;
PR_Raschet_1_QR_Ostatkov_PROD->QuickRep1->Preview();
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Active=true;
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Close();
//*************************************************************
}
else
{ Application->MessageBox("Таблица БД за указанный месяц отсутствует!","Ошибка!",MB_ICONSTOP);
}
}
}
AnsiString massive_day[31]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31};
int day;
int npp=0;
// int ost=0;
float ost=0;
//*** Заполняем таблицу выбранными данными **************************************************
PR_Raschet_1_QR_Ostatkov_PROD->Table1->First();
for (day=0; day<=find; day++)
{
//** 41 вид Отгрузка Водителям ******************************************************************
Query1->Close();
Query1->DatabaseName="C:\\SAAEF\\PRODUCT\\"+Edit2->Text+"\\";
sql2="SELECT SUM(SUMZAK) FROM M"+ComboBox2->Text+"_MP_BAZA.DBF WHERE PRIZN=41 AND KOD_POL="+Edit6->Text+" AND SROK='"+massive_day[day]+"."+ComboBox2->Text+"."+Edit2->Text+"'";
Query1->SQL->Clear();
Query1->SQL->Add(sql2);
Query1->Open();
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Insert();
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("DATOPL")->AsString=massive_day[day]+"."+ComboBox2->Text+"."+Edit2->Text;
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("SUMZAK")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_41")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
npp=npp+1;
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("NPP")->AsString=npp;
//** 42 Вид Картошка ************************************************************************
Query1->Close();
Query1->DatabaseName="C:\\SAAEF\\PRODUCT\\"+Edit2->Text+"\\";
sql2="SELECT SUM(SUMZAK) FROM M"+ComboBox2->Text+"_MP_BAZA.DBF WHERE PRIZN=42 AND KOD_POST="+Edit6->Text+" AND SROK='"+massive_day[day]+"."+ComboBox2->Text+"."+Edit2->Text+"'";
Query1->SQL->Clear();
Query1->SQL->Add(sql2);
Query1->Open();
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Edit();
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_42")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
//**************************************************************************************
* * *
//** 60 Списание ************************************************************************
Query1->Close();
Query1->DatabaseName="C:\\SAAEF\\PRODUCT\\"+Edit2->Text+"\\";
sql2="SELECT SUM(SUMZAK) FROM M"+ComboBox2->Text+"_MP_BAZA.DBF WHERE PRIZN=60 AND KOD_POST="+Edit6->Text+" AND SROK='"+massive_day[day]+"."+ComboBox2->Text+"."+Edit2->Text+"'";
Query1->SQL->Clear();
Query1->SQL->Add(sql2);
Query1->Open();
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Edit();
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_60")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
//***********************************************************************************************
//** 3 Остаток на начало дня (первый выбор)******************************************************
//** выбираем из остатка на начало месяца и вставляем в первую строку таблицы********************
Query1->Close();
Query1->DatabaseName="C:\\SAAEF\\PRODUCT\\"+Edit2->Text+"\\";
sql2="SELECT SUM(SUMZAK) FROM M"+ComboBox2->Text+"_MP_BAZA.DBF WHERE PRIZN=10 AND KOD_POL="+Edit6->Text;
Query1->SQL->Clear();
Query1->SQL->Add(sql2);
Query1->Open();
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Edit();
if (PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("NPP")->AsString=='1')
{
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_10")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_NACH")->AsFloat=Query1->FieldByName("SUM OF SUMZAK")->AsFloat;
}
else
{
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_10")->AsFloat=0;
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_NACH")->AsFloat=0;
}
}
// 2 ЭТАП - РАСЧЕТ!!! **************************************************************************
PR_Raschet_1_QR_Ostatkov_PROD->Table1->First();
while (!PR_Raschet_1_QR_Ostatkov_PROD->Table1->Eof)
{
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Edit();
if (PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("NPP")->AsString=='1') //только для первой записи (на первое число)
{
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_KONDAY")->AsFloat= PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_NACH")->AsFloat+PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_41")->AsFloat-PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_42")->AsFloat-PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_43")->AsFloat-PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_44")->AsFloat-PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_32")->AsFloat-PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_60")->AsFloat-PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_30")->AsFloat;
ost= PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_KONDAY")->AsFloat;
}
else
{
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_NACH")->AsFloat= ost;
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_KONDAY")->AsFloat= PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_NACH")->AsFloat+PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_41")->AsFloat-PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_42")->AsFloat-PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_43")->AsFloat-PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_44")->AsFloat-PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_32")->AsFloat-PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_60")->AsFloat-PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_30")->AsFloat;
ost= PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_KONDAY")->AsFloat;
}
if (PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("VID_41")->AsString=='0')
{
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_NACH")->AsFloat= 0;
PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_KONDAY")->AsFloat= 0;
}
else
{
// PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_NACH")->AsFloat=PR_Raschet_1_QR_Ostatkov_PROD->Table1->FieldByName("OST_NACH")->AsFloat ;
}
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Next();
} //end while
//Включить индикатор *****************************************************
int Rec=0;
ProgressBar1->Min = 0;
ProgressBar1->Max = Table2->RecordCount;
Table2->First();
while (!Table2->Eof)
{
Sleep(10);
ProgressBar1->Position = Rec;
Rec++;
Application->ProcessMessages();
Table2->Next();
} //End While
// * Вывод на экран готового отчета! *************************
Screen->Cursor=crDefault;
PR_Raschet_1_QR_Ostatkov_PROD->QuickRep1->Preview();
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Active=true;
PR_Raschet_1_QR_Ostatkov_PROD->Table1->Close();
//*************************************************************
}
else
{ Application->MessageBox("Таблица БД за указанный месяц отсутствует!","Ошибка!",MB_ICONSTOP);
}
}