PLM之家PLMHome-工业软件践行者

[原创] vb操作access数据库

[复制链接]

2016-12-11 15:03:17 2690 0

8

主题

10

回帖

146

积分

注册会员

积分
146
QQ
发表于 2016-12-11 15:03:17 | 显示全部楼层 |阅读模式

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
c# c++ vb 是可以互相调用的
0 p( V5 z% |' ]( h  k4 o) a9 ]! s& H+ b4 V
vb操作access数据库 的方法
3 i# h) F3 C5 e; a9 x; h- v1 V; I6 u: ?4 x4 k0 P4 c8 ~0 R2 N, D' B
首先要安装  Office2003sp2 3 X3 R0 j5 n+ ]9 l: _) ~* h6 T

- Y5 a8 m) P3 k4 b% L* o6 Z# X  c列子:读写数据库(.mdb)2 R" B4 s- b. C* c' w5 [7 }1 j
$ S9 a0 ~# T+ _) K
1.创建 mdb
- ~) A( T0 j% B# |. w$ Z. y开始->所有程序->Office2003->Access 2003  新建一个空数据库 保存位置C:\report.mdb  " G4 C; S+ M$ f9 x
创建一个表格 并重新命名为test          (操作和Excel类似)! ~& y& v% D" J; m! B

+ _1 i1 ]3 m; Q$ T( W6 e注意 表格名称 和源代码要对应
4 ~3 G& [  f+ {; ~( k  W+ S" X8 _" n+ `( F( z+ I: a

4 `' ]3 A" e  V) B8 q2.注册数据源(代码中已经注册)和写代码2 ?8 L6 z8 N8 V( d1 t* ]: z' f

" Y5 A. D3 f1 n1 D5 {0 Q$ Q$ T  t! `# p4 R0 O2 W
在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,9 ~/ x) A8 o1 R+ l0 D, U/ a
我们必须点击菜单中的【工程】-【部件】,
6 j2 t/ g/ ?0 c8 m% c0 `' y) ~; {在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和
, l+ v; p+ s- _  o5 N8 p2 z“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,) }6 L7 {5 ?) j, k5 a& a6 d
最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
; R& v* Y! R# i5 s: ]
  u3 e: j+ U$ O( ?- {6 l5 N$ d
$ t8 v  N, V3 a! V6 [$ v5 ~添加4个文本控件  Text1 和 Text2  和 Text3 和 Text4
& e+ W  k% k! ?: ~添加一个按钮 ID修改成 “保存” " h* }* N, S) n( y6 q
添加一个 List10 K& Z# u) Y, ^
3 J% r; J2 M- [( ^- ]# @
代码如下9 o2 x9 [' ]  F& H* Z5 {

9 ^, Y2 u# T8 i5 }* V) o
2 P* i3 X) q1 V0 i, O1 gPublic conn As New ADODB.Connection     '标记连接对象- @7 f2 W' w9 x! X1 f. M
Dim sql As String
+ @% i! {; z& MDim rs_maxcut As New ADODB.Recordset; x) f0 [- u$ I  }) u
Dim str As String
  I& Y5 L9 K4 ]% v" N' sDim aa As Double, bb As Double4 N8 w; t& |- d( A4 l8 K# ^' X. j
Dim mbd As String! M# N. N5 n* C: ^5 I: ^- ^
Dim 总页数 As Integer, 行数 As Integer, 列数 As Integer
# W8 a  i$ W- z/ g. N- u) k& ZDim 内容(999, 999) As Double4 b) Q. k0 B4 t: O+ |+ `

0 T. a- i4 c) Z0 w! Q5 dPublic Function cnn() As String
, x( d/ Z0 C  e- g% w- Q) n% k9 N$ L6 g    cnn = "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & "ersist Security Info=True;Jet OLEDBatabase Password=123"- V# V# o1 d- z! T0 {) V
End Function
. e1 e9 m# O" {8 J# m  @9 u/ {. x0 w
Private Sub 保存_Click()
  O6 P& _6 y. J# [! D) r% ^" A
1 A8 A5 p* v' G3 s# r/ O5 _ writeDatabase  ?4 [; k7 Y: B" I" `  H+ _
    End9 r% }4 ?+ r( K4 \  F
End Sub
" _8 Y2 K; V8 n  I
. y& O2 g: y/ j( @Private Sub Form_Load()
8 J! `, o& e, S4 a6 B" k- ^% R
, S+ Y( ^0 W4 |& }8 Q. F, m mbd = "D:\UG_OPEN\ini\数据库.mdb"
$ [2 i+ u: L7 }: D; _- _+ `* Q- {, A! p  B+ }9 K
    conn.Open cnn '连接数据库% n, {6 _; r7 X* G
    readdatabase2 V( m2 ^* Y1 F0 N5 f8 {, A
    Me.Text1.Text = "行数" & 行数* C+ F3 S6 y& T9 _' }
    Me.Text2.Text = "列数" & 列数
' c2 \5 v/ [  \4 o5 _Me.Text3.Text = aa
* A& M, i- p) N9 I% wMe.Text4.Text = bb
8 X3 f, c; u, _) bEnd Sub- Y# g8 ~/ e) L) C7 j* J
& _+ K9 G2 l  x4 g6 ^
Public Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)0 e- A# y2 p9 w
    Dim i As Long+ N1 |7 ~0 |+ b0 O7 S+ z% r
    sql = "select * from test"! w0 e8 k, C( |
    rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集6 A0 y3 M2 M6 d# L8 |
8 w5 b% `7 c& C5 V

/ f/ g* i2 G' [1 W. _总页数 = rs_maxcut.PageCount  '页大小rs_maxcut.PageSize
3 c0 {% M$ v. L* F1 m5 H行数 = rs_maxcut.RecordCount  '行数 (排除标题)
" N* a) I$ I$ i7 F列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)) Y4 y+ \7 R  G% j

8 m# O5 i/ G* ]  c5 l7 I    If rs_maxcut.EOF = False Then
, k# a  C$ G4 u7 Z7 W        i = 0
/ }4 f5 Z+ D% w3 e        Do While rs_maxcut.EOF = False8 D3 S$ g6 j4 ]* F7 J
           i = i + 1
+ Z; Q9 J6 D% G/ W8 R( n7 s( y0 Y3 h. E
           ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标
2 ^; K( X% D5 F4 m8 ]1 H% i" e. ^3 l4 |4 P! }6 }5 j$ E
            '第一行  或者  第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的
9 `/ D  J% v+ F0 P, p6 }
  \2 }: \$ P. ^! D9 P# V7 q) u8 r7 D7 Q. W
       If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
9 d& G% V# R' i1 T; t        If i = 2 Then bb = rs_maxcut.Fields(1).Value  '除去标题后的,第1行第2列
9 M0 C* W" P% {- g$ [0 }1 {1 b9 f
! i2 ]4 l6 `* i' z0 Q) L: }        '读所有内容到数组8 U! L. B  ^0 d7 p; M$ Z) V" X$ @
        For j = 1 To 列数# F! d. B/ _8 s" Q* Q
        内容(i, j) = rs_maxcut.Fields(j).Value0 U- L/ h5 i4 t( r4 o. D
        Next6 E9 K! x0 {. P' n* m0 S
0 y6 I+ _$ r( B' U7 i
        rs_maxcut.MoveNext '下一行
) f+ }7 ~3 ^; f/ h        Loop1 Y; v; o: d& p3 E
       rs_maxcut.Close '关闭. q8 Y/ @  t. h3 r! z9 {. E7 F
( D4 i7 ~8 V3 R5 e( d0 L
6 |# `. N3 Z! Z/ ~
        List1.Clear
/ T! x/ V9 d6 K% u3 E5 Q; X2 v/ k/ t        For i = 1 To 行数
4 U1 ?* B4 Y( Y: v+ p        For j = 1 To 列数. ?9 \/ C1 X2 x9 a1 x
        If j = 1 Then
" l: L! |! T" W) V: f) S& h        str = 内容(i, j)
* d' X' i: @) y. X  M3 E        Else
+ @* O" a; r7 r6 A7 @6 V        str = str & " , " & 内容(i, j), }, H8 H( `# D, O0 N/ T$ h. Z
        End If
( S3 ~3 r7 m% e( u1 O4 k% e, K0 z0 m0 s        Next
  s4 }0 Y0 ^+ [" A4 `        List1.AddItem str$ `: |6 \& u! P# m
        Next
. {+ T6 Y- E1 y6 _4 m$ H- ?7 S3 n
- f* ]( c; `0 w3 v    End If/ t9 k8 R0 J/ N) |
" m9 F" M& Q" {$ W6 m! E
0 M/ L+ P# A: g2 z1 w$ s  l
End Sub
! X4 k+ R3 V* ~) X) y) K7 w* k: @' ~9 C2 [+ S" A
Public Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)  |' }% M5 G3 u& L0 J
    On Error Resume Next
8 p* f& M  ]4 }  T/ p) D# {- C    Dim i As Long: J( n) e4 f0 f" X! d2 U: j4 s) \
    i = 0
8 M+ p$ Z9 N, D! m+ U: K& C, V7 J9 U9 T0 p1 a2 h. Z) D
conn.Open cnn '连接数据库4 B+ ~9 {4 m9 e4 N

: F9 C* B# s8 _) y+ x- j1 m( g. a'sql = "select * from test"
0 U5 m9 E: R* y6 J( b& t4 j! F0 s% g( }) p1 g
  rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集
* l* k1 c. A9 Y& p* M. I
8 q0 w) f  j# Z" W) }' @    If rs_maxcut.EOF = False Then# e$ Q; q3 \- J$ V

5 [$ _# [& F# X! Q        Do While rs_maxcut.EOF = False! ~0 q2 o! c" s% V+ u+ S- j: O
          i = i + 1* q# p  a" A, E. {2 U8 [' T
2 X6 O3 R' R. C- d5 @- K
            '不要去修改 第一行  或者  第一列的内容  因为他们属于标题: s& Q: H( |% `1 m! q9 `
& I4 F! ?/ C5 Q, @  S. T) G5 a
            If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列
' B7 @. }5 F7 e$ I2 s5 i, v# C
: T, N; K- O$ N9 P            If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列4 F8 j$ V. B4 m6 P! U
2 N2 W' r6 J. I* R2 ~- ?" g. W
              rs_maxcut.MoveNext8 {1 Y3 F5 X7 V9 I+ W$ |- H  H

, D) E9 B' q$ F" Z& Y; E        Loop; [( v% {$ ]/ }, g" w

! p9 y" A, b' Z. o- I, x1 Q% Z       rs_maxcut.Update
; N. N0 w  G( y    rs_maxcut.Close7 C' B! t" x( E% {

& F# l0 L- U1 b0 z2 A1 o, A* ?    End If
, d% R5 B8 M( \. R! o
5 e8 g% I+ Z7 E9 e& l* _End Sub
5 Z$ ?2 p, v( G7 }9 \9 A
* J. r1 [& k, R
0 S+ b0 M1 E3 {: j! S' [+ Y
, t, N/ f6 u& C8 W) K9 M8 c* P0 w, q0 B0 c6 ~: F* S. T
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了