求助(对象变量或with块变量未设置)
我是个新手,做一个dao,dbgrid绑定data,运行时说:对象变量或with块变量未设置.
下面是MDI子窗口的源码:
Option Explicit
Private seditid As String
Private smenudescription As String
Private dbprimary As Database
Private rslistdata As Recordset
Private frmmdiref As MDIForm
Public Property Get editid() As String
editid = seditid
End Property
Public Sub display(dbinput As Database, frmparent As MDIForm, sdatatype As String, smenuitemdesc As String)
Dim itemreturned As ListItem
Dim fldloop As Field
Dim i As Integer
Set dbprimary = dbinput
Set frmmdiref = frmparent
smenudescription = smenuitemdesc
Me.Caption = sdatatype
'从此处往下调试时出现以上问题,rslistdata相关的属性全不对
Set rslistdata = dbprimary.OpenRecordset("QryList" & fnremovespaces(sdatatype), dbOpenDynaset, dbSeeChanges)
rslistdata.MoveLast
rslistdata.MoveFirst
If rslistdata.RecordCount <= 1000 Then
ctlGrid.Visible = False
ctlGrid.ZOrder 1
ctlListView.ZOrder 0
ctlListView.Visible = True
Else
ctlGrid.Visible = True
ctlGrid.ZOrder 0
ctlListView.ZOrder 1
ctlListView.Visible = False
Set ctldatactrl.Recordset = rslistdata
ctldatactrl.Refresh
seditid = ctlGrid.Columns(0).Text
Exit Sub
End If
ctlListView.View = lvwReport
ctlListView.Sorted = True
For i = 1 To rslistdata.Fields.Count - 1
ctlListView.ColumnHeaders.add , "Column" & i, rslistdata.Fields(i).Name
Next i
If Not rslistdata.EOF Then
seditid = rslistdata.Fields(0)
End If
Do While Not rslistdata.EOF
Set itemreturned = ctlListView.ListItems.add(, "Item" & rslistdata.Fields(0), rslistdata.Fields(1))
For i = 2 To rslistdata.Fields.Count - 1
itemreturned.SubItems(i - 1) = rslistdata.Fields(i) & ""
Next i
rslistdata.MoveNext
Loop
End Sub
Private Function fnremovespaces(sinput As String) As String
Dim stmp As String
Dim i As Integer
For i = 1 To Len(sinput)
If Mid$(sinput, i, 1) <> "" Then
stmp = stmp & Mid$(sinput, i, 1)
End If
Next i
fnremovespaces = stmp
End Function
Private Sub ctlListView_ColumnClick(ByVal ColumnHeader As mscomctlLib.ColumnHeader)
If ctlListView.SortKey = ColumnHeader.Index - 1 Then
If ctlListView.SortOrder = lvwAscending Then
ctlListView.SortOrder = lvwDescending
Else
ctlListView.SortOrder = lvwAscending
End If
Else
ctlListView.SortOrder = lvwAscending
ctlListView.SortKey = ColumnHeader.Index - 1
End If
End Sub
Private Sub ctlListView_ItemClick(ByVal Item As mscomctlLib.ListItem)
seditid = Mid$(Item.Key, 5)
End Sub
Private Sub Form_Activate()
frmmdiref.activateeditmenu
End Sub
Private Sub form_deactivate()
frmmdiref.deactivateeditmenu
End Sub
Private Sub Form_Resize()
On Error Resume Next
ctlListView.Height = Me.ScaleHeight - (2 * ctlListView.Top)
ctlListView.Width = Me.ScaleWidth - (2 * ctlListView.Left)
ctlGrid.Height = Me.ScaleHeight - (2 * ctlGrid.Top)
ctlGrid.Width = Me.ScaleWidth - (2 * ctlGrid.Left)
End Sub
Public Sub activateeditmenu()
mnueditseparator.Visible = True
mnueditadd.Caption = "Add" & ActiveForm.menuitem
mnueditadd.Visible = True
mnueditmodify.Caption = "Modify" & ActiveForm.menuitem
mnueditmodify.Visible = True
mnueditdelete.Caption = "Delete" & ActiveForm.menuitem
mnueditdelete.Visible = True
End Sub
Public Sub deactivateeditmenu()
mnueditseparator.Visible = False
mnueditadd.Visible = False
mnueditmodify.Visible = False
mnueditdelete.Visible = False
End Sub
Private Sub Form_Unload(cancel As Integer)
frmmdiref.deactivateeditmenu
End Sub
Private Sub ctlgrid_rowcolchange(lastrow As Variant, ByVal lastcol As Integer)
seditid = ctlGrid.Columns(0).Text
End Sub
问题点数:10、回复次数:0Top




