| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2506 人关注过本帖
标题:子母窗体连接问题“实时错误,对象已打开,不允许操作!”
只看楼主 加入收藏
lijun337
Rank: 1
等 级:新手上路
帖 子:379
专家分:5
注 册:2006-4-12
收藏
得分:0 

再详细补充介绍下:

我有一个主窗体FORM1、和四个子体如下:
子体一:密码窗体FORM2、子体二:FORM3、子体三:FORM4、子体四:FORM5
Private Sub Form_Load()
Form2.Show
Form1.Hide
End Sub

子体二、三、四代码均一模一样,

这三个子体的COMMAND1控件代码如下:每个

Private Sub Command1_Click()

Unload Me
Form1.Show
End Sub

点二和四子体的COMMAND1控件来返回主体时,再进入该子体时均正常,就三不正常,出现错误提示!

还是无法解决!

2006-11-06 19:23
zhuxiaoan
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2006-6-1
收藏
得分:0 

我建议问这种跟代码有关的问题,请上传源代码,把一大把的代码放在这里,有时都没有把完整的代码写出来,,就算知道,,我也不想回答你的问题

2006-11-07 11:12
lijun337
Rank: 1
等 级:新手上路
帖 子:379
专家分:5
注 册:2006-4-12
收藏
得分:0 

高手提示:

“Unload Me,Form1.Hide之类的代码,从浅入深时,全部去掉。有深层次退回浅层时,保留。
这样一来,就不存在哪个问题了。
一般没有特意设置时,新打开的窗体总在最前面(为当前窗体,具有焦点)。所以,不用担心打开了窗体2,窗体1响应了操作。”

高手修改如下:“窗体2代码如下:

"Private Sub Command1_Click()
Unload Me
End Sub"

主窗体里的代码如下:

Private Sub Form_Load()
Form2.Show
End Sub

别的都可以不要。


但还是不行!因为:

把“Private Sub Form_Load()
Form2.Show
Form1.Hide
End Sub

改为:“ Private Sub Form_Load()
Form2.Show
End Sub

则我的FORM2密码登陆窗体就没有意义了,因为,同时密码登陆窗口和主窗体都打开了!

2006-11-07 14:06
lijun337
Rank: 1
等 级:新手上路
帖 子:379
专家分:5
注 册:2006-4-12
收藏
得分:0 

经高手指点:在 在所有Rst.CursorLocation = adUseClient之前加



If (Rst.State = adStateOpen) Then
Rst.Close
End If

我于是在我那个有问题的子窗体的FORM_LOAD()里加了这句代码如下:

Private Sub Form_Load()
...
...
Dim ConString As String
ConString = "Provider=Microsoft.Jet.OleDb.4.0;Persist Security Info = False;" _
& "Data Source =" & App.Path & "\db3.mdb"

Set Conn = CreateObject("ADODB.Connection")
With Conn
.ConnectionString = ConString
.Open
End With

If (Rst.State = adStateOpen) Then
Rst.Close
End If



Rst.CursorLocation = adUseClient
Rst.Open "Select * From 亲戚信息", Conn, adOpenKeyset, adLockPessimistic, adCmdText

Text1.Text = Rst.Fields("姓名").Value
Text2.Text = Rst.Fields("单位名称").Value
Text3.Text = Rst.Fields("办公电话").Value
Text4.Text = Rst.Fields("办公电话二").Value
Text5.Text = Rst.Fields("手机").Value
Text6.Text = Rst.Fields("手机二").Value
...
...
Text17.Text = Rst.AbsolutePosition
Text16.Text = Rst.RecordCount
End Sub


现在总算把子母体解决了!只不过,有点奇怪的是其余子体却没有加,使用倒很正常!

第二个问题:我在其中一个子窗体QQBJ里面添加了DataGrid1控件和一个Adodc1,

DataGrid1控件没有做任何设置,只是摆在了上面,没有添加任何与之相关的代码;

Adodc1属性只设置了连接属性:ConnectionString,。。。。测试连接成功!(也许有了下列语句代码的话,这个属性设置可能是多余,但为防万一,还是设置了!)

其LOAD()代码又添加了如下代码:

Private Sub Form_Load()
Dim Adoc1 As String
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db3.mdb;Persist Security Info=False"
Adodc1.CursorLocation = adUseClient
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = "select * from 亲戚信息"
Adodc1.Refresh

。。。。

执行之,从主体进入该子体时,出现提示:“[ADODC]没有指定记录源;[ADO]没有为命令对象设置命令”

但还可以执行下去,退出子体返回主体时,也出现同样提示框!


另外,DataGrid1显示出了该数据表!

尽管这个DataGrid1几乎是孤立的,没有任何与之有关的代码,没有对它的属性做任何设置!

直接在上面就可以实现修改,但刷新不了!

要到下次打开时,才实现更新!

2006-11-16 21:27
快速回复:子母窗体连接问题“实时错误,对象已打开,不允许操作!”
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015408 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved