線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1268
推到 Plurk!
推到 Facebook!

轉檔發生錯誤!!

尚未結案
bigcome2004
一般會員


發表:28
回覆:19
積分:9
註冊:2004-02-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-21 15:15:44 IP:59.120.xxx.xxx 未訂閱
小弟想將資料加入資料表中,但在執行後卻出現錯誤說INSERT INTO 陳述式的語法錯誤,因為頭腦不清楚.所以請各位大大幫我找出問!!感謝!! procedure TForm1.Button4Click(Sender: TObject); var j:integer; begin for j:=0 to memo1.lines.count do begin ADOQuery1.close; ADOQuery1.SQL.TEXT:= 'INSERT INTO big.big_test (Data,type,no) ' 'VALUES ( ' ' ''' TempStringGrid.cells[0,j] ''', ' ' ''' TempStringGrid.cells[1,j] ''', ' ' ''' TempStringGrid.cells[2,j] ''', ' ' )'; ADOQuery1.ExecSQL; end; end;
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-21 16:26:20 IP:218.15.xxx.xxx 未訂閱
bigcome2004您好:
 
procedure TForm1.Button4Click(Sender: TObject);
var 
  j:integer;
begin
  for j:=0 to memo1.lines.count do
    begin
      ADOQuery1.close;
      ADOQuery1.SQL.TEXT:= 'INSERT INTO big.big_test (Data,type,no) ' 
                           'VALUES ( ' 
                           ' ''' TempStringGrid.cells[0,j] ''', ' 
                           ' ''' TempStringGrid.cells[1,j] ''', ' 
                           ' ''' TempStringGrid.cells[2,j] ''', '  //这里多加了一个逗点
                           ' ''' TempStringGrid.cells[2,j] ''' '     
                           ' )';
      showmessage(ADOQuery1.SQL.Text); //加多一句看看SQL语句对错与否
      ADOQuery1.ExecSQL;
    end;
end;    试试看
<> ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================
bigcome2004
一般會員


發表:28
回覆:19
積分:9
註冊:2004-02-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-10-21 17:32:37 IP:59.120.xxx.xxx 未訂閱
謝謝deity :     我有把逗點去掉了,也加上去訊息視窗如下,   但當按下確認訊息視窗時就會出現錯誤如下
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-10-22 09:31:03 IP:202.62.xxx.xxx 未訂閱
您好﹗    檢查一下Data / type / no這三個欄位形態皆為字串嗎﹖ 照您的SQL敘述來看﹐需要這三個欄位都是字串形態﹐如果不是的話﹐就無法正确Insert了﹒    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
bigcome2004
一般會員


發表:28
回覆:19
積分:9
註冊:2004-02-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-10-24 10:42:11 IP:59.120.xxx.xxx 未訂閱
dear版主: 我的資料表都是文字屬性...但還是有錯...不知我可不可以幫程式寄給你幫我看一下...可以給我你的e-mailㄇ? 發表人 - bigcome2004 於 2005/10/24 10:53:34
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-10-24 11:17:21 IP:218.15.xxx.xxx 未訂閱
bigcome2004您好: 看看那点逗点是不是中文逗点,改为英文逗点。 另可以上传原码至站内会员求助区,使用可参考本站使用守则 试试看 <> ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================
bigcome2004
一般會員


發表:28
回覆:19
積分:9
註冊:2004-02-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-10-24 11:55:28 IP:59.120.xxx.xxx 未訂閱
我將程式放置求助區了...各位大大請幫忙解惑!!謝謝!!
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-10-24 14:17:10 IP:202.62.xxx.xxx 未訂閱
您好﹗    看了一下您的程式碼﹐發現問題是出在Database的本身﹐在Database中您使用了取名為no的欄位﹐因為no是Database的關鍵字﹐所以才會出現Insert Into語法錯誤的現象﹐解決的方法可將no欄位名字改為notemp﹐即可正常的Insert Into﹒    另外﹐在您的程式碼中﹐發現您在使用ADOConnection元件連接資料庫和在專案中調用Test.txt檔案時﹐皆是使用絕對的路徑方法﹐這樣的寫法在您目前的開發環境中是沒有問題﹐但是若在別的電腦上就不一定可行了﹐因為別的電腦中不一定有'E:\'﹐所以建議您將此兩項內容更改如下﹕ 一﹒ADOConnection的ConnectionString屬性值原來是﹕ Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\bigcome_test\big.mdb;Persist Security Info=False 將其改為﹕ Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\big.mdb;Persist Security Info=False 二﹒Button1的OnClick事件中原來是﹕
procedure TForm1.Button1Click(Sender: TObject);
begin
     Memo1.Lines.LoadFromFile('E:\bigcome_test\test.txt');
     Edit1.text:=inttostr(Memo1.lines.count)+'筆資料';
     TempStringGrid.RowCount:=Memo1.lines.count+1;
end;
將其改為﹕
procedure TForm1.Button1Click(Sender: TObject);
begin
     Memo1.Lines.LoadFromFile(ExtractFilePath(Application.ExeName)+'test.txt');
     Edit1.text:=inttostr(Memo1.lines.count)+'筆資料';
     TempStringGrid.RowCount:=Memo1.lines.count+1;
end;
這樣的話﹐在若何的環境之下﹐都可以正常的Run﹒ P.S﹕在修改完成之后﹐記得把ShowMessage(ADOQuery1.Text);這一句刪除﹐不然每筆資料的Insert Into都會触發一次ShowMessage﹒ ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
bigcome2004
一般會員


發表:28
回覆:19
積分:9
註冊:2004-02-17

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-10-24 15:10:30 IP:59.120.xxx.xxx 未訂閱
Dear cashxin2002版主: 感謝版主的指導!我的程式可以動了,也照你所建議的更改了,程式運作正常,我想請問一下,妳建議改ADOConnection的ConnectionString屬性值: Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\big.mdb;Persist Security Info=False; 在\big.mdb面的'.'的意思是程式會去電腦內自動搜尋所有的路徑去找到big.mdb這個資庫嗎? 還有Memo1.Lines.LoadFromFile(ExtractFilePath(Application.ExeName) 'test.txt');的ExtractFilePath(Application.ExeName)是什麼作用? 感謝版主不吝教導!!
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-10-24 15:46:38 IP:202.62.xxx.xxx 未訂閱
您好﹗    在ADOConnection的ConnectionString屬性值中的'.\'指的是專案執行檔所在目錄的相對路徑﹐因為您的Database也是在這個目錄中﹐所以就可以通過這個相對路徑﹐連接到Database﹒相同的原理﹐如果您的Database是在專案執行檔所在目錄中的Data子目錄﹐那這里就可以寫成﹕ Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\Data\big.mdb;Persist Security Info=False Memo1.Lines.LoadFromFile(ExtractFilePath(Application.ExeName)+'test.txt'); ExtractFilePath函數的作用是取得某個檔案所在的路徑 Application.ExeName指的是專案執行檔 ExtractFilePath(Application.ExeName)即是取得專案執行檔所在的路徑﹒ ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
bigcome2004
一般會員


發表:28
回覆:19
積分:9
註冊:2004-02-17

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-10-24 17:07:06 IP:59.120.xxx.xxx 未訂閱
Dear cashxin2002版主: 感謝你的指導...我已經了解了,真是非常感謝!! 我有另外的問題,我在另開文章來請教,謝謝!!
系統時間:2024-06-28 13:05:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!