PLM之家PLMHome-国产软件践行者

[原创] vb操作access数据库

[复制链接]

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

15757753770 发表于 2016-12-11 15:03:17 |阅读模式

15757753770 楼主

2016-12-11 15:03:17

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

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

x
c# c++ vb 是可以互相调用的: q/ k& a- _* \7 \
: c  |2 j* ^5 t) t
vb操作access数据库 的方法
' u3 |# J; z3 o/ N9 V0 Y4 l+ i7 L3 l
6 f+ D5 b4 w( m/ i: l; h首先要安装  Office2003sp2 & Y6 X5 R5 k$ c: ?" {" J+ o

9 H) v0 X0 X2 E% X列子:读写数据库(.mdb)
( u, R- d" s, i, ^/ B4 h) m2 t1 [  p* q& h* F. A3 S9 [% l' {
1.创建 mdb4 T. X7 o1 y' f& V2 |3 l
开始->所有程序->Office2003->Access 2003  新建一个空数据库 保存位置C:\report.mdb  
5 @1 \4 G8 r7 k3 C- L! c6 x创建一个表格 并重新命名为test          (操作和Excel类似)
/ ^; e- D6 A7 m  x0 ?3 D* t2 P" H7 s
1 T; G* I. r, L# K8 J. }注意 表格名称 和源代码要对应- K  A- F% [2 C: H2 q2 L8 T

7 ^4 g/ T# x; p7 q- p/ c( p/ K
7 h/ o, _$ `4 f3 G7 w* t2.注册数据源(代码中已经注册)和写代码5 F/ M2 N9 b$ {. a6 S

1 }- W! f% J. u$ [9 x# w" F
' e3 ]& S6 P" Z7 h# ~在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
! Z  q3 x2 F' h2 F" x- c- A& e我们必须点击菜单中的【工程】-【部件】,
( A2 C4 |) f8 ~4 t在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和* t( `, ~: C; Z" _2 E7 L/ y' Z
“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,/ L. j8 k8 B9 m) V0 g. e1 @
最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
, Z9 U1 @) H; W$ q# X) \4 `' H* U- F1 D5 P5 f8 G
" g. I" Z4 O% N# h( {0 M" Z5 w( l
添加4个文本控件  Text1 和 Text2  和 Text3 和 Text4
7 H) L" p2 a- Z) c% ?# n- E2 m添加一个按钮 ID修改成 “保存” 9 j" ]( H3 I2 k5 C) T' k- J2 ~
添加一个 List1
0 ~2 d% y; j3 [4 k2 r4 w
0 a) O/ u3 O9 g& c" Q% r代码如下1 N2 o. C! y6 j! F# K, C# b- L
/ I% ]4 _7 i  x* Y8 |
& Y3 _. w" ]- b: G$ M
Public conn As New ADODB.Connection     '标记连接对象0 d- Q6 ^1 C+ g5 f, D& H5 \
Dim sql As String
0 ~) ?; J+ n2 [- A# H9 ADim rs_maxcut As New ADODB.Recordset% k! i1 n' T, _- |' u
Dim str As String3 A) i' X& k% J' m' h; p% |8 @
Dim aa As Double, bb As Double* U% ?- z3 g/ I3 `' l
Dim mbd As String
" i# ~3 e* r8 g# G" f4 ]( s- KDim 总页数 As Integer, 行数 As Integer, 列数 As Integer
) W  O: s  R# G. T* ^. a  f, QDim 内容(999, 999) As Double
9 D3 t! R! h- L* I  p
, X, o( \% {8 I0 w/ w3 W- MPublic Function cnn() As String
" E0 [4 J1 r- w' S    cnn = "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & "ersist Security Info=True;Jet OLEDBatabase Password=123"
$ ^; E3 U6 b* X% o& s0 dEnd Function7 A: ^" M! z; ~% a8 u: r+ o5 R

% ~* m  M+ r0 JPrivate Sub 保存_Click()
! n/ {+ P) K" h- L/ k2 ~% V% Y1 F+ ~; o5 `" Y: h/ @
writeDatabase( H, S3 G; q. r5 u9 c, ^7 M: f
    End
9 ?2 C; m! H  ?( jEnd Sub
: }9 {9 y4 _- F- X2 r
& M; X" n2 e' B; q& c2 `Private Sub Form_Load()# ]4 v" t9 E* l9 I2 f7 U

0 @' ?! K% E: R, P) `  i mbd = "D:\UG_OPEN\ini\数据库.mdb"
9 }* X, r+ h8 L. g7 b0 M8 _5 i9 h2 F" S4 `
# w% b1 W+ C. I) Q3 h5 i/ N    conn.Open cnn '连接数据库
9 x+ S8 k+ C2 n/ \, x    readdatabase
/ ^) ~: g' b  F* {    Me.Text1.Text = "行数" & 行数# D) w) [! z% v  W# b4 |
    Me.Text2.Text = "列数" & 列数$ [/ w' e$ P6 M9 [5 l
Me.Text3.Text = aa
1 D6 I$ a( R5 m9 D- CMe.Text4.Text = bb$ }+ i# b( O" P& m2 ^* y" N- e
End Sub
' X% J7 J  C; A$ E) \% F% n) Q4 ~+ H8 p4 g* B/ Z6 }1 V* J
Public Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)
9 d0 n) c8 k9 q1 r, V5 z    Dim i As Long0 _9 b. g& T" F$ W) N) A
    sql = "select * from test"+ F* v( v& j6 J7 D( }$ y
    rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集! l# P" j+ u& f! R1 j8 ?, h, \

; \* L) {+ V8 ^& k- I0 g8 K* y5 n) n+ D6 z
总页数 = rs_maxcut.PageCount  '页大小rs_maxcut.PageSize
6 {6 P, K4 |3 g行数 = rs_maxcut.RecordCount  '行数 (排除标题)+ m) q6 h8 t2 u' _, k
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)
' n) R7 Q& X/ ]4 k+ C
7 h) R" f, h' U- X* y$ P5 D. i; ~    If rs_maxcut.EOF = False Then
( S; w* K# z) Z        i = 0
) d& |; H* e& _        Do While rs_maxcut.EOF = False
" x, b# u" y7 }1 f. ], X           i = i + 1
4 i, |/ [% q, E' A8 ?) u2 s, ~7 {! P* J* c: P& a
           ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标  i, M, H, D: U$ n& j" G' m

# M) t4 a8 `8 j# s/ d: m0 R            '第一行  或者  第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的. h! h. ?! L; U3 Z5 I6 V% \

) ~" l) J+ s. ^- }0 N: A3 R9 p8 @
       If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
$ u9 X& C6 H& _: L6 O& w; P0 J5 e# Z        If i = 2 Then bb = rs_maxcut.Fields(1).Value  '除去标题后的,第1行第2列6 i0 G/ ?3 i5 E& A  h

+ ^7 q8 E' N, W" s, k1 j* M        '读所有内容到数组. f2 d7 G. x9 b& }/ Q
        For j = 1 To 列数
) p! h/ `2 H  e, f        内容(i, j) = rs_maxcut.Fields(j).Value
$ b; p3 ]  x% E& \6 x        Next0 F, x8 O) h. h0 N
7 e" R( T9 v0 u$ }0 @
        rs_maxcut.MoveNext '下一行, i( A+ Z' ^$ j% X  y8 y; ~3 u
        Loop, q' P- i: r* c* ~+ L. j
       rs_maxcut.Close '关闭  U" M& @4 {3 o7 |7 V5 |
, ]% q. J  s, B8 g, Q2 P* z9 n
9 B6 f; y4 i1 P% D+ p+ I
        List1.Clear0 j  G, g- i. U
        For i = 1 To 行数
( o( \1 J: s( Q3 i4 ^! n: l        For j = 1 To 列数
7 ^9 x0 p- C7 ^; K) C5 }8 S        If j = 1 Then
( e) F4 U9 w( I2 q' j        str = 内容(i, j)# n, R/ Z) w7 W0 d0 J
        Else8 D' Q% \& w& W1 t5 ^
        str = str & " , " & 内容(i, j)8 U2 @: M/ j, I
        End If
; Q+ H8 L% s* t        Next7 ^& Q4 G* c' W3 A8 u
        List1.AddItem str
% d: L  ]) U5 e' D% o        Next
; n! a- `: O4 F; w  O1 b  L
0 \  b+ F, l- X$ C" H    End If. j, g, J' ]: o  Z" m+ _( c+ R

2 r/ @$ x' K  L  t! V; G6 K
+ d7 k2 I6 A4 _+ tEnd Sub
& s/ S: p3 v9 K4 [% H% k, S6 `2 v
Public Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)# t: V+ y% I; s) A- x- _4 g0 Q
    On Error Resume Next
* Z% p/ H5 d! t" A. W    Dim i As Long( k. h# v) x% a
    i = 08 a) b  Q; c6 y6 @9 X0 k
6 o) ~/ I( T+ R  j
conn.Open cnn '连接数据库
- J6 O( r# i! `# j' h. m9 z4 ^: q8 P0 _. _& e* L
'sql = "select * from test"+ \6 e. g# J% ?  a7 p

& H1 F1 z3 |3 ~* Y  rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集
- y" _1 M9 X# J9 S: Y0 b. D9 K
/ }) q/ D. f/ j0 }; a5 _: I4 I: p    If rs_maxcut.EOF = False Then2 w# B( k* C7 u) ^' X  o" q: B
& O) C7 r/ d, k) k9 u
        Do While rs_maxcut.EOF = False% T/ D" f: r6 V" `
          i = i + 16 e& @% j# r+ V" F4 D, X

0 m) X4 ?) z& k2 V# F            '不要去修改 第一行  或者  第一列的内容  因为他们属于标题
0 J% t8 D- G* N8 R9 N, V' [$ }( N4 ?' n' v5 y) V/ j
            If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列
* z) u: `' a7 I7 Y0 m) F  q' o9 P7 m8 I+ @
            If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列
+ a5 \* }$ h# P3 e( I
+ C1 Y6 K+ b) a4 P3 d9 I9 Z              rs_maxcut.MoveNext
/ ~! d$ v1 X- r' p3 F2 v/ n
3 F6 D; m/ V% q6 |+ g6 |% m) c        Loop5 e* Y! G6 v! ^% v
+ G% I: ^$ F+ E4 |% N. }( G
       rs_maxcut.Update; f% b4 q; L; E! D& b$ s
    rs_maxcut.Close
0 y& a7 ?/ E) i( O: e
) O) B% R' q2 z) v    End If
# `. K; N, Q$ C& u) V) N  B
8 T: \/ X: c) Q3 T% X3 rEnd Sub
" R+ k: I3 C- S
7 W3 ~9 d6 E! e" h. \1 a
/ G$ O+ x- W& W  D4 y( O( p" g7 L7 A" h. J
1 X# [* q  y2 n, c6 |8 x, K( Z# |" Q
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了