VB6怎样获取Access数据库中的内容

不要用控件,用ADO或DAO对象

这个数据库有密码,例如主键是ID,自动编号的数值型。然后有一个日期型字段和一个数值型字段,
我想要获取到主键ID=20对应的日期型字段和数值型字段的内容

用VB6写代码该如何实现?具体一点

首先要在工程的引用中选上Microsoft ActiveX Data Objects 2.5 Library

然后在事件中就可以定义相关的变量进行连接了
下面的例子可能对您有用:

Private Sub Command1_Click()
Dim Conn As New ADODB.Connection

Dim Rs As New ADODB.Recordset
Conn.Open connstring ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & “数据库的路径和名字” & ";Persist Security Info=True;Jet OLEDB:Database Password= & "数据库密码"
sql = "Select * From “ & ”表名" & where ID=20"

Rs.Open sql, Conn, 1, 3

If NOT rs.eof then

m_date= rs("日期型字段的名字")
m_data= rs("数值型字段的名字")
end if

上面的例子实现了查询

如果是要添加,删除,更新等操作,只要编写相应的SQL语句,再用
Conn.Execute SQL 就可以了,如:
添加的:
SQL="Insert Into [UserInfo](User,Password) Values('aaaa','1234')"
Conn.Execute SQL '执行后,就添加了一条记录
删除:
SQL="Delete From [UserInfo] Where User='aaaa'"
Conn.Execute SQL '删除用户名为aaaa的用户记录
更新:
SQL="Update [UserInfo] Set Password='abcdefg' Where User='aaaa'"
Conn.Execute SQL '执行后,修改用户aaaa的密码为abcdefg

以上只是示例,在实际使用过程中,可以将一些内容用控件输入等方式进行,这样就有很大的灵活性了追问


Conn.Open connstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\newdata.mdb;Persist Security Info=True;Jet OLEDB:Database Password=123"


这一句发生错误

追答

您把:
Conn.Open connstring ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & “数据库的路径和名字” & ";Persist Security Info=True;Jet OLEDB:Database Password= & "数据库密码"

这句改为下面的两句 您再试试

connstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "数据库的路径和名字" & ";Jet OLEDB:Database password=" & "数据库密码"
Conn.Open connstring

追问

可以了,非常感谢

假设我的数据库里有十条数据,我要将它们全部都循环读取出来,存到一个数组变量中,该怎么做呢?每个字段存一个数组

追答

这要看您数据库里保存的数据的类型了。

如果都可以转换成字符串型的话

定义一个二维数组就可以了

例如:

dim m_data() as string
dim i as integer
do until rs.eof
    ReDim Preserve m_data(Rs.Fields.Count - 1, i)
    For j = 0 To Rs.Fields.Count - 1
        m_data(j, i) = IIf(IsNull(Rs.Fields(j)), "", Rs.Fields(j))
    next j
    rs.MoveNext 
    i=i+1
loop

追问

额,谢谢了。全部都是数值型

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-09

说下方法:

1、首先要与ACCESS数据库连接;

方法如下:


Sub AC()
Dim cnn As New Connection
Dim rs As New Recordset
Dim sql As String
Dim qx As String
qx = "金牛"
cnn.Open "Provider=Microsoft.Ace.OleDB.12.0;dataSource=" & ThisWorkbook.Path & "\数据库.accdb"
sql = "select * from [宏站] where 区域='"& qx & "'"
 
rs.Open sql, cnn
 
[a1].CopyFromRecordset rs
 
EndSub



这段代码为VBA中的,但差别也只[a1].CopyFromRecordset rs这句旁边 不同;因为你是VB连接,所以还得定议一个连接EXCEL的应该,如下:

2、连接EXCEL

'  在VB中要想调用Excel,需要打开VB编程环境“工程”菜单中的“引用”项目,
'并选取项目中的“Microsoft Excel 12.0 object library”项。
'    因为EXCEL是以层次结构组织对象的,其对象模型中含有许多不同的对象元素。
'    第一层:Application对象,即Excel本身;
'    第二层:workbooks对象集,指Excel的工作簿文件;
'
'    第三层:worksheets对象集,表示的是Excel的一个工作表;
'
'    第四层:Cells和Range对象,指向Excel工作表中的单元格。
Dim xlapp As Excel.Application 'Excel对象
Dim xlbook As Excel.Workbook '工作簿
Dim xlsheet As Excel.Worksheet '工作表
Dim xlrange As Excel.Range
Private Sub Command1_Click()
Set xlapp = CreateObject("excel.application") '第一层
Set xlbook = xlapp.Workbooks.Open("d:\123.xlsx")
'Set xlbook = xlapp.Workbooks.Add
xlapp.Visible = True
'xlbook.RunAutoMacros (xlAutoOpen)
Dim x As Integer
For x = 1 To xlbook.Sheets.Count
Set xlsheet = xlbook.Sheets(x)
'上面为第二层引用,而且引有了3个SHEET,如果这里只定义了SHEET2,那么下面只能用SHEET2
'如果要引用sheet1,那么第三层,如RANGE,cell等属性是用不了的
Next x
Dim arr
arr = Range("a1:b10")
MsgBox arr(10, 2)
Unload Me
End Sub



3、把在你查到的数据放回到EXCEL,就是这样了;

追问

我没要放到excel里面

追答

那就下面这种,取出来后,后面怎么操作,你要放那里你在自己补充:我把代码简化了下,容易看的懂些;

