用adoquery作插入的问题 help me!!!!(0分)

  • 主题发起人 主题发起人 badboyzhang5205
  • 开始时间 开始时间
B

badboyzhang5205

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button10Click(Sender: TObject);
begin
with AdoQuery1 do
begin
close;
sql.Clear;
insert;
sql.Add('insert into student (ID,NAME,SEX,DEPARTMENT,MAJOR,CLASS,BIRTHDAY,POLITICS,NATIVE_PLACE)');
sql.add('values(:ID,:NAME,:SEX,:DEPARTMENT,:MAJOR,:CLASS,:BIRTHDAY,:POLITICS,:NATIVE_PLACE)');
parambyname('ID').asstring:=Edit3.Text;
parambyname('Name').asstring:=Edit3.Text;
parambyname('ID').asstring:=Edit3.Text;
parambyname('sex').asstring:=combobox5.Text;
parambyname('Department').asstring:=combobox6.Text;
parambyname('Class').asstring:=combobox8.Text;
parambyname('major').asstring:=combobox7.Text;
parambyname('birthday').asstring:=Edit5.Text;
parambyname('Native_palce').asstring:=Edit6.Text;
parambyname('Politics').asstring:=combobox9.Text;
execsql;
post;
refresh;
end;
end;
想往一个表中插入数据,用adoquery,用button确定,上面的程序编译不过
大家觉得错在哪里 有什么建议? thx
 
把post去掉吧,还有refresh。
 
parambyname('Class').asstring
=>parambyname('Class').value
 
看提示啊
ParamByName()前面少了Parameters
并且不能AsString
只能写Value
应该
Parameters.parambyname('ID').Value:=Edit3.Text;
当然还得去掉
post,还有refresh。
 
更正:
{asstring是可以的,不过用什么类型都必须和字段类型保持一直,还要考虑到delphi的数据
类型和DBMS的数据类型的兼容问题。。}
花括号里的的结论是我未经过证明的经验,我一直用value。
经过实验,asstring是不行的,我承认错误,千万别误导了各位,那可是罪过!
谢谢chinapeng。

ParamByName前面加Parameters 是对的。
 
procedure TForm1.Button10Click(Sender: TObject);
begin
with AdoQuery1 do
begin
close;
sql.Clear;
insert;
sql.Add('insert into student (ID,NAME,SEX,DEPARTMENT,MAJOR,CLASS,BIRTHDAY,POLITICS,NATIVE_PLACE)');
sql.add('values(:ID,:NAME,:SEX,:DEPARTMENT,:MAJOR,:CLASS,:BIRTHDAY,:POLITICS,:NATIVE_PLACE)');
Parameters.parambyname('ID').Value:=Edit3.Text;
Parameters.parambyname('Name').value:=Edit3.Text;
Parameters.parambyname('ID').value:=Edit3.Text;
Parameters.parambyname('sex').value:=combobox5.Text;
Parameters.parambyname('Department').value:=combobox6.Text;
Parameters.parambyname('Class').value:=combobox8.Text;
Parameters.parambyname('major').value:=combobox7.Text;
Parameters.parambyname('birthday').value:=Edit5.Text;
Parameters.parambyname('Native_palce').value:=Edit6.Text;
Parameters.parambyname('Politics').Value:=combobox9.Text;
execsql;

end;
end;
改为上面的可以通过编译,不过就是实现不了功能, 按button键的时候出现错误,说是
aqoquery:can not perform this operation on a close dataset;
我怀疑是aqoquery没有设置好,请问sql属性应该怎么设置,所连的表是student.
thx.
 
把你的connectionstring贴出来看看
 
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:/Database/MyDb.mdb;Persist Security Info=False
 
To SEVN,
TadoQuery 可不能 Asstring哟不信你试试!
 
拜托!
ADOQuery不是这么用的
首先,ADOQuery的SQL必须返回数据集!
其次,如果你用ADOQuery.Insert那么就要:
ADOQuery.Insert;
ADOQuery.FieldByName('SomeField').AsString := '';
ADOQuery.FieldByName('SomeField').AsString := '';
ADOQuery.Post;
第三,你都把数据集Close了,ADOQuery.Insert当然会报错。
 
如下:
begin
with AdoQuery1 do
begin
close;
sql.Clear;
sql.Add('insert into student (ID,NAME,SEX,DEPARTMENT,MAJOR,CLASS,BIRTHDAY,POLITICS,NATIVE_PLACE)');
sql.add('values(:ID,:NAME,:SEX,:DEPARTMENT,:MAJOR,:CLASS,:BIRTHDAY,:POLITICS,:NATIVE_PLACE)');
parambyname('ID').asstring:=Edit3.Text;
parambyname('Name').asstring:=Edit3.Text;
parambyname('ID').asstring:=Edit3.Text;
parambyname('sex').asstring:=combobox5.Text;
parambyname('Department').asstring:=combobox6.Text;
parambyname('Class').asstring:=combobox8.Text;
parambyname('major').asstring:=combobox7.Text;
parambyname('birthday').asstring:=Edit5.Text;
parambyname('Native_palce').asstring:=Edit6.Text;
parambyname('Politics').asstring:=combobox9.Text;
execsql;
end;
end;

 
TO:liuxiaouo
用asstring代替value是不行的哦
 
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('insert into CollectData' + '(ClientID, ClientDate, ClientTime,OpenHeight, Temperature)');
SQL.Add('values' + '(:ClientID, :ClientDate, :ClientTime, :OpenHeight, :Temperature)');
Parameters.ParamByName('ClientID').DataType:= ftString;
Parameters.ParamByName('ClientID').Value:= ClientID;
Parameters.ParamByName('ClientDate').DataType:= ftString;
Parameters.ParamByName('ClientDate').Value:= ClientDate;
Parameters.ParamByName('ClientTime').DataType:= ftString;
Parameters.ParamByName('ClientTime').Value:= ClientTime;
Parameters.ParamByName('OpenHeight').DataType:= ftFloat;
Parameters.ParamByName('OpenHeight').Value:= OpenHeight;
Parameters.ParamByName('Temperature').DataType:= ftFloat;
Parameters.ParamByName('Temperature').Value:= Temperature;
try
Prepared;
//SQL.SaveToFile('D:/Debug.sql'); //SQL语句调试文件
ExecSQL;
except
Exit;
end;
end;
 
老兄你改過的代碼中怎麼還有insert?刪除!
(来自:badboyzhang520520, 时间:2002-12-27 18:26:00, ID:1543329)
 
我根本没做什么代替。我是复制你的代码
然后把INSERT去掉了。
我只是给你一个思路。具体的调试
 
谢谢各位 问题已经解决
多谢指教!
 
后退
顶部