想把資料庫的資料轉出成txt文字檔之程式碼疑問 |
缺席
|
gimigo917
一般會員 發表:3 回覆:3 積分:1 註冊:2007-11-28 發送簡訊給我 |
我要寫一支能把資料庫裡的資料轉出成.txt文字檔的程式,
但程式執行到某個地方就會跳出警告視窗 "Access violation at address 32665A50 in module 'CC3260MT.DLL'. Read of address F8A27DD4" 請求好心人告訴我究竟程式哪裡寫錯了...感激不盡!! 以下為程式碼: String t_card_no,t_crew_no,t_crew_name,t_register_address,t_contact_address; FILE *fptr1; int iFileHandle; String text_outfile = outfile_name->Text; t_crew_no = ""; t_crew_name = ""; t_card_no = ""; t_register_address = ""; t_contact_address = ""; SYSMODULE->ADO_QRY_1->Close(); SYSMODULE->ADO_QRY_1->SQL->Clear(); // #TEMP_T10B_303 SYSMODULE->ADO_QRY_1->SQL->Add("Select crew_no,crew_name,card_no,register_address,contact_address"); SYSMODULE->ADO_QRY_1->SQL->Add("From #TEMP_T10B_303 "); SYSMODULE->ADO_QRY_1->SQL->Add("Order By crew_no"); SYSMODULE->ADO_QRY_1->Open(); if(!SYSMODULE->ADO_QRY_1->Eof) { if(!FileExists(text_outfile)) { iFileHandle = FileCreate(text_outfile); FileClose(iFileHandle); } fptr1 = fopen(text_outfile.c_str(), "w"); SYSMODULE->ADO_QRY_1->First(); do { t_crew_no = SYSMODULE->ADO_QRY_1->FieldByName("crew_no")->AsString; t_crew_name = SYSMODULE->ADO_QRY_1->FieldByName("crew_name")->AsString; t_card_no = SYSMODULE->ADO_QRY_1->FieldByName("card_no")->AsString; t_register_address = SYSMODULE->ADO_QRY_1->FieldByName("register_address")->AsString; t_contact_address = SYSMODULE->ADO_QRY_1->FieldByName("contact_address")->AsString; fprintf(fptr1,"%dsss%-6d%-60s%-60s%-60s%d%c\n",' ', "1",t_card_no.c_str(),t_crew_no.c_str(),t_crew_name.c_str(),t_register_address.c_str(),t_contact_address.c_str()); //程式執行到這裡出錯 SYSMODULE->ADO_QRY_1->Next(); }while(!SYSMODULE->ADO_QRY_1->Eof); YL4000F->StatusBar1->Panels->Items[0]->Text = "下傳檔案成功"; fclose(fptr1); } else YL4000F->StatusBar1->Panels->Items[0]->Text = "無下傳檔案"; |
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
把 do .... while()
改成 while() ... do ===================引 用 gimigo917 文 章=================== 我要寫一支能把資料庫裡的資料轉出成.txt文字檔的程式, 但程式執行到某個地方就會跳出警告視窗 "Access violation at address 32665A50 in module 'CC3260MT.DLL'. Read of address F8A27DD4" 請求好心人告訴我究竟程式哪裡寫錯了...感激不盡!! 以下為程式碼: String t_card_no,t_crew_no,t_crew_name,t_register_address,t_contact_address; FILE *fptr1; int iFileHandle; String text_outfile = outfile_name->Text; t_crew_no = ""; t_crew_name = ""; t_card_no = ""; t_register_address = ""; t_contact_address = ""; SYSMODULE->ADO_QRY_1->Close(); SYSMODULE->ADO_QRY_1->SQL->Clear(); // #TEMP_T10B_303 SYSMODULE->ADO_QRY_1->SQL->Add("Select crew_no,crew_name,card_no,register_address,contact_address"); SYSMODULE->ADO_QRY_1->SQL->Add("From #TEMP_T10B_303 "); SYSMODULE->ADO_QRY_1->SQL->Add("Order By crew_no"); SYSMODULE->ADO_QRY_1->Open(); if(!SYSMODULE->ADO_QRY_1->Eof) { if(!FileExists(text_outfile)) { iFileHandle = FileCreate(text_outfile); FileClose(iFileHandle); } fptr1 = fopen(text_outfile.c_str(), "w"); SYSMODULE->ADO_QRY_1->First(); do { t_crew_no = SYSMODULE->ADO_QRY_1->FieldByName("crew_no")->AsString; t_crew_name = SYSMODULE->ADO_QRY_1->FieldByName("crew_name")->AsString; t_card_no = SYSMODULE->ADO_QRY_1->FieldByName("card_no")->AsString; t_register_address = SYSMODULE->ADO_QRY_1->FieldByName("register_address")->AsString; t_contact_address = SYSMODULE->ADO_QRY_1->FieldByName("contact_address")->AsString; fprintf(fptr1,"%dsss%-6d%-60s%-60s%-60s%d%c\n",' ', "1",t_card_no.c_str(),t_crew_no.c_str(),t_crew_name.c_str(),t_register_address.c_str(),t_contact_address.c_str()); //程式執行到這裡出錯 SYSMODULE->ADO_QRY_1->Next(); }while(!SYSMODULE->ADO_QRY_1->Eof); YL4000F->StatusBar1->Panels->Items[0]->Text = "下傳檔案成功"; fclose(fptr1); } else YL4000F->StatusBar1->Panels->Items[0]->Text = "無下傳檔案"; |
gimigo917
一般會員 發表:3 回覆:3 積分:1 註冊:2007-11-28 發送簡訊給我 |
|
gimigo917
一般會員 發表:3 回覆:3 積分:1 註冊:2007-11-28 發送簡訊給我 |
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |