ADOQuery_Book :Dataset not in edit or insert mode.这是什么原因?

hhgf 2006-03-31 09:52:12
我要增加一条图书记录,但老出现
ADOQuery:Dataset not in edit or insert mode的错误,大家帮忙啊!
with ADOQuery_Book do
begin
Append;
DBEdit_BookID.SetFocus;
DBEdit_BookID.Text:= IntToStr(PublicFunction_Form.GetFitNum('BookID',
'Select BookID from Lab_Book_Manage where BookID<>-1 Order By BookID ASC'));
DBEdit_BookName.SetFocus;
FieldByName('BookStatus').AsString:='未借';
Post;
end;
...全文
246 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangpei2008 2006-04-04
  • 打赏
  • 举报
回复
在进行插入之前首先判断一下结果集的状态,如果不是插入状态的话,将其改为insert状态既可。
if not (datasource1.state in [dsinsert])
adoquery_book.insert;
Rubi 2006-04-01
  • 打赏
  • 举报
回复
你把'BookID','Select BookID from Lab_Book_Manage where BookID<>-1 Order By BookID ASC'));
单独用个adoQuery_book.sql.text来存,
adoquery_book.close;
adoquery_book.sql.clear;
adoquery_book.sql.text :=''Select BookID from Lab_Book_Manage where BookID<>-1 Order By BookID ASC';
adoQuery_book.open;
...继续下面的给FieldByName('BookID')赋值
huangheng1983 2006-04-01
  • 打赏
  • 举报
回复
还是不行哦!
elite01 2006-04-01
  • 打赏
  • 举报
回复
Append前加个Open试下
,SetFocus也别调了,没啥用吧
DURON800 2006-04-01
  • 打赏
  • 举报
