錯誤提示
Project Project1.exe raised exception class EDatabaseError with message 'ADODataSet1:Cannot perform this operation on a closed dataset'. Process stopped.Use Step or Run to continue.
原代碼
procedure TForm3.SpeedButton1Click(Sender: TObject);
begin
if (edit1.Text='')or(edit2.Text='')or(edit3.Text='') then
showmessage('Data is not enough!')
else
begin
with adodataset1 do
begin
insert;
fieldbyname('樓盤編號').AsString:=edit1.Text;
fieldbyname('樓盤名稱').AsString:=edit1.Text;
post;
refresh;
end;
end;
end;
求解
uj5u.com熱心網友回復:
下斷點,看看哪句出錯,是post處,還是refresh處,post完了,為什么要refreshuj5u.com熱心網友回復:
提示的好像是這個地方有問題 fieldbyname('樓盤編號').AsString:=edit1.Text;不明白為什么
uj5u.com熱心網友回復:
Insert以前,資料要處于打開狀態。uj5u.com熱心網友回復:
加上adodataset1.active:=true;或用adodataset1.open;
uj5u.com熱心網友回復:
'ADODataSet1:Cannot perform this operation on a closed dataset',理解下這個英文意思就明白了,ADODataSet1 不能將這種操作用于一個關閉的記錄集。所以:應該有
with adodataset1 do
begin
adodataset1.Open();//在這里加上,其中adodataset1.Sql.Text不能為空
insert;
fieldbyname('樓盤編號').AsString:=edit1.Text;
fieldbyname('樓盤名稱').AsString:=edit1.Text;
post;
refresh;
end;
uj5u.com熱心網友回復:
樓主,DataSet在進行操作前應該先寫入Sql陳述句,然后Open。在執行這個事件前應該先打開DataSet,比如:
ADODataSet.Sql.Text:='Select XXX from XXX Where XXX';
ADODataSet.Open;
然后
procedure TForm3.SpeedButton1Click(Sender: TObject);
begin
if (edit1.Text='')or(edit2.Text='')or(edit3.Text='') then
showmessage('Data is not enough!')
else
begin
with adodataset1 do
begin
insert;
fieldbyname('樓盤編號').AsString:=edit1.Text;
fieldbyname('樓盤名稱').AsString:=edit1.Text;
post;
refresh;
end;
end;
end;
這樣就可以了。
uj5u.com熱心網友回復:
樓上的正解,先查詢打開結果集,然后插入操作uj5u.com熱心網友回復:
在一個關閉的資料集上不能執行當前操作,資料集沒有打開的原因。uj5u.com熱心網友回復:
對頭,一般都 是這樣做的uj5u.com熱心網友回復:
修改成
fieldbyname('樓盤編號').AsString:=trim(edit1.Text);
uj5u.com熱心網友回復:
要改變的話,首先要先進行adodataset.edit,你要先把他設定成可以編輯才可以改變uj5u.com熱心網友回復:
錯誤提示很明顯,資料集沒有打開,先open一下就行了。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/140852.html
標籤:數據庫相關
下一篇:OutLook使用
