ado控件的问题

jingjingdir 2003-08-19 01:56:45
数据库连接:ado+access
ado控件:adoconnection, adoquery, datasource
初始化主窗口出现问题:04A0CA内存非法读000064内存区。去掉adoquery控件就没事了,为什么?
...全文
41 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
jingjingdir 2003-08-20
  • 打赏
  • 举报
回复
问题已经解决:因为GetSafeNum函数原先在DM单元里,后来因为逻辑关系改变放入CardData class中,引用TDM class却没有初始化。谢谢大家关注!
nhdj 2003-08-19
  • 打赏
  • 举报
回复
不要在form的create中,放到show中执行代码
jingjingdir 2003-08-19
  • 打赏
  • 举报
回复
源码:
MainForm.FormCreate:
temp := Connection.open('COM1'); //打开串口
if not temp then temp := Connection.open('COM2');
if not temp then ShowMessage('通讯端口已被占用,请关闭相应的程序');
SendCard := TSendCard.Create;

TSendCard.Create:
CardData := TCardData.Create;
DM := TDM.Create(Application); //建立DataModule单元,ADOQuery1在此建立
SafeNum := CardData.GetSafeNum; //这里涉及数据库操作


CardData.GetSafeNum:
SQLStr := 'select Safe_Unit from Control where 1=1';
with ADOQuery1 do //报错
begin
close;
SQL.Clear;
SQL.Add(SQLStr);
end;
qryConnect.Open;
if DM.ADOQuery1.Eof then Result := 0
else
Result := DM.ADOQuery1.FieldValues['Safe_Unit'];
xdzlm 2003-08-19
  • 打赏
  • 举报
回复
在TADOQuery建立前使用它了吧
tbsa 2003-08-19
  • 打赏
  • 举报
回复
在Form初始化完成后才能连接Database(即才能将AdoQuery1.Active:=True;否则设为False)。
bluemeteor 2003-08-19
  • 打赏
  • 举报
回复
active:=false;
看看它还报错么?如果不报错了帖出你的SQL和connectionString
dh9450 2003-08-19
  • 打赏
  • 举报
回复
你的系统是不是2K/XP/2003? 如果是 我也有遇到过 一般点掉以后继续F9 还是可以编译成的 并且直接执行EXE 就没这毛病
还有你在设计的时候不要吧 ADOTABLE 打开 编译的的时候也不会出现
一直不明白是怎么会事 装了最新的MDAC 也没用 关注
d983074 2003-08-19
  • 打赏
  • 举报
回复
可能是主程序在数据库控件初始化前,使用了数据库控件访问数据库
Spqk005 2003-08-19
  • 打赏
  • 举报
回复
主窗口初始化需要从数据库取数据操作
把这些贴出来看看吧
jingjingdir 2003-08-19
  • 打赏
  • 举报
回复
另外,直接连接也报错
jingjingdir 2003-08-19
  • 打赏
  • 举报
回复
问题是为什么会出内存报错的信息?
sy_315 2003-08-19
  • 打赏
  • 举报
回复
你直接就可以用adoquery实现连接的
设置好connectionstring
在sql添好语句
然后active:=true;
就ok
这些也可以杂程序中写出
jingjingdir 2003-08-19
  • 打赏
  • 举报
回复
我说得不够详细,adoquery通过adoconnection连接,因为主窗口初始化需要从数据库取数据操作。但是一旦有adoquery出现(变量声明除外)就会有内存非法报错出现,并非数据库的操作出错了。单独的测试程序纯粹数据库操作是没问题的,但是整个程序运行就报错。把出现adoquery的语句去掉一切都很好。我程序本身没有太多的内存操作,而且都很简单。我只想知道会不会是什么控件与他是冲突的?
2312 2003-08-19
  • 打赏
  • 举报
回复
你别手工设置TADOQuery的连接,使用代码实现TADOQuery的连接字符串、表、打开
jingjingdir 2003-08-19
  • 打赏
  • 举报
回复
no,不是这个问题
qiume 2003-08-19
  • 打赏
  • 举报
回复
在TADOQuery建立前使用它了吧

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