在向表中添加新记录时出错,系统提示“project yj.exe raised exception class EAccess Violation at address 1F487CAB in module 'msado15.dll'.Write of address 0139A01C'.执行添加的语句如下,逐步调试发现是在adoquery1.ExecSQL这句之后出错,请哪位指点一下问题出在哪儿?谢谢!
procedure Tf_addjg.BtmaddClick(Sender: TObject);
begin
mainform.adoconnection1.begintrans;
try
adoquery1.sql.clear;
adoquery1.SQL.Add('insert into baseinfo (id,mc,fr,dz,fzr,cyrs,phone,km,djhm,xkqx,cs,bnsh,mj,yf,zds,czs) values ');
adoquery1.SQL.Add(' ('+edid.text+','''+edmc.text+''','''+edfr.text+''','''+eddz.text+''','''+edfzr.text+''','+edcyrs.text+','''+edphone.text+''','''+cmkm.text+''',');
adoquery1.SQL.Add(' '''+eddjhm.text+''','''+edxkqx.text+''','+edcs.text+','''+cmbnsh.text+''','''+edmj.text+''','+edyf.text+','+edzds.text+','+edczs.Text+')');
adoquery1.ExecSQL ;
mainform.adoconnection1.committrans;
ccleardata(f_addjg);
if messagedlg('继续添加记录!',mtconfirmation,[mbyes,mbno],0)=mryes
then
edmc.SetFocus
else
close;
except
mainform.adoconnection1.rollbacktrans;
end;
end;
procedure Tf_addjg.BtmaddClick(Sender: TObject);
begin
mainform.adoconnection1.begintrans;
try
adoquery1.sql.clear;
adoquery1.SQL.Add('insert into baseinfo (id,mc,fr,dz,fzr,cyrs,phone,km,djhm,xkqx,cs,bnsh,mj,yf,zds,czs) values ');
adoquery1.SQL.Add(' ('+edid.text+','''+edmc.text+''','''+edfr.text+''','''+eddz.text+''','''+edfzr.text+''','+edcyrs.text+','''+edphone.text+''','''+cmkm.text+''',');
adoquery1.SQL.Add(' '''+eddjhm.text+''','''+edxkqx.text+''','+edcs.text+','''+cmbnsh.text+''','''+edmj.text+''','+edyf.text+','+edzds.text+','+edczs.Text+')');
adoquery1.ExecSQL ;
mainform.adoconnection1.committrans;
ccleardata(f_addjg);
if messagedlg('继续添加记录!',mtconfirmation,[mbyes,mbno],0)=mryes
then
edmc.SetFocus
else
close;
except
mainform.adoconnection1.rollbacktrans;
end;
end;
insert into baseinfo (id,mc,fr,dz,fzr,cyrs,phone,km,djhm,xkqx,cs,bnsh,mj,yf,zds,czs) values ('+edid.text+','''+edmc.text+''','''+edfr.text+''','''+eddz.text+''','''+edfzr.text+''','+edcyrs.text+','''+edphone.text+''','''+cmkm.text+''','''+eddjhm.text+''','''+edxkqx.text+''','+edcs.text+','''+cmbnsh.text+''','''+edmj.text+''','+edyf.text+','+edzds.text+','+edczs.Text+')
unit addjg;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, DB, ADODB;type
Tf_addjg = class(TForm)
Edid: TEdit;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Edmc: TEdit;
Label3: TLabel;
Edfr: TEdit;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Eddz: TEdit;
Edfzr: TEdit;
Edcyrs: TEdit;
Edphone: TEdit;
Label8: TLabel;
Label9: TLabel;
Cmkm: TComboBox;
Eddjhm: TEdit;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Edxkqx: TEdit;
Edcs: TEdit;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Cmbnsh: TComboBox;
Edmj: TEdit;
Label19: TLabel;
Label20: TLabel;
Label21: TLabel;
Edyf: TEdit;
Edzds: TEdit;
Edczs: TEdit;
Btmadd: TButton;
Btncancel: TButton;
ADOQuery1: TADOQuery;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BtncancelClick(Sender: TObject);
procedure BtmaddClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function GetId:String;
end;var
f_addjg: Tf_addjg;implementationuses main,shareu;{$R *.dfm}procedure Tf_addjg.FormCreate(Sender: TObject);
begin
edid.Text:=GetId;
end;
procedure Tf_addjg.FormClose(Sender: TObject; var Action: TCloseAction);
begin
f_addjg:=nil;
Action:=cafree;
end;procedure Tf_addjg.BtncancelClick(Sender: TObject);
begin
close;
end;function Tf_addjg.GetId:string;
begin
adoQuery1.SQL.Text:='select max(id) as ID from baseInfo';
adoquery1.Open;
if adoquery1.FieldByName('iD').AsString ='' then //
begin
result:='1';
end
else
begin
result:=inttostr(adoquery1.FieldByName('ID').Asinteger+1);
end;
adoquery1.Close;
end;procedure Tf_addjg.BtmaddClick(Sender: TObject);
begin
mainform.adoconnection1.begintrans;
try
adoquery1.sql.clear;
adoquery1.SQL.Add('insert into baseinfo (id,mc,fr,dz,fzr,cyrs,phone,km,djhm,xkqx,cs,bnsh,mj,yf,zds,czs) values ');
adoquery1.SQL.Add(' ('+edid.text+','''+edmc.text+''','''+edfr.text+''','''+eddz.text+''','''+edfzr.text+''','+edcyrs.text+','''+edphone.text+''','''+cmkm.text+''',');
adoquery1.SQL.Add(' '''+eddjhm.text+''','''+edxkqx.text+''','+edcs.text+','''+cmbnsh.text+''','''+edmj.text+''','+edyf.text+','+edzds.text+','+edczs.Text+')');
adoquery1.ExecSQL ;
mainform.adoconnection1.committrans;
ccleardata(f_addjg);
if messagedlg('继续添加记录!',mtconfirmation,[mbyes,mbno],0)=mryes
then
edmc.SetFocus
else
close;
except
mainform.adoconnection1.rollbacktrans;
end;
end;end.
去微软下MDAC2.8装了在试
打开这个地址
下载安装
够详细吗
adoquery1.sql.clear;
adoquery1.SQL.Add('insert into baseinfo (id,mc,fr,dz,fzr,cyrs,phone,km,djhm,xkqx,cs,bnsh,mj,yf,zds,czs) values(:a,:b,:c,:d,:e,:f,:g,:h,:i,:j,:k,:l,:m,:n,:o,:p) ');
adoquery1.Parameters.ParamByName('a').Value:=edid.text;
adoquery1.Parameters.ParamByName('b').Value:=edmc.text;
……
……
adoquery1.ExecSQL ;
试试这个吧
adoquery1.SQL.Add('insert into baseinfo (id,mc,fr,dz,fzr,cyrs,phone,km,djhm,xkqx,cs,bnsh,mj,yf,zds,czs) values ');
adoquery1.SQL.Add(' ('+edid.text+','''+edmc.text+''','''+edfr.text+''','''+eddz.text+''','''+edfzr.text+''','+edcyrs.text+','''+edphone.text+''','''+cmkm.text+''',');
adoquery1.SQL.Add(' '''+eddjhm.text+''','''+edxkqx.text+''','+edcs.text+','''+cmbnsh.text+''','''+edmj.text+''','+edyf.text+','+edzds.text+','+edczs.Text+')');不要这样写代码呀,用参数写看的清楚一点,也容易除错