powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / C++ вывод в бд и из нее в текст
3 сообщений из 3, страница 1 из 1
C++ вывод в бд и из нее в текст
    #32953484
Triel_Toria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Откуда:
Сообщений: 1 Вообщем проблема в следующем, кто знает помогите пожалуйста, буду очень признателен.
Программа написанная на С++ делает ввод информации из ячеек таблицы в формат бд *.db и *.px на каждую таблицу по 2 файла (Парадокс). Я могу просмотреть их через Bulder C++ SQL Explorer. А как сделать вывод информации из ячеек в обычный текстовый файл?
Предоставляю части кода отвечающие за вывод данной информации.
Код: plaintext
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));
}

Все это работает и производит вывод данных для базы данных.

P.S. или расскажите как сделать этот же вывод информации из ячеек в текстовый файл, вот моя цель.
Заранее благодарен!
...
Рейтинг: 0 / 0
C++ вывод в бд и из нее в текст
    #32953763
Triel_Toria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можете на основании этого рассказать как сделать так чтобы создался файл текстовый на основании данных из таблицы, как тут, но тут в бд.
Заранее благодарен.
...
Рейтинг: 0 / 0
C++ вывод в бд и из нее в текст
    #32956990
archez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не знаю, поможет ли, но вот один из вариантов вывода в файл "FName" содержимого "StrList". Закинуть данные в "StrList" думаю проблем нет.
Можно конечно использовать "StrList->SaveToFile", но тогда файл будет каждый раз переписываться заново.

bool WriteToLogFile(TStringList * StrList, String FName)
{
int i;
ofstream outfile(FName.c_str(), ios::app);
if(!outfile) return false;
for(i=0;i<StrList->Count;i++)
outfile<<StrList->Strings .c_str()<<endl;
return true;
}
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / C++ вывод в бд и из нее в текст
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]