回复
如果不是记录集的问题,请改成以下格式试试:
with ADOQuery_Book do
begin
Append;
FieldByName('BookID'").AsString:= IntToStr(PublicFunction_Form.GetFitNum('BookID','Select BookID from Lab_Book_Manage where BookID<>-1 Order By BookID ASC'));
FieldByName('BookStatus').AsString:='未借';
Post;
end;
DURON800 2006-04-01
  • 打赏
  • 举报
回复
我不明白你的两个SetFocus是做什么用的?
应该不需要吧。直接用对象名.AsString就可以了吧。另外,你的ID数据类新应该是uniqueidentifier吧?
DURON800 2006-04-01
  • 打赏
  • 举报
回复
一般原因有两个:
一、记录集未打开;
二、记录集的锁定类型是只读;
huangheng1983 2006-04-01
  • 打赏
  • 举报
回复
ADOQuery:Dataset not in edit or insert mode这类错误一般是哪些地方出错了?
huangheng1983 2006-04-01
  • 打赏
  • 举报
回复
按楼上说的,我改了,可还是出错,同一个错误!
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, ADODB, OleServer, Excel2000, ExtCtrls, Grids, DBGrids; type TForm1 = class(TForm) ADOConnection1: TADOConnection; ADOQuery1: TADOQuery; DataSource1: TDataSource; DBGrid1: TDBGrid; Label1: TLabel; Edit1: TEdit; Label2: TLabel; Edit2: TEdit; ComboBox1: TComboBox; Button1: TButton; Button2: TButton; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public end; var Form1: TForm1; implementation uses Unit2; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ADOQuery1.Close; ADOQuery1.SQL.Clear; if edit2.Text='13440101' then begin if combobox1.Text='全部学期' then begin ADOQuery1.SQL.Add('Select * From 13440101 Where xm=:sxm and xh=:sxh '); ADOQuery1.Parameters.ParamByName('sxm').Value := Edit1.Text; ADOQuery1.Parameters.ParamByName('sxh').Value := Edit2.Text; ADOQuery1.Open end; if combobox1.Text='第一学期' then begin ADOQuery1.SQL.Add('Select * From 13440101 Where xm=:sxm and xh=:sxh and xq=:sxq '); ADOQuery1.Parameters.ParamByName('sxm').Value := Edit1.Text; ADOQuery1.Parameters.ParamByName('sxh').Value := Edit2.Text; ADOQuery1.Parameters.ParamByName('sxq').Value :='1'; ADOQuery1.Open end; if combobox1.Text='第二学期' then begin ADOQuery1.SQL.Add('Select * From 13440101 Where xm=:sxm and xh=:sxh and xq=:sxq '); ADOQuery1.Parameters.ParamByName('sxm').Value := Edit1.Text; ADOQuery1.Parameters.ParamByName('sxh').Value := Edit2.Text; ADOQuery1.Parameters.ParamByName('sxq').Value :='2'; ADOQuery1.Open end; if combobox1.Text='第三学期' then begin ADOQuery1.SQL.Add('Select * From 13440101 Where xm=:sxm and xh=:sxh and xq=:sxq '); ADOQuery1.Parameters.ParamByName('sxm').Value := Edit1.Text; ADOQuery1.Parameters.ParamByName('sxh').Value := Edit2.Text; ADOQuery1.Parameters.ParamByName('sxq').Value :='3'; ADOQuery1.Open end; if combobox1.Text='第四学期' then begin ADOQuery1.SQL.Add('Select * From 13440101 Where xm=:sxm and xh=:sxh and xq=:sxq '); ADOQuery1.Parameters.ParamByName('sxm').Value := Edit1.Text; ADOQuery1.Parameters.ParamByName('sxh').Value := Edit2.Text; ADOQuery1.Parameters.ParamByName('sxq').Value :='4'; ADOQuery1.Open end; end; if edit2.Text='13440102' then begin ADOQuery1.SQL.Add('Select * From 13440101 Where xm=:sxm and xh=:sxh and xq=:sxq'); ADOQuery1.Parameters.ParamByName('sxm').Value := Edit1.Text; ADOQuery1.Parameters.ParamByName('sxh').Value := Edit2.Text; ADOQuery1.Parameters.ParamByName('sxq').Value :='1'; ADOQuery1.Open end; dbgrid1.Columns.Items[0].Width:=60; dbgrid1.Columns.Items[1].Width:=60; dbgrid1.Columns.Items[2].Width:=60; dbgrid1.Columns.Items[3].Width:=150; dbgrid1.Columns.Items[4].Width:=80; dbgrid1.Columns.Items[5].Width:=60; dbgrid1.Columns.Items[6].Width:=60; dbgrid1.Columns.Items[7].Width:=60; dbgrid1.Columns.Items[8].Width:=60; dbgrid1.Columns.Items[9].Width:=60; dbgrid1.Columns.Items[10].Width:=60; end; procedure TForm1.Button2Click(Sender: TObject); begin ADOQuery1.Close; ADOQuery1.SQL.Clear; if edit2.Text='13440101' then begin ADOQuery1.SQL.Add('Select * From 13440101 Where cj<60 and xh=:sxh'); ADOQuery1.Parameters.ParamByName('sxh').Value := Edit2.Text; ADOQuery1.Open; end; if edit2.Text='13440102' then begin ADOQuery1.SQL.Add('Select * From 13440101 Where cj<60 and xh=:sxh'); ADOQuery1.Parameters.ParamByName('sxh').Value := Edit2.Text; ADOQuery1.Open; end; dbgrid1.Columns.Items[0].Width:=60; dbgrid1.Columns.Items[1].Width:=60; dbgrid1.Columns.Items[2].Width:=60; dbgrid1.Columns.Items[3].Width:=150; dbgrid1.Columns.Items[4].Width:=80; dbgrid1.Columns.Items[5].Width:=60; dbgrid1.Columns.Items[6].Width:=60; dbgrid1.Columns.Items[7].Width:=60; dbgrid1.Columns.Items[8].Width:=60; dbgrid1.Columns.Items[9].Width:=60; dbgrid1.Columns.Items[10].Width:=60; end; procedure TForm1.Button3Click(Sender: TObject); begin form1.ADOQuery1.Close; form1.ADOQuery1.SQL.Clear; form1.ADOQuery1.SQL.Add('Select xh From xsmessage Where xh=:sxh'); form1.ADOQuery1.Parameters.ParamByName('sxh').Value := Edit2.Text; form1.ADOQuery1.Open; form2.qrdbtext1.DataField:='xh'; form2.quickrep1.Preview; end; procedure TForm1.FormCreate(Sender: TObject); begin end; end.

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