Sub AC()
Dim cnn As New Connection
Dim rs As New Recordset
Dim sql As String

cnn.Open "Provider=Microsoft.Ace.OleDB.12.0;dataSource=" & ThisWorkbook.Path & "\数据库.accdb"
sql = "select * from [宏站] "
  
rs.Open sql, cnn
  
'这里你自己补充!上面都是连接、查寻!
  
EndSub

第2个回答  2013-07-09
在VB6中添加引用Microsoft Activex Data Objects 2.6 Library或以上

第一步连接ACCESS数据库
声明变量
Dim LocCnn1 As ADODB.Connection
Dim LocRst1 As ADODB.Record
Set LocCnn1 = New ADODB.Connection
LocCnn1.Open 〃Provider=Microsoft.Jet.OLEDB.4.0?User ID=Admin?〃 & _
〃Data Source=〃 & App.Path & 〃\数据库名称.mdb?〃& _
〃Mode=Share Deny None?Extended Properties=''?Persist Security Info=False?〃 & _
〃Jet OLEDB?Database Password='密码'?〃
查询获取需要的记录
Set LocRst1 = New ADODB.Record
LocRst1.CursorType = adOpenKey
LocRst1.LockType = adLockOptimistic
LocRst1.Open 〃SELECT * FROM 表名where ID=" & ID,LocCnn1

dateRQ=LocRst1.fields("日期字段名")
intSZ=LocRst1.fields("数值字段名")

VB6中,怎样用指定时间段的组合查询,查询Access数据库?
首先,创建ADO连接和记录集对象,并确保在操作后关闭它们。代码如下:vb Private Sub Command1_Click()Dim cnn As New ADODB.Connection Dim rs As New ADODB.Recordset Set cnn = Nothing Set rs = Nothing 接着,设置数据库连接字符串。使用Provider参数指定使用Microsoft Jet OLEDB 4.0,Data Sourc...

VB6.0中datalist控件如何获得Access数据库中表的数据
例如:一个窗体中有一个ado控件,设置好链接,还需一个access数据表 表名假如是“11”要想显示表11中的哪一列数据就这样写 set datalist.recordsource= ado datalist.listfile="想要显示的列"datalist.绑定=“想要显示的列"

请问vb6 如何复制 access 表中的 当前记录,即表中增加一条相同内容的...
'假设之前已经有效建立了与数据库的连接'假设已经正确打开了ADO记录集rs'假设rs是可更新的记录集'假设rs的当前记录不为空'假设复制当前记录到ACCESS表不违反该表所有的约束和有效性规则'下面代码将复制当前记录行到其绑定的ACCESS表Dim rsTmp As ADODB.Recordset, i As IntegerSet rsTmp = rs.CloneWit...

50分求解,在VB6.0中查询Access数据库多字段并加条件查询,?
ADODC控件要设置两个属性 ConnectionString="连接到数据库的字符串",点击边上的下拉按钮就能浏览到你要的数据库,也可以直接在程序中设置。RecordSource=“要打开的数据表或者查询”然后TextBox要设置两个属性 DataSource=上面设置的那个数据控件,比如ADODC1,你把ADODC控件添加到Form中的时候,在这个属性里...

vb6里的text1怎样调用Access数据库的一个单元格记录
ado可以查询数据库,返回一个rs记录集,你遍历这个记录集,就得到第一行记录,第五列是什么列名,用rs("列名")就是值,于是text1.text=rs("列名")

高人指点vb6使用ado连接的access数据库 如何获得数据库中某列数据的最...
3、上面设置完了,直接就连接吧:a.connect (a.open ?好像是这样)反正步骤是没错,就里面的细节,我不刻记得了。查下资料就行。查资料?同样三步:1、定义变量:dim b as new 。。。(数据库表的对象是啥来的?)2、赋值: b.str... = (这又忘记了)3、打开表,b.exeit? (这个命令...

刚刚学VB6,如何读取ACCESS数据库中的某一字段
我的数据库在桌面上:名叫test Public cnn As New ADODB.Connection '这建立一个连接。Private Sub Command1_Click()Dim rst As New ADODB.Recordset Dim sql As String sql = "select * from test where ID='1'"rst.CursorLocation = adUseClient rst.Open sql, cnn, adOpenStatic, ...

VB6.0 使用Adodc控件读取Access数据库. 怎么修改数据库指定某一列的所 ...
Private Sub Command1_Click() Adodc1.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ACCESS路径名" '\/\/连接字符串,ACCESS2007以上版本不一样 Adodc1.RecordSource="Select * from 表名称" '\/\/查询表数据 Adodc1.Refreash '\/\/必须要刷新控件激活 '\/\/如果要...

VB6查询access,怎么得到查询结果共有多少条记录?
mycon1.Open "driver={Microsoft Access Driver (*.mdb)};dbq=你的数据库文件名;pwd=数据库密码"或:mycon1.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=你的数据库文件名;Jet OLEDB:Database Password=数据库密码"Set rs1.ActiveConnection = mycon1 rs1.Open "select * from 你的表"...

如何使用VB6.0中 ADO控件获取ACCESS数据库表中字段的最大值并把最大值...
Dim sql As String Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "c:\\成绩.mdb;"sql = "select * from 学生成绩表 ORDER BY 数学 DESC "Adodc1.RecordSource = sql Adodc1.Refresh Text1 = Adodc1.Recordset("数学")

相似回答