| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 948 人关注过本帖, 2 人收藏
标题:求用VB连接access数据库,能进行添加、修改、删除信息完整版编程
只看楼主 加入收藏
qgh603
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2012-11-22
结帖率:75%
收藏(2)
已结贴  问题点数:20 回复次数:8 
求用VB连接access数据库,能进行添加、修改、删除信息完整版编程
  我目前需要编写一个业务员订单的小程序,用access数据库,VB语言编程,需要能实现添加、修改、删除的功能,最好能输出来。求一个程序,研究后根据实际自行编写,有问题再请教高手们。真心希望能得到各位老师的帮助,谢谢啦!
搜索更多相关主题的帖子: access 语言编程 完整版 最好 
2012-11-27 13:25
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:5 
你先用 VB6 自带的 数据窗体向导,生成一个数据窗体研究再说吧。

那个包含你所说的 全部的基本功能,不包含 输出功能而以。

授人于鱼,不如授人于渔
早已停用QQ了
2012-11-27 15:03
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:325
专家分:435
注 册:2012-1-29
收藏
得分:5 
我没上过编程的课,我都是自己买书看,在网上找资料学,在自己的电脑上瞎整,慢慢的,普通的都能整起来了!

学习--------------学习-------------------学习--------------------!!
2012-11-27 17:02
ntfanl
Rank: 2
等 级:论坛游民
帖 子:2
专家分:10
注 册:2012-11-28
收藏
得分:10 
Dim mConn As Connection
Dim mRst As Recordset 'Recordset 对象
Dim objRst As Recordset 'Recordset 对象

打开access数据库:
    Set mConn = CreateObject("ADODB.Connection")
    mConn.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _
        & "c:\test.mdb" & ";;Jet OLEDB:Database password=12345678"
    mConn.Open '打开数据库
    Set mRst = CreateObject("ADODB.RecordSet")
    mSql = "SELECT * FROM table"    '其中table为access数据库中的表的名称,下同
    Set mRst = mConn.Execute(mSql)

添加数据:        
    Set objRst = CreateObject("ADODB.RecordSet")
    mSql = "INSERT INTO table (Name,age) VALUES ('张三'," &25  & ")"'其中Name,age为表中的字段名,values后面是所需赋的值,注意字符串变量赋值要用单引号括起来。
    Set objRst = objConn.Execute(mSql)


删除数据:
    Set objRst = CreateObject("ADODB.RecordSet")
    mSql = "DELETE FROM table where " & "ID=" & mID
    Set objRst = objConn.Execute(mSql)

更新数据:
    Set objRst = CreateObject("ADODB.RecordSet")
    mSql = "UPDATE PSW SET NAME='张三'" & ", age=" & 25 & " WHERE ID=" & mId
    Set objRst = objConn.Execute(mSql)
2012-11-28 15:34
qgh603
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2012-11-22
收藏
得分:0 
4楼楼主,非常感谢你的热情。但我想用的是在界面输入点击确认键后,数据就可以直接保存到数据库中,也需要通过界面进行查询啊。还有我现在用datagrid显示查询结果也出了点问题不知道为什么?程序运行时,datagrid就将数据库数据显示出来了,并且不是在第一行出现的,点击查询,就会在第一行出现查询的结果啊,不知道为什么?能给予帮助吗?谢谢各位老师了啊
2012-11-30 08:44
zzq70
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-12-3
收藏
得分:0 
新人,不懂,帮顶
2012-12-05 15:43
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:325
专家分:435
注 册:2012-1-29
收藏
得分:0 
理解自学者的困难,我也是这么走过来的,我知道你的想法,我给一段代码,我也是慢慢的摸索出来的,你自己研究一下吧!
窗体添加控件,text1,text2,command6个分别是(查询,刷新,添加,修改,删除,退出)一个MSHFlexGrid1
我用的是ACCESS2007版的,所以如果你用2003版的就要修改provider=microsoft.ace.oledb.12.0这一句,自己查一下资料
希望我自己用来研究用的代码对你的学习有所帮助!
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As String
Private Sub Command1_Click()'查询
  If Text1.Text = "" Then
    MsgBox "请您输入查询条件", 32, "系统"
    Text1.SetFocus
    Exit Sub
    Else
    If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close
   cn.Open "provider=microsoft.ace.oledb.12.0;Data Source=" & App.Path & "\数据库名.accdb;Jet OLEDB:Database Password=1;"
    sql = "select * from 表名 where  表字段 = '" & Trim(Text1.Text) & "'"
    rs.Open sql, cn, 3, 3
   If rs.RecordCount = 0 Then
     MsgBox "无此记录,请重新输入!", 32, "系统"
    Else
    Set MSHFlexGrid1.DataSource = rs
   End If
 End If
 If cn.State = adStateOpen Then cn.Close
 If rs.State = adStateOpen Then rs.Close
