Adoquery調用Access資料庫出錯'Access violation at address. |
答題得分者是:ha0009
|
tomc
一般會員 發表:41 回覆:35 積分:15 註冊:2003-07-27 發送簡訊給我 |
我在程式中通過Adoquery調用Access資料庫出錯
"Project Project.erxe raised exception class EAccessViolation with message 'Access violation at address 1B04106A in moduile 'MSJET40.DLL'.Read of address 5700578F'.Process stopped.Use Step or Run to continue. [OK][Help]
按OK可以繼續運行,不知錯在哪裡呢? :)我是新手,見諒! 一顆小菜
------
交流.學習 |
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
好像是您的驱动有问题或者是连接方式不对 连接方式参考如下:
adoconnection1.Close ; ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=;Data Source=abc.mdb;user id=admin;Persist Security Info=False'; adoconnection1.Connected:=true; ADOQuery1.Connection :=adoconnection1;
|
tomc
一般會員 發表:41 回覆:35 積分:15 註冊:2003-07-27 發送簡訊給我 |
引言: 好像是您的驱动有问题或者是连接方式不对 连接方式参考如下: adoconnection1.Close ; ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=;Data Source=abc.mdb;user id=admin;Persist Security Info=False'; adoconnection1.Connected:=true; ADOQuery1.Connection :=adoconnection1;我用的是AdoQuery,原來的代碼 adoquery3.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' ExtractFilePath( Application.ExeName ) 'KCD_Database.mdb' ';Persist Security Info=False'; adoquery3.active:=true; adoquery3.close; adoquery3.SQL.Text :='select DISTINCT JF_DW from kcd_JF '; adoquery3.Open ; datasource3.dataset:=adoquery3; 我還是試試你上面的那種方法吧! 太感謝你啦! 一顆小菜
------
交流.學習 |
tomc
一般會員 發表:41 回覆:35 積分:15 註冊:2003-07-27 發送簡訊給我 |
程序運行到如下代碼就出錯,跳出以上對話框。
pa:=ExtractFilePath( Application.ExeName ) 'KCD_Database.mdb' ; adoquery2.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' pa ';Persist Security Info=False';
adoquery2.active:=true;
adoquery2.close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('select sum(XM_JJC) as jjc,sum(XM_HXY) as hsy,sum(XM_XGF) as xgf,sum(XM_KRF) as krf,SUM(XM_PGF) as pgf,sum(XM_NNF) as nnf,sum(XM_TSF) as tsf,sum(XM_RCF) as rcf,sum(XM_XSF) as xsf,SUM(XM_JDF) as jdf,');
adoquery2.SQL.add('sum(xm_qt1) As qt1,sum(xm_qt2) as qt2,sum(XS_HJ) as hj');
adoquery2.SQL.add('from kcd_xs');
adoquery2.SQL.Add('where XS_RQ Between #' formatdatetime('yyyy/mm/dd',datetimepicker1.date) '# and #' formatdatetime('yyyy/mm/dd',datetimepicker2.date) '#');// 'group by xs_rq');
adoquery2.Open ;
datasource2.dataset:=adoquery2; 一顆小菜
------
交流.學習 |
ha0009
版主 發表:16 回覆:507 積分:639 註冊:2002-03-16 發送簡訊給我 |
你好:
幾點建議給你參考
< class="code">
1. TADOQuery ConnectionString 使用預設的編輯器設定比較不會出錯。
(AdoQuery1 屬性編輯視窗的 ConnectionString 編輯器點擊兩次會出現) 2. 加一個語法除錯的功能方便檢視 SQL 是否有誤。
try
AdoQuery1.open;
except
memo1.Lines.Assign (ADOQuery1.SQL);
end; 3. AdoQuery1.open 與 AdoQuery1.Active := true 相同,擇其一既可。 4. AdoQuery1.close 與 AdoQuery1.Active := false 相同,擇其一既可。
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
tomc 兄:
我试验过的没有问题的,将2中连接方式公布如下: 方法一
procedure TForm1.Button1Click(Sender: TObject);
begin
adoquery1:=tadoquery.Create(nil);
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=;Data Source=' ExtractFileDir(application.Exename) '\db1.mdb;user id=admin;Persist Security Info=False';
adoconnection1.LoginPrompt :=false;
adoconnection1.Connected:=true;
ADOQuery1.Connection :=adoconnection1;
DataSource1.DataSet :=adoquery1; ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from mytable');
adoquery1.Open ; end; 方法二
procedure TForm1.Button2Click(Sender: TObject);
begin
DataSource1.DataSet :=adoquery2;
ADOQuery2.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=;Data Source=' ExtractFileDir(application.Exename) '\db1.mdb;user id=admin;Persist Security Info=False';
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('select * from mytable');
ADOQuery2.Close;
adoquery2.Open ;
end;
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
tomc 兄:
我试验过的没有问题的,将2中连接方式公布如下: 方法一
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=;Data Source=' ExtractFileDir(application.Exename) '\db1.mdb;user id=admin;Persist Security Info=False';
adoconnection1.LoginPrompt :=false;
adoconnection1.Connected:=true;
ADOQuery1.Connection :=adoconnection1;
DataSource1.DataSet :=adoquery1; ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from mytable');
adoquery1.Open ; end; 方法二
procedure TForm1.Button2Click(Sender: TObject);
begin
DataSource1.DataSet :=adoquery2;
ADOQuery2.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=;Data Source=' ExtractFileDir(application.Exename) '\db1.mdb;user id=admin;Persist Security Info=False';
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('select * from mytable');
ADOQuery2.Close;
adoquery2.Open ;
end;
|
tomc
一般會員 發表:41 回覆:35 積分:15 註冊:2003-07-27 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |