经高手指点:在 在所有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几乎是孤立的,没有任何与之有关的代码,没有对它的属性做任何设置!
直接在上面就可以实现修改,但刷新不了!
要到下次打开时,才实现更新!