SQL指令 |
尚未結案
|
nachi
初階會員 發表:40 回覆:116 積分:31 註冊:2003-02-26 發送簡訊給我 |
我依書上的例子,做了一個相仿的專案,用query寫了新增、修改、移除,但執行該功能鍵後會出現error,而且執行完後整個delphi就當了,要關閉再能再開啟,不知原因為何? 附上檔案,請大大指導我一下,謝謝......^^
附加檔案:26555_Projects.exe
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
1.新增按鈕下的 SQL 語法有誤, 改為:
begin query1.sql.Clear; query1.sql.add('insert into customer.db'); query1.sql.add('( CustomNO ,'); query1.sql.add(' SCustomer ,'); query1.sql.add(' Customer ,'); query1.sql.add(' Number ,'); query1.sql.add(' CPhone ,'); query1.sql.add(' TPhone ,'); query1.sql.add(' TFax ,'); query1.sql.add(' TAddress'); // 這行的逗點拿掉 query1.sql.add(') VALUES ('); // 這行的逗點拿掉 query1.sql.add(' ''' edit1.Text ''' ,'); query1.sql.add(' ''' edit2.Text ''' ,'); query1.sql.add(' ''' edit3.Text ''' ,'); query1.sql.add(' ''' edit4.Text ''' ,'); query1.sql.add(' ''' edit5.Text ''' ,'); query1.sql.add(' ''' edit6.Text ''' ,'); query1.sql.add(' ''' edit7.Text ''' ,'); query1.sql.add(' ''' edit8.Text ''' ,'); query1.sql.add(' ''' edit9.Text ''' )'); query1.ExecSQL end;2.修改按鈕下的 SQL 語法訂正如下: begin query1.SQL.Clear; query1.sql.Add('update customer.db'); query1.SQL.add('set'); query1.SQL.add('CustomerNO = ''' edit1.Text ''' ,'); // . 改成逗點 query1.SQL.add('SCustomer = ''' edit2.Text ''' ,'); // . 改成逗點 query1.SQL.add('Customer = ''' edit3.Text ''' ,'); // . 改成逗點 query1.SQL.add('Boss = ''' edit4.Text ''' ,'); // . 改成逗點 query1.SQL.add('Number = ''' edit5.Text ''' ,'); // . 改成逗點 query1.SQL.add('CPhone = ''' edit6.Text ''' ,'); // . 改成逗點 query1.SQL.add('TPhone = ''' edit7.Text ''' ,'); // . 改成逗點 query1.SQL.add('TFax = ''' edit8.Text ''' ,'); // . 改成逗點 query1.SQL.add('TAddress = ''' edit9.Text ''' '); end; |
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
nachi
初階會員 發表:40 回覆:116 積分:31 註冊:2003-02-26 發送簡訊給我 |
HAGAR大大:我依你的指導做了修正,結果執行後出現了另一個錯誤,指在新增資料的QUERY1.CLOSE,訊息為PARAMETER INVALID,然後整個DELPHI又當了,這是因為我電腦不穩定,還是程式的關係啊? CHIH大大:你的建議我已記下來了,因為我只是一個初學者,你說的東西書上只有介紹UpdateSQL原件,我目前連SQL語法都還不熟(目差只會依書上的例子做修改就像此程式中的新增、修改),最大的問題點也是出在SQL語法,待我將SQL語法弄熟後,我會試著用你的建議^^
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
我看你原來新增應該是要改成叫做存檔喔...新增的時候應該是這樣
procedure TForm1.Button5Click(Sender: TObject); begin//新增資料 query1.Close; edit1.Text:=''; edit2.Text:=''; edit3.Text:=''; edit4.Text:=''; edit5.Text:=''; edit6.Text:=''; edit7.Text:=''; edit8.Text:=''; edit9.Text:=''; end; procedure TForm1.Button5Click(Sender: TObject); begin//新增資料改成叫做存檔 query1.sql.Clear; query1.sql.add('insert into customer.db'); query1.sql.add('( CustomerNO ,'); query1.sql.add(' SCustomer ,'); query1.sql.add(' Customer ,'); query1.sql.add(' BOSS ,');//你少加這一各參數 query1.sql.add(' Number ,'); query1.sql.add(' CPhone ,'); query1.sql.add(' TPhone ,'); query1.sql.add(' TFax ,'); query1.sql.add(' TAddress '); query1.sql.add(') VALUES ('); query1.sql.add(' ''' edit1.Text ''' ,'); query1.sql.add(' ''' edit2.Text ''' ,'); query1.sql.add(' ''' edit3.Text ''' ,'); query1.sql.add(' ''' edit4.Text ''' ,'); query1.sql.add(' ''' edit5.Text ''' ,'); query1.sql.add(' ''' edit6.Text ''' ,'); query1.sql.add(' ''' edit7.Text ''' ,'); query1.sql.add(' ''' edit8.Text ''' ,'); query1.sql.add(' ''' edit9.Text ''' )'); query1.ExecSQL; query1.Close; query1.Open; end;我試過這樣沒問題了 TRY TRY SEE..^^ 發表人 - chih 於 2003/02/28 22:28:20 |
nachi
初階會員 發表:40 回覆:116 積分:31 註冊:2003-02-26 發送簡訊給我 |
喔,原來如此~雖然我看得懂error訊息,卻不知道從何debug...=.=" 我又試了在mainmenu呼叫form1,我是這樣寫的 ExecuteForm(form1);結果也出現了error,(此時存檔的檔名是customer01)
[Error] MAIN.PAS(101): Undeclared identifier: 'ExecuteForm'
[Fatal Error] MDIAPP.dpr(9): Could not compile used unit 'MAIN.PAS'
可是我回去看範例原始檔並沒有看到executeform的宣告,不知是那裡出了問題@@ 關於updateSQL,我近期會找時間試試^^.....y 謝謝大大們的指導...
|
nachi
初階會員 發表:40 回覆:116 積分:31 註冊:2003-02-26 發送簡訊給我 |
CHIH大大:我依你的指正做了修正,資料也可以新增了,但新增完後就當機了@@
,不知是不是我系統的問題@@
Project mdiiapp.exe raised exception class EDBEnginError with message 'Key Violation'
(這是指我資料型態錯誤嗎?我資料庫所有型態都設成字串,可是你又沒這個問題@@) 然後mdiapp.exe就會卡住,點它它說,mdiapp程式已停止回應,按右鍵關閉,它又說無法關閉,如果在偵錯狀態,請復原或關閉除錯程式!
再來按delphi,用右鍵-關閉,現在每run一次就要開一次@@ 最近發現另一個問題,以此專案為例,若我在此專案新增了兩個表單,當我要run時,我必須把此兩個表單也開啟(就是code的頁籤必須看得到),要是沒開,或是只開一個,一run就當,不然就是run,然後關閉就當了,當機情形和新增資料情形相同,你們在run時也須如此嗎?要是專案有數十個表單的話那不就掛了,我想應該不用如此大費周章才對,是不是只有我才這樣,你會嗎?
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
nachi
初階會員 發表:40 回覆:116 積分:31 註冊:2003-02-26 發送簡訊給我 |
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
nachi
初階會員 發表:40 回覆:116 積分:31 註冊:2003-02-26 發送簡訊給我 |
CHIH小小,我剛又重覆試了幾次,發現並不是每一次都會這樣,有時候只有開啟專案就能RUN了,但有一點很奇怪的就是,我一RUN後,不執行任何動作,就馬上STOP,一樣會死當,會不會是系統被我試到亂了啊@#@你能不能試一下你這樣做會不會死當,如果你不會的話,我就要重灌了...=.=" 我的主鍵值是客戶編號,我這次新增時有注意沒有重覆,也成功新增了資料,但一按新增就死當,資料還是會上去(後來用DATABASE DESKTOP看的),錯誤訊一樣是Project mdiiapp.exe raised exception class EDBEnginError with message 'Key Violation' 。 我剛拉updateSQL出來看了一下,你說把新增、移除、修改的sql寫在updateSQL,不是只是差在一個寫在updqteSQL,一個是直接寫在程式裡,寫的程式不是一樣多嗎?為何你說程式會短少呢?
還有就是一定要換DBEdit嗎?換了以後會增加那柴便利性嗎?就我目前所知,用Edit應該也能配合updateSQL,但我不知道換DBEdit會改善那些地方。 CHIH小小,你可不可以寫mainmenu呼叫form1的語法給我看啊,我用書上的語法行不通ㄟ 我知道DELPHI的字串左右要加 ' 符號,也是道在字串中要用兩個 ' 符號來當 ' ,你能不能幫我解釋一下''' edit1.Text ''',我看不懂這三對 ' 該如何解釋配對@@ 檔案我已經重新上傳過了,請你再下載一次。
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
|
nachi
初階會員 發表:40 回覆:116 積分:31 註冊:2003-02-26 發送簡訊給我 |
我知道在字串中['']=['] 我看你寫的意思,我說一下我的想法,是不是如下:
[''''] edit.text ['''']=>[''] edit.text ['']=>['] edit.text [']
如果是這樣子的話,那一開始就用[''] edit.text [''],也是會變
['] edit.text [']啊!?為何要用['''']! 我有用showmessage測試了,(edit.text是"我"字)
'''' edit.text '''' => '我'
''' edit.text ''' => ' edit.text '
結果用['''']的出來也不是一個[我]字,旁邊還多了['],如此經過SQL編譯後會變成單純一個[我]字嗎?
但我書上的例題原始碼都是用[''']寫的,存入資料庫後看到的就是單純的字串,像本例的話就是變成[我]。 有點糊塗了@@ 發表人 - nachi 於 2003/03/02 11:58:44
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
nachi
初階會員 發表:40 回覆:116 積分:31 註冊:2003-02-26 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |