全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1207
推到 Plurk!
推到 Facebook!

DATASET與SQL操作上的小問題

答題得分者是:StrongLemon
mine
中階會員


發表:28
回覆:129
積分:56
註冊:2004-03-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-03 17:08:59 IP:61.221.xxx.xxx 未訂閱
procedure TForm1.skbutton1Click(Sender: TObject);//import date write to database var temp:String; begin with DataSource1.DataSet do begin open;first; temp:=Trim(DataSource1.DataSet.Fields.Fields[12].DisplayName); end; With dm7.ADOQuer3 do begin Close;SQL.clear; SQL.ADD('delete from student ' 'where ps2 = ''' temp ''';' 'Select * from student'); open; end; ^^^^^^^如果用sql操作之後的寫入記錄動作完全無法進行?? With dm7.DataSource1.DataSet do begin//delete same serial of data open;first; while not Eof do begin if FieldByname('ps2').AsString=temp then delete; Next; end; end; ^^^^^^^^^^^^^^^為什麼操作DATASET後來輸入記錄沒有問題??用dataset操作跟sql操作是不是有該特別注意規避的地方呢?? with DataSource1.DataSet do begin//wirte to student database open;first; While Not Eof do begin With dm7.DataSource1.dataset do begin Open;append; FieldByname('Cardno').AsString :=DataSource1.DataSet.FieldByname('淮考證號碼').AsString; FieldByname('name').AsString :=DataSource1.DataSet.FieldByname('姓名').AsString; FieldByname('sex').AsString :=DataSource1.DataSet.FieldByname('性別').AsString; FieldByname('object').AsString :=DataSource1.DataSet.FieldByname('報考科系').AsString; if Trim(DataSource1.DataSet.FieldByname('考試日期').AsString)='' then FieldByname('testdate').AsDateTime :=Date else FieldByname('testdate').AsDateTime :=DataSource1.DataSet.FieldByname('考試日期').AsDatetime; if Trim(DataSource1.DataSet.FieldByname('放榜日期').AsString)='' then FieldByname('scoredate').AsDateTime :=Date else FieldByname('scoredate').AsDateTime :=DataSource1.DataSet.FieldByname('放榜日期').AsDatetime; FieldByname('tclassroom').AsString :=DataSource1.DataSet.FieldByname('考場').AsString; FieldByname('marticulan').AsString :=DataSource1.DataSet.FieldByname('錄取狀況').AsString; FieldByname('relieve').AsString :=DataSource1.DataSet.FieldByname('備取順位').AsString; FieldByname('score').AsString :=DataSource1.DataSet.FieldByname('成績').AsString; FieldByname('ps1').AsString :=DataSource1.DataSet.FieldByname('備註1').AsString; FieldByname('ps2').AsString :=DataSource1.DataSet.Fields.Fields[12].DisplayName; Post; end; Next; end; end; end;
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-03 17:22:19 IP:202.39.xxx.xxx 未訂閱
With dm7.ADOQuer3 do begin
  Close;SQL.clear;
  SQL.ADD('delete from student ' 
         'where ps2 = ''' temp ''';' 
         'Select * from student');
  open;
end;
ADOQuery 沒辦法一次執行兩個 SQL 語句 分兩次執行試試
mine
中階會員


發表:28
回覆:129
積分:56
註冊:2004-03-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-03 19:00:31 IP:61.221.xxx.xxx 未訂閱
ADOQuery 沒辦法一次執行兩個 SQL 語句 分兩次執行試試 [/quote] With dm7.ADOQuery3 do begin   Close;SQL.clear;   SQL.ADD('delete from student '+          'where ps2 = '''+temp+''';);   open; end; With dm7.ADOQuery3 do begin   Close;SQL.clear;   SQL.ADD('select * from student');  open; end; 這以前我曾試過但是會出現ADOQyuery3:command txext does not result dataset;的錯誤訊息, 這也是我搞不懂的,加了select * from在後面則錯誤訊息會消失, 但是新增動作會失敗,目前還是只能透過DATASET的操作 With dm7.ADOQuery3 do begin   Close;SQL.clear;   SQL.ADD('delete from student '+          'where ps2 = '''+temp+''';);   SQL.ADD('select * from student');   open; end; 這方法就跟之前無異了 問題一樣CC / 還有一個重點沒說就是資料庫沒資料但是指向dm7.datasourc1.dataset的DBGrid資料是正常的/___\ dm7這個dataset指向ADOQuery3 也試過把刪除的SQL碼移到別的button下分開動作 結果一樣; -------------------------------------------- 搞不懂!搞不懂!永遠都搞不懂!
StrongLemon
高階會員


發表:10
回覆:166
積分:105
註冊:2004-04-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-04 01:50:01 IP:210.68.xxx.xxx 未訂閱
1.Delete & Update 語法請用TADOQuery.ExecSQL 2.Select 語法請用TADOQuery.Open 3.command txext does not result dataset-> 就是你的SQL命令沒有傳回結果資料(delete&update本來就不會回傳結果)
mine
中階會員


發表:28
回覆:129
積分:56
註冊:2004-03-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-06-04 02:26:12 IP:218.175.xxx.xxx 未訂閱
睡到一半凌晨二點忽然想到這個答案!!^^ 才想上來結案就有人早一步回答了!! 一個人思考果然有時很容易陷入自己的盲點!!賓果!!StrongLemon! 謝謝hagar~^^ ---------------------------------------------------- 搞不懂!搞不懂!!永遠都搞不懂!
系統時間:2024-06-29 13:04:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!