Dim conn As ADODB.Connection
Dim rsHost As ADODB.Recordset
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\VHM.mdb"
Set conn = New ADODB.Connection
Set rsHost = New ADODB.Recordset
rsHost.CursorLocation = adUseClient
rsHost.Open "select * from WebHost", conn, adOpenDynamic, adLockOptimistic
Set DataGridHost.DataSource = rsHost
DataGridHost.Refresh
Dim rsHost As ADODB.Recordset
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\VHM.mdb"
Set conn = New ADODB.Connection
Set rsHost = New ADODB.Recordset
rsHost.CursorLocation = adUseClient
rsHost.Open "select * from WebHost", conn, adOpenDynamic, adLockOptimistic
Set DataGridHost.DataSource = rsHost
DataGridHost.Refresh
把以上的4.0改为3.5吧。
就是
conn.Open "Provider=Microsoft.Jet.OLEDB.3.5;Data Source=" & App.Path & "\VHM.mdb"
这都是datagrid的错,用低一点的版本的ADO。
用法很相似。
a: DataGridHost.Col = 1
b: DataGridHost.Row =1
c: DataGridHost.Text = "aaa"
不会报错。
rows和cols可以随时改。
我觉得比DATAGRID要好用些...
有什么表?表名是什么?
你可以换一下表名。不有用user等做表名!
能否说得详细一些,谢谢!
b: DataGridHost.Row =2
c: DataGridHost.Text = "aaa"
还是不行!!!!!!!!!!!!!!!!!!!!!!!!!!!!错误信息:
实时错误 “7005”
行设置不可用
Private Sub Form_Load ()
MSFlexGrid1.Rows = 8 ' 设置行数和列数。
MSFlexGrid1.Cols = 5
End SubPrivate Sub MSFlexGrid1_Click ()
' 将文本放到当前单元中。
MSFlexGrid1.Text = "Here"
'将文本放到第三行,第三列。
MSFlexGrid1.Col = 2
MSFlexGrid1.Row = 2
MSFlexGrid1.Text = "There"
End Sub
谢谢了。可是microsoft Flexgrid control 是二维表。而我需要的是一维表格。怎样设置为一维表
行了。我将microsoft Flexgrid control 改为一维表。但是总感觉功能不如DataGrid强。难道DataGrid就真的不行吗?
我觉得代码没什么问题,参考Cooly(准备失业的苦力) 的就可以了。
建议1:建一个简单点的数据库,你用adodc数据控件绑定,测试一下datagrid有问题吗?
建议2:你去下载vb的sp5,试试看(不过在我没有sp5的时候也没有类似的 问题啊!)
Dim conn As ADODB.Connection
Dim rst As ADODB.RecordsetSet conn = New ADODB.Connection
Set rst = New ADODB.Recordset
conn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=test;Data Source=SERVER"
conn.Open , "sa"rst.CursorLocation = adUseClientrst.Open "select * from table1", conn, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = rstEnd Sub
On Error Resume NextAdodc1.Recordset.AbsolutePage = Adodc1.Recordset.AbsolutePage - 1
cur_Page = Adodc1.Recordset.AbsolutePageMSFlexGrid1.Clear
MSFlexGrid1.Rows = myPageSize + 1
MSFlexGrid1.Cols = Adodc1.Recordset.Fields.Count
For i = 0 To Adodc1.Recordset.Fields.Count - 1
MSFlexGrid1.TextMatrix(0, i) = Adodc1.Recordset.Fields(i).Name
NextFor j = 1 To myPageSize
For i = 0 To Adodc1.Recordset.Fields.Count - 1
MSFlexGrid1.TextMatrix(j, i) = Adodc1.Recordset.Fields(i).Value
Adodc1.Recordset.MoveNext
Next
Next
Adodc1.Recordset.AbsolutePage = cur_PageEnd SubPrivate Sub Command2_Click()
On Error Resume NextAdodc1.Recordset.AbsolutePage = Adodc1.Recordset.AbsolutePage + 1
cur_Page = Adodc1.Recordset.AbsolutePageMSFlexGrid1.Clear
MSFlexGrid1.Rows = myPageSize + 1
MSFlexGrid1.Cols = Adodc1.Recordset.Fields.CountFor i = 0 To Adodc1.Recordset.Fields.Count - 1
MSFlexGrid1.TextMatrix(0, i) = Adodc1.Recordset.Fields(i).Name
NextFor j = 1 To myPageSize
For i = 0 To Adodc1.Recordset.Fields.Count - 1
MSFlexGrid1.TextMatrix(j, i) = Adodc1.Recordset.Fields(i).Value
Adodc1.Recordset.MoveNext
Next
NextAdodc1.Recordset.AbsolutePage = cur_Page
End SubPrivate Sub Form_Load()
On Error Resume Next
myPageSize = 4cur_Page = 1Adodc1.CommandType = adCmdText
Adodc1.RecordSource = "select * from test"
Adodc1.Refresh
Adodc1.Recordset.PageSize = myPageSizeMSFlexGrid1.Rows = myPageSize + 1
MSFlexGrid1.Cols = Adodc1.Recordset.Fields.CountFor i = 0 To Adodc1.Recordset.Fields.Count - 1
MSFlexGrid1.TextMatrix(0, i) = Adodc1.Recordset.Fields(i).Name
NextFor j = 1 To myPageSize
For i = 0 To Adodc1.Recordset.Fields.Count - 1
MSFlexGrid1.TextMatrix(j, i) = Adodc1.Recordset.Fields(i).Value
Adodc1.Recordset.MoveNext
Next
NextAdodc1.Recordset.AbsolutePage = cur_PageEnd Sub
Private Sub DataGrid1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
DataGrid1.Row = DataGrid1.RowContaining(Y)
MsgBox DataGrid1.Columns(0).Text
End SubPrivate Sub Form_Load()
Adodc1.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=test;Data Source=SERVER"
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = "select * from test"
Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1
DataGrid1.AllowUpdate = False
End Sub
b: DataGridHost.Row =1
c: DataGridHost.Text = "aaa"因为DataGrid控件如果没有与数据源绑定,或者指定的行,列不存在,都是无法进行赋值的。
如果需要实现这样的功能,建议使用MSFlexGrid。