¥¥¥为什么我在FORM2中调用FORM1中的DBCOMBOX的显示内容,总是出错?¥¥¥(30分)

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

luckywzy

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟日前编写一个应用程序,用ADO2.6/DELPHI6/SQL_SERVER2000。
其中有两个FORM:FORM1和FORM2,FORM1为数据库信息录入界面,
FORM2为详细内容选择窗口,FORM2已经USE了FORM1,用FORM1的一个按钮CLICK事件
SHOW FORM2(FORM2.SHOW),在FORM2中调用FORM1的一个dbcombobox组件显示的内容时
总是系统报错。我要用它的内容作为参数在form2中进行数据筛选。
FORM2中的语句如下:temp1:=form1.dbcombobox1.field.asstring;

请各位多多赐教!
 
Form2

implementation
uses form1pas;
.....
temp1:=form1.dbcombobox1.field.value;

试试
 
上面的用法我也用过,不行!
 
不符合面向对象的规则。
 
查看一下你的Form1是否已经创建。
 
to :snappy
我是先有form1再通过form1中的一个bottom的click事件调用form2的show过程
 
出什么错?
 
我也遇到过这种问题,当时的解决方法是定义了一个全局变量,再在form2中调用这个变量。
 
错误标题:Debuger Exception Notification
内容:  Project 程序名.exe raised exception class EAccessViolation with
message 'Access violation at address 004be239 in module '程序名.exe '
Read of address 00000488'.Process stopped. Use Setupor Run to continue
选择跳过
    又出现提示
    ‘Access violation at address 004be239 in module '程序名.exe' ’.Read
of address 00000488.

真气死我了!


谢谢的指点!
 
OK!我用全局变量已经解决上面的问题了,但新的问题出来了

我在Form2中的查寻选择结果要送回到form1的DBedit组件中,又出现了上面的问题
难道又用全面变量,这样要占用不少系统资源,如是一一回收变量多时会十分麻烦!

希望一种根本上的解决之道!
 
在FORM2中调用FORM1中的变量或控件,你要保证FORM1没有被释放。
 
我没有释放FORM1
因为我在form1和form2中的dbedit组件是用同一个的adoquery和datasource的

为什么我在from2中用以下语句会提于"dataset not in insert or edit module"

dbedit1.field.value:='123';
 
出现“dataset not in insert or edit module”
是肯定的,因为你没有设置其为插入更新状态
 
TO :三石
 
  dataset not in insert or edit module的问题是因为我的数据组件
   adoquery和datasource在form1中,但我却在form2中去设定他的
   adoquery1.edit,所以总是报错,现在把他放在form1的代码行中,就OK了

   前面第一个问题我是通过全局变量来解决的,请问你有何高见?
 
建立一个数据模块放数据源,或把数据源放到一个窗口中,
直接调用Datasource.recordset操作相应字段 不要操作数据感知控件的值

dataset not in insert or edit module 是因为数据集不在编辑状态
‘Access violation at address 004be239 in module '程序名.exe' ’.Read
of address 00000488.是因为访问了非法地址,如:不存在的实例变量,(请注意变量有效范围)

 
接受答案了.
 
后退
顶部