DATASET與SQL操作上的小問題 |
答題得分者是:StrongLemon
|
mine
中階會員 發表:28 回覆:129 積分:56 註冊:2004-03-31 發送簡訊給我 |
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 發送簡訊給我 |
|
mine
中階會員 發表:28 回覆:129 積分:56 註冊:2004-03-31 發送簡訊給我 |
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 發送簡訊給我 |
|
mine
中階會員 發表:28 回覆:129 積分:56 註冊:2004-03-31 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |