当前位置:编程学习 > VB >>

求助vb连接access!!!

最近老师布置的作业,用vb加access编一个小的东西,老是出现和access连的错误,希望有会的同学可以帮帮忙,检查一下修改一下,感激不尽!!!
这是我编的程序的连接http://download.csdn.net/source/3031901 [code=V]dim conn as new adodb.connection
dim rs as new adodb.recordset
'连接数据库
with conn
    If .State<>adstateclosed Then .Close
    .ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.path & "\数据库名.mdb;Mode=ReadWrite;Persist Security Info=False"
    .Open
End With
'查询记录
if rs.state<>adstateclosed then rs.close
rs.open "select * from 表名",conn,adopenkeyset,adlockreadonly
set mshflexgrid1.datasource=rs
rs.close
'新增记录
conn.execute "insert into 表名(...) values(...)"
'修改记录
conn.execute "update 表名 set ... where ..."
'删除记录
conn.execute "delete from 表名 where ..."[/code] 我只看了你的form1,也没有找到它b1子程序,程序主体已经修改得能用了,
其它的自己改吧,写程序要细心,而且要有耐心。
[code=V]
  Dim adocon As ADODB.Connection
  Dim adorst As ADODB.Recordset
  Dim adocom As ADODB.Command
  
Private Sub display()
  Text1.Text = cn(adorst.Fields("YD").value)
  Text2.Text = cn(adorst.Fields("YM").value)
  Text3.Text = cn(adorst.Fields("QS").value)
End Sub
Private Function cn(value As Variant) As Variant
  If IsNull(value) = True Then
    cn = ""
    Else
     cn = value
  End If
End Function

Private Sub Command1_Click(Index As Integer)
   adorst.MoveFirst
   Call display
End Sub

Private Sub Command2_Click(Index As Integer)
   adorst.MoveLast
   Call display
   
End Sub

Private Sub Command3_Click(Index As Integer)
   adorst.MovePrevious
   If adorst.BOF Then
    adorst.MoveFirst
   End If
   Call display
   
End Sub

Private Sub Command4_Click(Index As Integer)
   adorst.MoveNext
   If adorst.EOF Then
    adorst.MoveLast
   End If
   Call display
   
End Sub

Private Sub Command6_Click(Index As Integer)
 If Text1 = "" Or Text2 = "" Or Text3 = "" Then
    MsgBox "请写全数据"
    Exit Sub
 End If
  adorst.Fields("YD") = Text1.Text
  adorst.Fields("YM") = Text2.Text
  adorst.Fields("QS") = Text3.Text
  adorst.Update
  MsgBox "添加成功"
End Sub

Private Sub Command7_Click(Index As Integer)
   Dim res As Integer
   res = MsgBox("确实要删除此行记录吗?", vbExclamation + vbYesNo + vbDefaultButton2)
   If res = vbYes Then
     adorst.Delete
     adorst.MoveNext
     If adorst.EOF = True Then
       adorst.MoveLast
     End If
   End If
   Call display
   
End Sub

Private Sub Command8_Click(Index As Integer)
   Form4.Show
   Form1.Hide
End Sub

Private Sub Form_Load()
  Set adocon = New ADODB.Connection
  Set adorst = New ADODB.Recordset
  '建立连接
  adocon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\db.mdb;"
  adocon.Open
  Dim vs As String
  vs = "SELECT*FROM b1"
  adorst.Open vs, adocon, adOpenStatic, adLockOptimistic
  
End Sub

