请教vb问题
你好,我想实现在vb里调用Access的数据并显示出来,您能帮帮我吗?求代码。另:用MSFlexGrid控件能显示吗?我不知道怎么连,可以详细说一下吗?或发个代码...
你好,我想实现在vb里调用Access的数据并显示出来,您能帮帮我吗?求代码。另:用MSFlexGrid控件能显示吗?
我不知道怎么连,可以详细说一下吗?或发个代码 展开
我不知道怎么连,可以详细说一下吗?或发个代码 展开
2个回答
展开全部
用VB连接Access数据库就可以了。
可以在MSFlexGrid这个控件中显示数据。
在VB2008中,
先定义一个数据库连接,用于连接数据库,这个连接可能用的地方比较多,因此,可以定义为公开变量:
Public sjkConnect As New ADODB.Connection
再定义一个记录集,用于操作数据,可以定义为局部或公开变量:
Public sjRs As New ADODB.Recordset
还需要定义相关的数据表和适配器,作为可操作的记录集与数据库之间的桥梁:
Public myTb As New DataTable
Public myDa As New OleDb.OleDbDataAdapter
然后,确定所要连接的数据库,语法是这样的:
sjkConnect.Provider = "microsoft.jet.oledb.4.0"
sjkConnect.ConnectionString = "data source=" & Application.StartupPath & "\data\mydb.mdb ; Jet oledb:database "
其中data source=指定所要打开的数据库文件,Application.StartupPath这个是指程序所在目录,
\data\mydb.mdb这个是数据库文件,可以根据你的情况修改。
然后,就可以打开数据连接了:
sjkConnect.Open()
然后可以打开其中的数据表,用表中的数据作为记录集:
sjRs.CursorLocation = 3
sjRs.Open(" select * from XXXX order by XXXX", sjkConnect, 2, 1)
其中select * from XXXX order by XXXX是一句sql语句,根据你的需要修改。
还可以把记录集通过适配器转到数据表中,然后作为控件的数据源显示出来
myTb = New DataTable
myDa.Fill(myTb, sjRs)
datagridview1.DataSource = myTb
这里用的是datagridview控件,使用MSFlexGrid控件应该也差不多。
可以在MSFlexGrid这个控件中显示数据。
在VB2008中,
先定义一个数据库连接,用于连接数据库,这个连接可能用的地方比较多,因此,可以定义为公开变量:
Public sjkConnect As New ADODB.Connection
再定义一个记录集,用于操作数据,可以定义为局部或公开变量:
Public sjRs As New ADODB.Recordset
还需要定义相关的数据表和适配器,作为可操作的记录集与数据库之间的桥梁:
Public myTb As New DataTable
Public myDa As New OleDb.OleDbDataAdapter
然后,确定所要连接的数据库,语法是这样的:
sjkConnect.Provider = "microsoft.jet.oledb.4.0"
sjkConnect.ConnectionString = "data source=" & Application.StartupPath & "\data\mydb.mdb ; Jet oledb:database "
其中data source=指定所要打开的数据库文件,Application.StartupPath这个是指程序所在目录,
\data\mydb.mdb这个是数据库文件,可以根据你的情况修改。
然后,就可以打开数据连接了:
sjkConnect.Open()
然后可以打开其中的数据表,用表中的数据作为记录集:
sjRs.CursorLocation = 3
sjRs.Open(" select * from XXXX order by XXXX", sjkConnect, 2, 1)
其中select * from XXXX order by XXXX是一句sql语句,根据你的需要修改。
还可以把记录集通过适配器转到数据表中,然后作为控件的数据源显示出来
myTb = New DataTable
myDa.Fill(myTb, sjRs)
datagridview1.DataSource = myTb
这里用的是datagridview控件,使用MSFlexGrid控件应该也差不多。
展开全部
astr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\xxx.mdb;Mode=ReadWrite;Persist Security Info=False"
cn.Open astr
SqlStr = "Select * From 盘点表"
rst.CursorLocation = adUseClient
rst.Open SqlStr, cn, 1, 3 '打开记录集
If rst.EOF = True Then
MsgBox "找不到盘点记录"
rst.Close
cn.Close
Else
Set MSHFlexGrid1.DataSource = rst
c = 0
For o = 1 To rst.RecordCount
MSHFlexGrid1.TextMatrix(o, 0) = o
c = c + MSHFlexGrid1.TextMatrix(o, 6)
Next o
MSHFlexGrid1.Rows = MSHFlexGrid1.Rows + 1
t = rst.RecordCount + 1
MSHFlexGrid1.TextMatrix(0, 0) = "序号"
MSHFlexGrid1.TextMatrix(t, 6) = c
MSHFlexGrid1.TextMatrix(t, 5) = "合计:"
Set rst = Nothing
Set cn = Nothing
With MSHFlexGrid1
.ColWidth(0) = 500
.ColWidth(1) = 0
.ColWidth(2) = 800
.ColWidth(3) = 1500
.ColWidth(4) = 800
.ColWidth(5) = 800
.ColWidth(6) = 800
.ColWidth(7) = 0
.ColWidth(8) = 3500
.ColWidth(9) = 1500
.ColWidth(10) = 800
.ColWidth(11) = 1000
End With
End If
我写的程序代码给你参考下,包含了排序,增加一行显示合计,调整网格大小
cn.Open astr
SqlStr = "Select * From 盘点表"
rst.CursorLocation = adUseClient
rst.Open SqlStr, cn, 1, 3 '打开记录集
If rst.EOF = True Then
MsgBox "找不到盘点记录"
rst.Close
cn.Close
Else
Set MSHFlexGrid1.DataSource = rst
c = 0
For o = 1 To rst.RecordCount
MSHFlexGrid1.TextMatrix(o, 0) = o
c = c + MSHFlexGrid1.TextMatrix(o, 6)
Next o
MSHFlexGrid1.Rows = MSHFlexGrid1.Rows + 1
t = rst.RecordCount + 1
MSHFlexGrid1.TextMatrix(0, 0) = "序号"
MSHFlexGrid1.TextMatrix(t, 6) = c
MSHFlexGrid1.TextMatrix(t, 5) = "合计:"
Set rst = Nothing
Set cn = Nothing
With MSHFlexGrid1
.ColWidth(0) = 500
.ColWidth(1) = 0
.ColWidth(2) = 800
.ColWidth(3) = 1500
.ColWidth(4) = 800
.ColWidth(5) = 800
.ColWidth(6) = 800
.ColWidth(7) = 0
.ColWidth(8) = 3500
.ColWidth(9) = 1500
.ColWidth(10) = 800
.ColWidth(11) = 1000
End With
End If
我写的程序代码给你参考下,包含了排序,增加一行显示合计,调整网格大小
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询