自定义了一个类(无窗体单元),在其中声明了一个adoconnection,然后引用,出错,请大家诊断一下代码 ( 积分: 100 )

  • 主题发起人 lanchong
  • 开始时间
L

lanchong

Unregistered / Unconfirmed
GUEST, unregistred user!
类的定义:<br>type<br>&nbsp;&nbsp;Tdataconfig=class<br>&nbsp;&nbsp;myconn:tadoconnection;<br>&nbsp;&nbsp;myquery:tadoquery;<br>&nbsp;&nbsp;procedure&nbsp;dataconfig();<br>&nbsp;&nbsp;procedure&nbsp;open();<br>&nbsp;&nbsp;procedure&nbsp;close();<br>&nbsp;&nbsp;procedure&nbsp;openquery(str_sql:string);<br>&nbsp;&nbsp;procedure&nbsp;closequery();<br>&nbsp;&nbsp;procedure&nbsp;execquery(str_sql:string);<br>&nbsp;&nbsp;public<br>&nbsp;&nbsp;constructor&nbsp;create;<br>end;<br>下面引用时,在&nbsp;myconn.LoginPrompt:=false;一行出错:<br>procedure&nbsp;tdataconfig.Open();<br>const<br>&nbsp;link_str='Provider=SQLOLEDB.1;Persist&nbsp;Security&nbsp;Info=False;User&nbsp;ID=%s;Initial&nbsp;Catalog=%s;Data&nbsp;Source=%s';<br>begin<br>&nbsp;try<br>&nbsp;InitProgramMessage;<br>&nbsp;InitSystemWorkground;<br>&nbsp;myconn.LoginPrompt:=false;<br>&nbsp;myconn.Connected:=false;<br>&nbsp;myconn.ConnectionString:=Format(link_str,[RemoteDatabaseUser,RemoteDatabaseName,RemoteDatabaseServerName]);<br>&nbsp;myconn.Connected&nbsp;:=&nbsp;True;<br>&nbsp;except&nbsp;&nbsp;Application.MessageBox('远程数据库连接失败!',&nbsp;'异常',&nbsp;MB_OK&nbsp;+&nbsp;MB_ICONINFORMATION);<br>&nbsp;end;<br>end;
 
把你的create函数拿出来看看,估计没创建连接和记录集对象-&nbsp;-!
 
出什么错
 
myconn&nbsp;:=&nbsp;TAdoConnection.Create(nil);
 
myconn可能没有创建。
 
InitProgramMessage;<br>&nbsp;InitSystemWorkground;<br>if&nbsp;myconn&nbsp;=&nbsp;nil&nbsp;thtn<br>&nbsp;&nbsp;&nbsp;&nbsp;myconn:=&nbsp;TADOConnection.Create(nil);//使用前要创建<br>&nbsp;myconn.LoginPrompt:=false;<br>&nbsp;myconn.Connected:=false;<br>&nbsp;myconn.ConnectionString:=Format(link_str,[RemoteDatabaseUser,RemoteDatabaseName,RemoteDatabaseServerName]);<br>&nbsp;myconn.Connected&nbsp;:=&nbsp;True;<br>&nbsp;except&nbsp;&nbsp;Application.MessageBox('远程数据库连接失败!',&nbsp;'异常',&nbsp;MB_OK&nbsp;+&nbsp;MB_ICONINFORMATION);<br>&nbsp;end;
 
是呀,我确实没有创建myconn,赶紧试试,把它写在create函数中行吗?
 
不行,无论是加在create函数中,还是如&nbsp;dgtg0710&nbsp;给出的答案,编译时还是出access&nbsp;violation错误。
 
myconn:=&nbsp;TADOConnection.Create(nil);//使用前要创建<br>改成<br>myconn:=&nbsp;TADOConnection.Create(Application&nbsp;)
 
天哪,用application也不行。
 
呜呜,没有人能解答吗?
 
在单元末尾增加以下代码应该可以。<br><br>initialization&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;Coinitialize(nil);<br><br>finalization&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;CoUninitialize<br><br>end.
 
还是不行呀,真是急人呀。哪位大富翁能帮兄弟补一把delphi的自定义类的全面知识也好?告诉一个好的链接也行。
 
我的做法是adoconnection写在数据窗体中,公用单元USES数据窗体
 
???????????你在胡搞
 
已经解决了,加上这两句就好了。<br>myconn:=tadoconnection.Create(myconn);&nbsp;<br>myquery:=tadoquery.Create(myquery);<br>看来,flamboyant,勇者,0桁骀,bronzestar,dgtg0710,还是有经验的。
 
谢谢各位,落幕了。
 
你又在胡搞,&nbsp;Create(nil)
 
对不起,dangde,我到底错在哪儿了?你能详细解释一下吗?谢谢!
 
顶部