主窗体:uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, gddata, StdCtrls, Grids, DBGrids, DB, ADODB, Menus;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
uses gdlogin;
{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var frmlog: tform2;
begin
frmlog := tform2.Create(Application);
if frmlog.ShowModal = mrOK then self.show
else Application.Terminate;
end;
end.
登陆窗体
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, gddata, DB, ADODB, StdCtrls, Buttons;
type
TForm2 = class(TForm)
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
ADOQuery1: TADOQuery;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses gdmain;
{$R *.dfm}
procedure TForm2.BitBtn1Click(Sender: TObject);
begin
DataModule2.ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Password=66666;Persist Security Info=False;User ID=130001;Initial Catalog=gdkjbb;Data Source=10.20.20.21';
dataModule2.ADOConnection1.Connected := true;
if DataModule2.ADOConnection1.Connected then begin
****************省略
end;
end;
end.
**************
数据模块窗体
unit gddata;
interface
uses
SysUtils, Classes, DB, ADODB;
type
TDataModule2 = class(TDataModule)
ADOConnection1: TADOConnection;
procedure DataModuleCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
DataModule2: TDataModule2;
implementation
{$R *.dfm}
end.****************
问题出现在登陆窗口的TForm2.BitBtn1Click的开始,即DataModule2.ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Password=66666;Persist Security Info=False;User ID=130001;Initial Catalog=gdkjbb;Data Source=10.20.20.21',出错提示为:
工程GDKJBB.EXE检测致电错误类Eaccessvidation.
它的连接绝对没错,出现该问题请问如何解决?
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, gddata, StdCtrls, Grids, DBGrids, DB, ADODB, Menus;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
uses gdlogin;
{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var frmlog: tform2;
begin
frmlog := tform2.Create(Application);
if frmlog.ShowModal = mrOK then self.show
else Application.Terminate;
end;
end.
登陆窗体
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, gddata, DB, ADODB, StdCtrls, Buttons;
type
TForm2 = class(TForm)
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
ADOQuery1: TADOQuery;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses gdmain;
{$R *.dfm}
procedure TForm2.BitBtn1Click(Sender: TObject);
begin
DataModule2.ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Password=66666;Persist Security Info=False;User ID=130001;Initial Catalog=gdkjbb;Data Source=10.20.20.21';
dataModule2.ADOConnection1.Connected := true;
if DataModule2.ADOConnection1.Connected then begin
****************省略
end;
end;
end.
**************
数据模块窗体
unit gddata;
interface
uses
SysUtils, Classes, DB, ADODB;
type
TDataModule2 = class(TDataModule)
ADOConnection1: TADOConnection;
procedure DataModuleCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
DataModule2: TDataModule2;
implementation
{$R *.dfm}
end.****************
问题出现在登陆窗口的TForm2.BitBtn1Click的开始,即DataModule2.ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Password=66666;Persist Security Info=False;User ID=130001;Initial Catalog=gdkjbb;Data Source=10.20.20.21',出错提示为:
工程GDKJBB.EXE检测致电错误类Eaccessvidation.
它的连接绝对没错,出现该问题请问如何解决?
解决方案 »
- 指针的问题,请指教!
- 都放分那俺也放吧——按揭祝贺小CC新婚燕尔
- 如何使用程序在Execl单元格里加入图片,Word表格里也是如此!
- 求:建立对操作系统全局唯一 Com 实例的方法
- 请SuanAddMiao(算苗)进来接分。(第三百)
- 我想实现这样的用commbox
- *******很简单的TreeView问题******-------- 送分
- 高分请教打开文件的问题
- FastReport怎么将没有记录的地方也画上格子???
- 我的机器运行一个涉及access的问题,系统提示没装dao,通过odbc访问会降低性能,怎么单独安装一个dao?
- 窗体的固定(移动)问题?
- 怎么获得delphi的源程序 在线等!立即给分!
应该不难,设置断点试试
query open时自动就打开了
联接串应没问题,如果把ADOConnection1从数据模块窗体中移到登陆窗体,再设置ADOConnection1的ConnectionString就不会出现问题。主要是为了共享ADOConnection1联接,不然也没有必要将其放在数据据块窗体。
看看窗口创建的一些信息!
如果把ADOConnection1从数据模块窗体中移到登陆窗体,再设置ADOConnection1的ConnectionString就不会出现问题的话!
那么就要考虑是否是DataModule2这个时候有没有创建了?
以下为工程文件
program gdkjbb;
uses
Forms,
gdmain in 'gdmain.pas' {Form1},
gddata in 'gddata.pas' {DataModule2: TDataModule},
gdlogin in 'gdlogin.pas' {Form2};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TDataModule2, DataModule2);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
之所以在登陆窗体设置联接属性是因为要根据登陆人员输入的操作员号、密码及服务器ip建立与服务器的连接。
Application.CreateForm(TDataModule2, DataModule2);
的时候设置连接的属性
ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Password=66666;Persist Security Info=False;User ID=130001;Initial Catalog=gdkjbb;Data Source=10.20.20.21'
try
ADOConnection1.Connected:=true;
exept
//连接失败提示
end;
Application.CreateForm(TDataModule2, DataModule2);
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
另外既然你在工程文件里已经建立里Tform2,
那在TForm1.FormCreate中又有
frmlog := tform2.Create(Application);
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TDataModule2, DataModule2);
Application.CreateForm(TForm2, Form2);
改为 :
Application.CreateForm(TDataModule2, DataModule2);
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
也可以。对了,还要问各位一个问题,怎么才能把我这300分分给大家?谢谢。