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.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
void CZakazView::OnButton19() //to the factory2
{
//m_PATH_TO_APPLICATION
strConnection =m_PATH_TO_APPLICATION;
strConnection +=_T("\\FactoryKS");
if(this->FillInTheFactory2(strConnection))
{
AfxMessageBox(_T("Отправка данных успешно завершена."),MB_OK, 0 );
}
}
BOOL CZakazView::FillInTheFactory2(CString path_to_DB)
{
BOOL fInsertERROR=FALSE;
BOOL fHasOneAtleast=FALSE;
CList<CString,CString&> m_selectedRowsList;
CString query,S_BUF;
LONG NUMBER_ROW;
long L_BUF,Num_p;
double D_BUF;
COUNT_COLUMNS=(SHORT)m_datagrid1.GetColumns().GetCount();
CSelBookmarks selectedBMK=m_datagrid1.GetSelBookmarks();
LONG ALL_ITEMS=selectedBMK.GetCount();
if(ALL_ITEMS<= 0 ){
AfxMessageBox(_T("Ни одного заказа не выбрано!"),MB_OK|MB_ICONSTOP, 0 );
return FALSE;
}
CString Alias=_T("OfficeManager_To_Factory");
if(!DeleteFiles(path_to_DB))
{
AfxMessageBox(_T("Не могу произвести отправку данных. Невозможно удалить старые файлы."),MB_OK|MB_ICONSTOP, 0 );
return FALSE;
}
hDBIDb m_hDb;
DBIQryLang lang=qrylangSQL;
DBIResult m_DBIRESULT;
if(DBIERR_NONE==DbiInit(NULL))
{
CString m_PATH=CString(_T("PATH:"))+path_to_DB;
m_DBIRESULT=DbiAddAlias(NULL, Alias.GetBuffer( 100 ), NULL,m_PATH.GetBuffer( 200 ), true);
if(DBIERR_NONE==m_DBIRESULT || DBIERR_NAMENOTUNIQUE==m_DBIRESULT)
{
m_DBIRESULT=DbiOpenDatabase ( // Open a database
Alias.GetBuffer( 100 ), // Database' alias
NULL, // Database type (NULL: Universal)
dbiREADWRITE, // Open type
dbiOPENEXCL, // Share type
NULL, // Password
0, // Number of optional Params
NULL, // Optional Field Descriptors
NULL, // Optional Params
&m_hDb // Returnd database handle
);
}
CString query;
if(DBIERR_NONE==m_DBIRESULT)
if(DBIERR_NONE==m_DBIRESULT)
{
query=_T("CREATE TABLE \"Zakaz.db\"(");
query+=_T("Num_Z INTEGER,");
query+=_T("Name CHAR(15),");
query+=_T("Cust CHAR(48),");
query+=_T("Date_shipment DATE,");
query+=_T("Prim CHAR(64),");
query+=_T("Hands SMALLINT,");
query+=_T("CONSTRAINT nz PRIMARY KEY (Num_Z))");
m_DBIRESULT=DbiQExecDirect (m_hDb, lang, query.GetBuffer(1000), NULL);
}
if(DBIERR_NONE==m_DBIRESULT)
{
query=_T("CREATE TABLE \"Zakaz_pozition.db\"(");
query+=_T("Num_P INTEGER,");
query+=_T("Num_Z INTEGER,");
query+=_T("Height INTEGER,");
query+=_T("Width INTEGER,");
query+=_T("Num_Art_Type INTEGER,");
query+=_T("Num_Art INTEGER,");
query+=_T("Kol_vo NUMERIC,");
query+=_T("CONSTRAINT npzp PRIMARY KEY (Num_P))");
m_DBIRESULT=DbiQExecDirect (m_hDb, lang, query.GetBuffer(1000), NULL);
}
//fill in the zakaz,zakaz_pozition and other
if(DBIERR_NONE==m_DBIRESULT)
{
COfficeManagerApp* pOMA=dynamic_cast<COfficeManagerApp*>(AfxGetApp());
ASSERT_VALID(pOMA);
TCHAR tmp1[1000];
int count_zakaz_to_report=0;
if(pOMA->m_DatabaseConnected)
{
CADODatabase* pAdoDb=pOMA->pAdoDb;
CADORecordset* pRs_tmp_1 = new CADORecordset(pAdoDb);
CString query;
if(pAdoDb->BeginTransaction())
{
for(int i=0;i<ALL_ITEMS;i++)
{
NUMBER_ROW=i;
VARIANT bMrk=selectedBMK.GetItem(_variant_t(NUMBER_ROW));
for(int j=0;j<COUNT_COLUMNS;j++)
{
NUMBER_COLUMNS[j]=j;
DATAGRID_DATA[j]=m_datagrid1.GetColumns().GetItem(_variant_t(NUMBER_COLUMNS[j])).CellText(bMrk);
}
//zakaz,zakaz_pozition
if(DATAGRID_DATA[6].GetLength()>0)//Расчитан
{
fHasOneAtleast=TRUE;
//zakaz
query=_T("INSERT INTO Zakaz(Num_Z,Name,Cust,Date_shipment,Prim,Hands)");
query+=_T("VALUES(");
query+=DATAGRID_DATA[0];//Num_Z
query+=_T(",'");
query+=DATAGRID_DATA[1];//Name_Z
query+=_T("','");
query+=DATAGRID_DATA[3];//Cust
query+=_T("','");
query+=DATAGRID_DATA[5];//Date_shipment
query+=_T("','");
query+=DATAGRID_DATA[7];//Prim
query+=_T("',");
if(DATAGRID_DATA[7].GetLength()>0)query+=_T("1");//hands
else query+=_T("0");
query+=_T(")");
m_DBIRESULT=DbiQExecDirect (m_hDb, lang, query.GetBuffer(1000), NULL);
if(DBIERR_NONE!=m_DBIRESULT)
{
delete pRs_tmp_1;
pAdoDb->RollbackTransaction();
AfxMessageBox(_T("Не могу произвести вставку заказов в отправляемую базу данных!"),MB_OK|MB_ICONSTOP,0);
}
else{
//zakaz_pozition
query=_T("SELECT Num_zp as Num_p,Height,Width,Num_Art_Type,Num_art,Kol_vo");
query+=_T(" FROM Zakaz_pozition WHERE Num_Z=");
query+=DATAGRID_DATA[0];//Num_Z
if(!pRs_tmp_1->Open(query,CADORecordset::openQuery))
{
delete pRs_tmp_1;
pAdoDb->RollbackTransaction();
AfxMessageBox(_T("Не могу произвести вставку заказов в отправляемую базу данных!"),MB_OK|MB_ICONSTOP,0);
}
while(!pRs_tmp_1->IsEOF() && !fInsertERROR)
{
query=_T("INSERT INTO Zakaz_pozition(Num_P,Num_Z,Height,Width,Num_Art_Type,Num_Art,Kol_vo)");
query+=_T("VALUES(");
pRs_tmp_1->GetFieldValue(_T("Num_p"),Num_p);
_ltot(Num_p,tmp1,10);
query+=CString(tmp1);//Num_p
query+=_T(",");
query+=DATAGRID_DATA[0];//Num_Z
query+=_T(",");
pRs_tmp_1->GetFieldValue(_T("Height"),L_BUF);
_ltot(L_BUF,tmp1,10);
query+=CString(tmp1);//Height
query+=_T(",");
pRs_tmp_1->GetFieldValue(_T("Width"),L_BUF);
_ltot(L_BUF,tmp1,10);
query+=CString(tmp1);//Width
query+=_T(",");
pRs_tmp_1->GetFieldValue(_T("Num_Art_Type"),L_BUF);
_ltot(L_BUF,tmp1,10);
query+=CString(tmp1);//Num_Art_Type
query+=_T(",");
pRs_tmp_1->GetFieldValue(_T("Num_Art"),L_BUF);
_ltot(L_BUF,tmp1,10);
query+=CString(tmp1);//Num_Art
query+=_T(",");
pRs_tmp_1->GetFieldValue(_T("Kol_vo"),L_BUF);
_ltot(L_BUF,tmp1,10);
query+=CString(tmp1);//Kol_vo
query+=_T(")");
m_DBIRESULT=DbiQExecDirect (m_hDb, lang, query.GetBuffer(1000), NULL);
if(DBIERR_NONE!=m_DBIRESULT)
{
pRs_tmp_1->Close();
delete pRs_tmp_1;
pAdoDb->RollbackTransaction();
AfxMessageBox(_T("Не могу произвести вставку заказов в отправляемую базу данных!"),MB_OK|MB_ICONSTOP,0);
fInsertERROR=TRUE;
}
pRs_tmp_1->MoveNext();
}
pRs_tmp_1->Close();
}
}//if(DATAGRID_DATA[6].GetLength()>0)//Расчитан
query=_T("UPDATE Zakaz SET SentToFactory=1");
query+=_T(" WHERE Num_Z=");
query+=DATAGRID_DATA[0];//Num_Z
if(!pAdoDb->Execute(query))
{
delete pRs_tmp_1;
pAdoDb->RollbackTransaction();
AfxMessageBox(_T("Не могу обновить заказы! Операция не произведена."),MB_OK|MB_ICONSTOP,0);
fInsertERROR=TRUE;
}
}//for(int i=0;i<ALL_ITEMS;i++)
if(!fInsertERROR) pAdoDb->CommitTransaction();
}//if(pAdoDb->BeginTransaction())
else AfxMessageBox(_T("Не могу получить доступ к базе данных!\n Произведите подключение."),MB_OK|MB_ICONSTOP,0);
delete pRs_tmp_1;
}//if(pOMA->m_DatabaseConnected)
else AfxMessageBox(_T("Не могу получить доступ к базе данных!\n Произведите подключение."),MB_OK|MB_ICONSTOP,0);
}//if(DBIERR_NONE==m_DBIRESULT) end of filling in
DbiCloseDatabase(&m_hDb);
DbiDeleteAlias (NULL, Alias.GetBuffer(100));
if(DBIERR_NONE!=m_DBIRESULT) AfxMessageBox(_T("Не могу произвести отправку данных. Попробуйте закрыть все приложения."),MB_OK|MB_ICONSTOP,0);
}//if(DBIERR_NONE==m_DBIRESULT)
else{
fInsertERROR=TRUE;
AfxMessageBox(_T("Не могу произвести отправку данных. Попробуйте закрыть все приложения."),MB_OK|MB_ICONSTOP,0);
}
DbiExit();
if(DBIERR_NONE==DbiInit(NULL));
}