我在窗体上放了一个TADOConnection和一个TADOQuery控件TADOQuery.Connection设置为TADOConnectionFormCreate事件如下:
procedure TForm1.FormCreate(Sender: TObject);
begin
Cnn.ConnectionString:='DBQ=D:\123\Backup.mdb;DefaultDir=D:\123\;Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;UID=admin;UserCommitSync=Yes;';
Cnn.Connected:=True;
end;这个没错。正确连接上了。procedure TForm1.Button1Click(Sender: TObject);
begin
Query.SQL.Clear;
Query.SQL.Add('Delete From BackupPath');
Query.ExecSQL;
showmessage('ok');
end;procedure TForm1.Button2Click(Sender: TObject);
begin
Query.SQL.Clear;
Query.SQL.Add('Select * from BackupPath');
Query.Open;
showmessage('ok');
end; 这是两个BUTTON的事件。我先执行Button1Click会显示OK,然后我再执行Button2Click也会显示OK,如果我再执行Button1Click,则会出错,出错代码如下:
Access violation at address 1F453E6E in module 'msado15.dll',Write of address 0117A028. 如果我先执行Button2Click的话会显示OK,再执行Button1Click则也会出错,出错代码同上。
我的代码应该不会有什么问题吧?为什么一执行查询。再执行删除就会出错呢? 在线等待!
procedure TForm1.FormCreate(Sender: TObject);
begin
Cnn.ConnectionString:='DBQ=D:\123\Backup.mdb;DefaultDir=D:\123\;Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;UID=admin;UserCommitSync=Yes;';
Cnn.Connected:=True;
end;这个没错。正确连接上了。procedure TForm1.Button1Click(Sender: TObject);
begin
Query.SQL.Clear;
Query.SQL.Add('Delete From BackupPath');
Query.ExecSQL;
showmessage('ok');
end;procedure TForm1.Button2Click(Sender: TObject);
begin
Query.SQL.Clear;
Query.SQL.Add('Select * from BackupPath');
Query.Open;
showmessage('ok');
end; 这是两个BUTTON的事件。我先执行Button1Click会显示OK,然后我再执行Button2Click也会显示OK,如果我再执行Button1Click,则会出错,出错代码如下:
Access violation at address 1F453E6E in module 'msado15.dll',Write of address 0117A028. 如果我先执行Button2Click的话会显示OK,再执行Button1Click则也会出错,出错代码同上。
我的代码应该不会有什么问题吧?为什么一执行查询。再执行删除就会出错呢? 在线等待!
begin
Query.Close;
Query.SQL.Clear;
Query.SQL.Add('Delete From BackupPath');
Query.ExecSQL;
showmessage('ok');
end;procedure TForm1.Button2Click(Sender: TObject);
begin
Query.Close;
Query.SQL.Clear;
Query.SQL.Add('Select * from BackupPath');
Query.Open;
showmessage('ok');
end;
要执行返回数据集前要确定DATASET是否关闭。
你的BUTTON1 那里要先CLOSE DATASET
procedure TForm1.Button1Click(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Delete From BackupPath');
Query1.ExecSQL;
showmessage('ok');
end;procedure TForm1.Button2Click(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Select * from BackupPath');
Query1.Open;
showmessage('ok');
end;
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Insert into BackupPath (ID,BackPath,PathAttrib) Values ("1","c:\","1")');
Query1.ExecSQL;这条插入语句没错吧?竟然报错:“参数不足,期待是2”怎么回事哦,有哪位大哥帮忙看看罗。
Query1.SQL.Clear;
Query1.SQL.Add('Insert into BackupPath (ID,BackPath,PathAttrib) Values (:A,:B,:C)');
Query1.Parameters.ParamByName('A').Value:='2';
Query1.Parameters.ParamByName('B').Value:='D:\';
Query1.Parameters.ParamByName('C').Value:='ABC';
Query1.ExecSQL; 还是不明白。原来用的好好的SQL语句为什么不可以直接插了。 :)
在Clear之前要加qry.close