End Sub

Private Sub Command2_Click()'刷新
   Call Form_Load
   If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close
   cn.Open "provider=microsoft.ace.oledb.12.0;Data Source=" & App.Path & "\数据库名.accdb;Jet OLEDB:Database Password=1;"
    sql = "select * from 表名 "
    rs.Open sql, cn, 3, 3
    If rs.RecordCount > 0 Then
       Set MSHFlexGrid1.DataSource = rs
    End If
    If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close
   Text1.Text = ""
   Text2.Text = ""
   Text1.SetFocus
End Sub
Private Sub Command3_Click()'添加
If Text1.Text = "" Then
     MsgBox "请输入名称!", 32, "系统"
     Text1.SetFocus
     Exit Sub
End If
    If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close
   cn.Open "provider=microsoft.ace.oledb.12.0;Data Source=" & App.Path & "\数据库名.accdb;Jet OLEDB:Database Password=1;"
    sql = "select * from 表名 where  字段名 = '" & Trim(Text1.Text) & "'"
    rs.Open sql, cn, 3, 3
  If rs.RecordCount > 0 Then
     MsgBox "已有此记录,请重新输入!", 32, "系统"
     If cn.State = adStateOpen Then cn.Close
     If rs.State = adStateOpen Then rs.Close
  Exit Sub
  Else
    rs.AddNew
    rs.Fields("字段名") = Trim(Text1.Text)
    rs.Update
    MsgBox "数据保存成功!", , "系统提示"
    If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close
   cn.Open "provider=microsoft.ace.oledb.12.0;Data Source=" & App.Path & "\数据库名.accdb;Jet OLEDB:Database Password=1;"
    sql = "select * from 表名"
    rs.Open sql, cn, 3, 3
    If rs.RecordCount > 0 Then
       Set MSHFlexGrid1.DataSource = rs
    End If
    End If
    Text1.Text = ""
    Text2.Text = ""
    Text1.SetFocus
    If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close
End Sub
Private Sub Command4_Click()'删除
If Text1.Text = "" Then
  MsgBox "无此记录!", , "系统提示"
  Text1.SetFocus
  Exit Sub
  End If
If Text1.Text <> "" Then
   If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close
   cn.Open "provider=microsoft.ace.oledb.12.0;Data Source=" & App.Path & "\数据库名.accdb;Jet OLEDB:Database Password=1;"
    sql = "select * from 表名 where  字段名 = '" & Trim(Text1.Text) & "'"
    rs.Open sql, cn, 3, 3
 If rs.RecordCount > 0 Then
   ml = MsgBox("确定删除此记录吗?", vbYesNo, "系统")
  If ml = vbYes Then
   rs.Delete
   End If
    MsgBox "删除成功!", , "系统提示"
    If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close
   cn.Open "provider=microsoft.ace.oledb.12.0;Data Source=" & App.Path & "\数据库名.accdb;Jet OLEDB:Database Password=1;"
    sql = "select * from 表名"
    rs.Open sql, cn, 3, 3
    If rs.RecordCount > 0 Then
    Set MSHFlexGrid1.DataSource = rs
    End If
    Text1.Text = ""
    Text2.Text = ""
    Text1.SetFocus
   End If
   Else
   MsgBox "无此记录!", , "系统提示"
   End If
   If cn.State = adStateOpen Then cn.Close
   If rs.State = adStateOpen Then rs.Close