[/code] 不要分的资源,自己看看吧!
http://download.csdn.net/source/561006 如果是初学,这些对你很有用:
http://download.csdn.net/source/1644211
http://download.csdn.net/source/1498324
http://download.csdn.net/source/1483924
http://download.csdn.net/source/1371356
http://download.csdn.net/source/1627068 VB如何与ACCESS数据库连接
方法1
建立一个模块 
将工程的启动设置为 SUB MAIN 
在模块里写下面代码 
Public db As Database 
Public rs As Recordset 
Sub main() 
set db=db.opendatabase("数据库路径") (建议用相对路径--就是把数据库文件和工程文件放在同一目录下--相对路径就是APP.PATH+"数据库名带后缀") 
第一启动窗体(如:form1).show 
end sub 
以后在其他窗体中如果要调用数据库只用在窗体中写代码 
set rs=openrecordset(<可以是数据库的表--如"student",也可以是查询语句--如"select* form student">) 
这时数据库的内容都存在FILE集合里 
比方说set rs=openrecordset("select* form student") 
rs.file(0)就是SQL语句查询结果的第一列 
rs.files就是整个结果 
使用text1.text=rs.file(0)就可以把文本框于查询结果绑定起来 
如果要对数据库进行修这时用以下代码: 
db.Execute (<SQL语句--如"insert into student(sno,sname) value("","")">) 
方法2 
工程--部件--选择microsoft data bound grid control 5.0 
然后在窗体中添加左边工具栏的 DATA 和DBGRID 控件 
选择DBGRID 将属性DATASOURCE 设置为DATA控件的名字(如DATA1) 
然后选择DATA 将属性CONNECT设置为ACCESSS 2000 
设置DATABASENAME 选择数据库的存放路径 
最后设置RECORDSET 为需要连接的表的名字 
运行就可以看到 DATAGRID中显示了数据库的信息
方法3
Dim con as ADODB.Connection
Set con = New ADODB.Connection
con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb;Persist Security Info=False"
或者
Dim con as new ADODB.Connection
con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb;Persist Security Info=False"
con.open
不要忘了加引用数据库引擎 

非常感谢各位的帮助,现在我按照猴哥的改了一下,但是不能连上数据的表,不知道怎么回事,还希望大侠能再帮忙。 adocon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\db.mdb;"
的问题
不知道你的数据库是否有密码
可以用ADODC控件连通后复制里面的字符串使用 哦,是免分mark,结帖的时候记得纯mark的不要给分…… "SELECT* FROM b1" 
"SELECT* FROM 表名" VB如何与ACCESS数据库连接
方法1
建立一个模块 
将工程的启动设置为 SUB MAIN 
在模块里写下面代码 
Public db As Database 
Public rs As Recordset 
Sub main() 
set db=db.opendatabase("数据库路径") (建议用相对路径--就是把数据库文件和工程文件放在同一目录下--相对路径就是APP.PATH+"数据库名带后缀") 
第一启动窗体(如:form1).show 
end sub 
以后在其他窗体中如果要调用数据库只用在窗体中写代码 
set rs=openrecordset(<可以是数据库的表--如"student",也可以是查询语句--如"select* form student">) 
这时数据库的内容都存在FILE集合里 
比方说set rs=openrecordset("select* form student") 
rs.file(0)就是SQL语句查询结果的第一列 
rs.files就是整个结果 
使用text1.text=rs.file(0)就可以把文本框于查询结果绑定起来 
如果要对数据库进行修这时用以下代码: 
db.Execute (<SQL语句--如"insert into student(sno,sname) value("","")">) 
方法2 
工程--部件--选择microsoft data bound grid control 5.0 
然后在窗体中添加左边工具栏的 DATA 和DBGRID 控件 
选择DBGRID 将属性DATASOURCE 设置为DATA控件的名字(如DATA1) 
然后选择DATA 将属性CONNECT设置为ACCESSS 2000 
设置DATABASENAME 选择数据库的存放路径 
最后设置RECORDSET 为需要连接的表的名字 
运行就可以看到 DATAGRID中显示了数据库的信息
方法3
Dim con as ADODB.Connection
Set con = New ADODB.Connection
con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb;Persist Security Info=False"
或者
Dim con as new ADODB.Connection
con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb;Persist Security Info=False"
con.open
不要忘了加引用数据库引擎 
补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,