轉檔發生錯誤!! |
尚未結案
|
bigcome2004
一般會員 發表:28 回覆:19 積分:9 註冊:2004-02-17 發送簡訊給我 |
小弟想將資料加入資料表中,但在執行後卻出現錯誤說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 發送簡訊給我 |
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] ''', '<> ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================ > |
bigcome2004
一般會員 發表:28 回覆:19 積分:9 註冊:2004-02-17 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
bigcome2004
一般會員 發表:28 回覆:19 積分:9 註冊:2004-02-17 發送簡訊給我 |
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
|
bigcome2004
一般會員 發表:28 回覆:19 積分:9 註冊:2004-02-17 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 看了一下您的程式碼﹐發現問題是出在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 發送簡訊給我 |
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 發送簡訊給我 |
您好﹗ 在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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |