用VBA连接ACCESS数据库不显示,该怎么解决
用VBA连接ACCESS数据库不显示
各位好,我是VBA初学者,有个问题想请教一下:
我用VBA连接ACCESS2007数据库,想用MSHflexgrid显示,但是显示不出来,也没有报错,下面是我的代码,哪位高手帮我看看,不胜感激
Public conn As ADODB.Connection
Public rssearch As ADODB.RecordSet
Private Sub search_Click()
Dim mydata As String, mytable As String
Dim strSQL As String
Set rssearch = New ADODB.RecordSet
mydata = "D:\分析\煤制油.accdb"
mytable = "各省指标量"
strSQL = "select* from 各省指标量"
Set conn = New ADODB.Connection
With conn
.Provider = "microsoft.ACE.oledb.12.0"
.Open mydata
End With
rssearch.CursorLocation = adUseClient
rssearch.LockType = adLockOptimistic
rssearch.ActiveConnection = conn
Set rssearch = conn.Execute(strSQL)
End Sub
Private Sub show_Click()
Set results.rs = rssearch
results.show vbModal
End Sub
Public rs As ADODB.RecordSet
Private Sub results_activate()
Dim i As Integer
Dim j As Integer
MSHFlexGrid1.Clear
MSHFlexGrid1.Rows = rs.RecordCount + 1
MSHFlexGrid1.Cols = rs.Fields.Count
For j = 0 To rs.Fields.Count - 1
MSHFlexGrid1.TextMatrix(0, j) = rs.Fields(j).Name
MSHFlexGrid1.ColWidth(j) = 1.5 * textwidth(rs.Fields(j).Name)
Next j
For i = 0 To rs.RecordCount - 1
For j = 0 To rs.Fields.Count - 1
If Not IsNull(rs.Fields(j).Value) Then
MSHFlexGrid1.TextMatrix(i + 1, j) = rs.Fields(j).Value
End If
Next j
rs.MoveNext
Next i
End Sub
------解决方案--------------------
各位好,我是VBA初学者,有个问题想请教一下:
我用VBA连接ACCESS2007数据库,想用MSHflexgrid显示,但是显示不出来,也没有报错,下面是我的代码,哪位高手帮我看看,不胜感激
Public conn As ADODB.Connection
Public rssearch As ADODB.RecordSet
Private Sub search_Click()
Dim mydata As String, mytable As String
Dim strSQL As String
Set rssearch = New ADODB.RecordSet
mydata = "D:\分析\煤制油.accdb"
mytable = "各省指标量"
strSQL = "select* from 各省指标量"
Set conn = New ADODB.Connection
With conn
.Provider = "microsoft.ACE.oledb.12.0"
.Open mydata
End With
rssearch.CursorLocation = adUseClient
rssearch.LockType = adLockOptimistic
rssearch.ActiveConnection = conn
Set rssearch = conn.Execute(strSQL)
End Sub
Private Sub show_Click()
Set results.rs = rssearch
results.show vbModal
End Sub
Public rs As ADODB.RecordSet
Private Sub results_activate()
Dim i As Integer
Dim j As Integer
MSHFlexGrid1.Clear
MSHFlexGrid1.Rows = rs.RecordCount + 1
MSHFlexGrid1.Cols = rs.Fields.Count
For j = 0 To rs.Fields.Count - 1
MSHFlexGrid1.TextMatrix(0, j) = rs.Fields(j).Name
MSHFlexGrid1.ColWidth(j) = 1.5 * textwidth(rs.Fields(j).Name)
Next j
For i = 0 To rs.RecordCount - 1
For j = 0 To rs.Fields.Count - 1
If Not IsNull(rs.Fields(j).Value) Then
MSHFlexGrid1.TextMatrix(i + 1, j) = rs.Fields(j).Value
End If
Next j
rs.MoveNext
Next i
End Sub
------解决方案--------------------
- VB code
'这样试试 Private Sub search_Click() Dim mydata As String, mytable As String Dim strSQL As String Set rssearch = New ADODB.RecordSet mydata = "D:\分析\煤制油.accdb" mytable = "各省指标量" strSQL = "select* from 各省指标量" Set conn = New ADODB.Connection With conn .Provider = "microsoft.ACE.oledb.12.0" .Open mydata End With rssearch.CursorLocation = adUseClient if rssearch.state<>adstateclosed then rssearch.close rssearch.open strsql,conn,adopenkeyset,adlockreadonly set mshflexgrid1.datasource=rssearch rssearch.close End Sub
------解决方案--------------------
检查数据库表中是否有记录
------解决方案--------------------
单步跟一下,尤其是在 MSHFlexGrid1.TextMatrix(i + 1, j) = rs.Fields(j).Value 这里,看看有没有内容被取出来, 如果没有,则看看前面数据库连接设置对不对,然后看看数据库字段的名称、属性看看有没有不对的;如果上面一句有数据,而电子表格里面没显示,那就重点检查电子表格的属性设置吧。
总之,帮楼主顶一下~~~