try
CoInitialize(nil); //加了此 。还是出错
sSql:='select * from DetRes ';
with FGAdoQuery do
begin
Close;
Connection := FADOConnect;
SQL.Clear;
SQL.Add(sSql); //只要一给ADOQ 赋SQL语句就出错 提示地址错误
//Text := sSql; //FAdoQuery 此处经常出错,为什么 ?是不是我的控件名字和系统的重复了?将控件名称换为FGAdoQuery 还出错
//Prepared;
Open;
finally
CoUninitialize;
end;但这一个过程,在同一程序中,主单元调用此过程却没有错。
//下面是此控件的生成部分
FGAdoQuery := NewQuery(FADOConnect,'FAdoQuery');
function NewQuery(FADOConnect:TADOConnection;sQName:String):TAdoQuery;
begin
Result:=TADOQuery.Create(Application);
Result.Connection:=FADOConnect;
Result.Name := sQName;
Result.SQL.Text := '';
end;
CoInitialize(nil); //加了此 。还是出错
sSql:='select * from DetRes ';
with FGAdoQuery do
begin
Close;
Connection := FADOConnect;
SQL.Clear;
SQL.Add(sSql); //只要一给ADOQ 赋SQL语句就出错 提示地址错误
//Text := sSql; //FAdoQuery 此处经常出错,为什么 ?是不是我的控件名字和系统的重复了?将控件名称换为FGAdoQuery 还出错
//Prepared;
Open;
finally
CoUninitialize;
end;但这一个过程,在同一程序中,主单元调用此过程却没有错。
//下面是此控件的生成部分
FGAdoQuery := NewQuery(FADOConnect,'FAdoQuery');
function NewQuery(FADOConnect:TADOConnection;sQName:String):TAdoQuery;
begin
Result:=TADOQuery.Create(Application);
Result.Connection:=FADOConnect;
Result.Name := sQName;
Result.SQL.Text := '';
end;
解决方案 »
- 线程使用GetMessage后.如何判断是否处于休眠
- 如何获取公网IP
- 我用的是delphi7 怎么找不到dbchart控件?
- Delphi可否做出比较完善的图文混排?
- 小2,上茶~~翠花,酸菜~~
- ado操作dbf,用query多表查询,不加上datasource和dbgird不出错,加上就提示E_FAIL状态出错,在线等
- writefil能写入16进制的数据吗?
- 谁能讲讲在DELPHI的字符串中,引号的用法!主要引号如何嵌套的详细规则!
- 一个绝对具有挑战性的问题!!高手请进!~~~~~~~~~~~
- 怎样减少程序占用的资源?
- delphi 中有类似MFC中的CFileDialog吗?
- 向各位大侠求教函数?
CoInitialize(nil); //加了此 。还是出错 //如果你用到了com或者是ActiveX的内容才使用,否则就没必要了。
sSql:='select * from DetRes ';
with FGAdoQuery do
begin
Close;
Connection := FADOConnect;
SQL.Clear;
SQL.Add(sSql); //只要一给ADOQ 赋SQL语句就出错 提示地址错误
//Text := sSql; //FAdoQuery 此处经常出错,为什么 ?是不是我的控件名字和系统的重复了?将控件名称换为FGAdoQuery 还出错
//Prepared;
Open;
finally
CoUninitialize;
end; 提示地址错误,指你没有创建就访问了,由此看出,错误不在这里。
另外一种是,你把对象释放了,指针还保留的话也会报告地址错误。
设置断点跟踪一下,看看到底是哪里错了?
整体来看,这段代码没有什么大问题。
添加一个adoconnection,并且手动先连接好试试
如果是多线程,比A线程创建的ADOQuery之类的,要给B线程用,那么CoInitialize(nil);就要改为CoInitializeEx(Nil,COINIT_MULTITHREADED);
呵呵,算是多进程,用了TTimer 组件,好多代码都在时钟控件中运行。
DTest.FGAdoQuery.SQL.Text := 'select * from detres';
DTest.FGAdoQuery.Open;
if DTest.FGAdoQuery.recordcount > 0 then
MessageBox(0, '有数据', '正常', MB_OK);
在前面一些地方还能调用啊。
没有创建吧?
begin
inherited Create(AOwner);
FConnectionObject := CreateADOObject(CLASS_Connection) as _Connection;
OleCheck(ConnectionPoint.Advise(Self as IUnknown, FConnEventsID)); << 问题出在这
FCommands := TList.Create;
LoginPrompt := True;
FIsolationLevel := ilCursorStability;
CursorLocation := clUseClient;
FKeepConnection := True;
end;