End Sub
Private Sub Command5_Click()'退出
Unload Me
End Sub

Private Sub Command6_Click()'修改
Dim a
Dim b
If Text1.Text = "" Then
     MsgBox "请输入原类型名称!", 32, "系统"
     Text1.SetFocus
     Exit Sub
End If
If Text2.Text = "" Then
     MsgBox "请输入新类型名称!", 32, "系统"
     Text2.SetFocus
     Exit Sub
End If
    If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close
   cn.Open "provider=microsoft.ace.oledb.12.0;Data Source=" & App.Path & "\数据库名.accdb;Jet OLEDB:Database Password=1;"
    sql = "select " & Text1.Text & " from 表名 "
    rs.Open sql, cn, 3, 3
'==========================
'循环对比是否已有记录
         a = Trim(Text1.Text)
         b = Trim(Text2.Text)
If rs.EOF And rs.BOF Then'如果没有任何记录直接新建添加一个记录
                    rs.AddNew
                    rs.Fields(a) = b
                    rs.Update
                   MsgBox "添加成功!", , "系统提示"
                   GoTo X
       Else
      Do While Not rs.EOF
         If Text1.Text = rs.Fields(a) Then
            rs.Fields(a) = b
            rs.Update
            a = 1    '设置一个变量标记是否从循环退出
            MsgBox "修改成功!", , "系统提示"
            Exit Do
            Else
             If Len(rs.Fields(a) & "") = 0 Then
                 rs.Fields(a) = b
                 rs.Update
                 a = 1
                 Exit Do
              End If
         End If
            rs.MoveNext
      Loop
      If a = 1 Then   '如果存循环退出的
         GoTo X      '结束
         End If
End If
'==================================================
X:
    If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close
   cn.Open "provider=microsoft.ace.oledb.12.0;Data Source=" & App.Path & "\数据库名.accdb;Jet OLEDB:Database Password=1;"
    sql = "select " & Text1.Text & " from 表名 "
    rs.Open sql, cn, 3, 3
    If rs.RecordCount > 0 Then
       Set MSHFlexGrid1.DataSource = rs
    End If
If cn.State = adStateOpen Then cn.Close
If rs.State = adStateOpen Then rs.Close
Text1.Text = ""
Text2.Text = ""
Text1.SetFocus
End Sub

Private Sub Form_Load()
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
   If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close
   cn.Open "provider=microsoft.ace.oledb.12.0;Data Source=" & App.Path & "\数据库名.accdb;Jet OLEDB:Database Password=1;"
    sql = "select * from 表名 "
    rs.Open sql, cn, 3, 3
    If rs.RecordCount > 0 Then
       Set MSHFlexGrid1.DataSource = rs
    End If
    If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close
End Sub
Private Sub Form_Unload(Cancel As Integer)
Unload Me
End Sub
Private Sub MSHFlexGrid1_Click()'点击表格,将单元格内容添加到text1中
  Dim J As Integer
  J = MSHFlexGrid1.MouseRow
  If MSHFlexGrid1.Text = "" Then Exit Sub
'==================================
  Text1.Text = MSHFlexGrid1.TextMatrix(J, 0)
End Sub



[ 本帖最后由 wxflw 于 2012-12-9 10:00 编辑 ]

学习--------------学习-------------------学习--------------------!!
2012-12-09 09:50
想入菲菲
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-5-15
收藏
得分:0 
rs.Open sql, cn, 3, 3            这句话是什么意思啊?网上的说法看不懂。新手,求指教。
2013-05-15 18:21
日光之上
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-7-17
收藏
得分:0 
新人乍到,学习中...
2013-07-17 19:50
快速回复:求用VB连接access数据库,能进行添加、修改、删除信息完整版编程
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034883 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved