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

[原创] vb操作access数据库

[复制链接]

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

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

15757753770 楼主

2016-12-11 15:03:17

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

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

x
c# c++ vb 是可以互相调用的; n* H% ^4 Y" k! W
  @/ j, ?- P6 \# t& v& H% M
vb操作access数据库 的方法
8 }3 t0 x0 @4 J/ ^5 n, B% a+ b& `) ^1 l- R+ F: `# V% ^; i% Y
首先要安装  Office2003sp2 , d: f3 \" L: Z$ K5 y
2 B/ Z1 P) c- e/ w7 X# }2 q4 d
列子:读写数据库(.mdb)2 b& E7 {+ E  ~! v
: t4 P% G/ Q- g+ D; w
1.创建 mdb% J1 s% M# ^0 r' y: L9 L: J
开始->所有程序->Office2003->Access 2003  新建一个空数据库 保存位置C:\report.mdb  
5 u- l: x; ?7 i" ~( j6 B创建一个表格 并重新命名为test          (操作和Excel类似)
+ F; m! ~; K4 D4 F6 |( w2 }6 E9 P" a( z7 E: l
注意 表格名称 和源代码要对应; d  M$ D: q5 W5 T$ t- J

  r2 K% j. W/ Z
/ ?4 ^0 z( q' g, D$ @2.注册数据源(代码中已经注册)和写代码/ n& K2 g4 D. c# s$ r& {- N
& Q  ~, e" Q: M' D5 X
3 X! q$ a2 ~4 {
在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,0 p9 p4 w7 p4 Q4 I3 y$ X( H
我们必须点击菜单中的【工程】-【部件】,
4 |4 I8 e9 d+ Y+ v4 \在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和
4 u, W, ]. q, D“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,
' W' D' ]6 q' t+ Q- F+ P最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
/ h! M; \1 f  u# K; o. F, N+ f
* j" O1 B2 h2 ?+ D- W6 }; Y- H) w- c4 c+ b
添加4个文本控件  Text1 和 Text2  和 Text3 和 Text4
! ~% P4 b$ @" n" B, f添加一个按钮 ID修改成 “保存”
5 X  Q/ D- L; A添加一个 List11 ~+ Q: W4 |8 y2 Q+ @

/ G& M' A+ V% ?4 Y代码如下2 Y, W* ^% |2 [. X' E  z
) A( g2 H' O% F, M* N

$ c' F5 s% u% T5 S& SPublic conn As New ADODB.Connection     '标记连接对象2 _: `% c3 S3 c. F4 c/ ]
Dim sql As String
7 X, }1 E, S& s5 l! `, _  F! M$ r$ IDim rs_maxcut As New ADODB.Recordset4 U# O6 u) @5 t8 |
Dim str As String
" \1 z: g; p2 c; Z" ODim aa As Double, bb As Double" ?8 }! n4 a2 |* |/ p; v5 L9 Z" z
Dim mbd As String
$ m, T) G% |$ E6 ^5 c( DDim 总页数 As Integer, 行数 As Integer, 列数 As Integer+ |. G, \7 ]( {( }5 w" y
Dim 内容(999, 999) As Double
# Y) }6 }) k) P5 A1 ?
+ J8 A3 _0 ^% a: s+ n+ J$ |0 P* yPublic Function cnn() As String
) \  o) @% S& e    cnn = "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & "ersist Security Info=True;Jet OLEDBatabase Password=123"
0 Y8 t0 I$ h4 s3 C  AEnd Function
7 _$ P: J& u) F+ `$ h! e" s  t( ]& |( Q
Private Sub 保存_Click()$ Y7 ~2 Z; e9 t$ M

: b5 O6 K0 t7 g2 K! r- i$ f) Y writeDatabase7 c; J3 L- ^& A5 w. j
    End
9 G2 L! A4 t, M0 B0 @: M- ~End Sub
/ d! G' K+ N- }- @( C; p- @
& U! J( A: V( k( dPrivate Sub Form_Load()
0 M- p. M7 F% Q  k- v: N1 T6 o- l$ t' f" o0 s' c& m
mbd = "D:\UG_OPEN\ini\数据库.mdb"( D. K* I( z: [) V
7 {- |; G4 \! g9 P
    conn.Open cnn '连接数据库
. s! W* F' a2 }5 z    readdatabase3 W4 D! g1 C! h; a7 _; h3 o2 [
    Me.Text1.Text = "行数" & 行数0 F: Q* |9 S: o2 B6 B, n7 h7 n
    Me.Text2.Text = "列数" & 列数
* _* l( T# A, m  EMe.Text3.Text = aa3 C' B, M4 q# D/ |
Me.Text4.Text = bb
) N- R/ V/ k* ]( W: \End Sub
4 y' g0 I5 `- J  _& |
# M+ K# t1 p) ZPublic Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)6 y4 y& h! u0 [& n8 w
    Dim i As Long
+ q: _4 r' g. o. Y/ q    sql = "select * from test"- D) J! _4 L2 o; e9 q
    rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集
$ Y8 J+ B. [  ^# U( d9 i$ _1 ^8 |! o" d7 y# b
3 |* Z1 H, R' y' r, v. B6 Y. l( V( C
总页数 = rs_maxcut.PageCount  '页大小rs_maxcut.PageSize
7 `4 j9 M/ g4 C5 m8 u0 E2 i行数 = rs_maxcut.RecordCount  '行数 (排除标题), L8 w& ]7 u7 I
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)7 K6 m& |: O9 h4 Z; G; q! ?+ D

" c, ?3 I% j: q+ D, G0 T    If rs_maxcut.EOF = False Then
6 b7 v6 o4 f: d  F7 Q        i = 0
, t' O8 S) R5 c6 i        Do While rs_maxcut.EOF = False% k+ {, y- Z4 H: W( z
           i = i + 1
& N4 ?  W8 I5 c9 f9 @, T4 C2 ?- V. U
: Z, P- C/ B) K& g           ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标
6 e5 C$ `7 i* H0 @+ p' `
, O* x1 l' f+ \! U            '第一行  或者  第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的
) P$ _( q: L( |. b9 K$ F' `; H) a
; E7 [# P- g$ k4 p) i6 A% `) ~3 {; w6 b7 L# j; W
       If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
( C6 A" F  S9 O4 x5 a) j' Q        If i = 2 Then bb = rs_maxcut.Fields(1).Value  '除去标题后的,第1行第2列
' e' o& `. F* i; p3 m- {/ P7 x- _7 [$ m
        '读所有内容到数组
9 }/ u3 A' E' @. `( {        For j = 1 To 列数
; K; q8 M/ p' O/ H        内容(i, j) = rs_maxcut.Fields(j).Value2 [& T2 s& m0 ]5 m2 f) i
        Next
- Z" s$ f$ X& w  _3 U# q* \0 \* b7 G, v  P
        rs_maxcut.MoveNext '下一行. u  `  N( G7 K5 r# H
        Loop4 R; L7 ]: ]7 V
       rs_maxcut.Close '关闭- h4 H  Y% W* a& m' c# l

- p8 ?7 J* G  t, H1 t
7 j8 d% |( S7 W; d0 J        List1.Clear* d1 S+ G: ^+ g
        For i = 1 To 行数
+ P, g# F. k: P$ u" |) U* ?. N4 r        For j = 1 To 列数: S% w) R! Z  N3 m2 R
        If j = 1 Then& G. Y0 N# \% z) E
        str = 内容(i, j)) V0 p, f9 ~! l5 C# E. o& T  f
        Else
" y/ k- L: H3 |1 m7 E* A3 E9 D6 l        str = str & " , " & 内容(i, j)7 L) @5 J" N& _( w# a
        End If
6 v& B% {% v7 L, I        Next
5 W- T8 u3 t, Z2 ^& n1 y        List1.AddItem str+ }8 a3 |& ~7 G* Y
        Next4 n7 T4 T1 R. F8 x* x. [1 C

0 P$ d% d  G2 [! [5 @    End If  o0 m! o4 X' ]) e3 W" p; z* b; E) ?

/ a4 K7 S/ F& J9 u4 l( k, P; S% S0 \5 d% r5 C  J- j
End Sub
3 K+ C+ F" L9 h4 E$ B+ f( B; Q
& ~7 x5 E! C& [# V6 ~Public Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)7 ^. [- O6 D' T% T5 {' ~
    On Error Resume Next
& e+ Y! a4 D3 [3 X2 o& f: c    Dim i As Long3 }* V: F! }3 g  g3 Y
    i = 0
: O9 `, w5 x7 w) l& n; {! ]! f+ D' l0 u+ y% x& |
conn.Open cnn '连接数据库
: v/ j$ `$ Z0 _1 M8 q( d5 c* F# b. ]9 l7 [# P5 T. Y
'sql = "select * from test"7 A7 L# x1 w9 r0 _- v* o

( z* Y3 D8 G; m- ]  I  rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集
: {3 t" r) |5 ]; n8 o9 M; [' z1 r( [2 `% v* B, Y; [
    If rs_maxcut.EOF = False Then
" G5 q  h6 |( s3 c. C5 _
4 o' x) y8 e$ ^" |( s1 G7 e" D1 h- y        Do While rs_maxcut.EOF = False
7 @( E! J9 O& z$ a3 F0 }          i = i + 1
+ n+ ?. e1 L9 T! E+ t5 w3 D
+ }$ k9 q9 `% {4 R- P  }3 \: w) Y            '不要去修改 第一行  或者  第一列的内容  因为他们属于标题
; _8 v# G) l1 p6 T" x% J4 Z  M5 u8 C, ?) T% w6 a1 M
            If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列* t; U8 N% `, h" u
+ ^" l) o: E. o& r: b  r
            If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列$ }% c5 E) w7 ^/ h' ?
5 @# L! L# W/ R: ~) x7 _& Z
              rs_maxcut.MoveNext7 L: Q9 E' e4 p) q

; y/ I+ o" @/ G        Loop) y" C6 Z4 `' `* }' x

  y$ o/ p0 q$ J. f" z4 y( {       rs_maxcut.Update# w! ]# H. }3 Q1 [
    rs_maxcut.Close
6 F& |* w: S9 u2 z: \: y9 l  g3 y# C7 ?7 D8 X$ G: m( N+ h) y
    End If
0 I. L  y1 ~. H( B, j* Q8 m# \
& C1 N# l# {8 r9 e8 VEnd Sub
# F% k+ @- ^: M1 L+ ]0 O4 m+ A/ [, i: r! ]  m" x

+ y$ \8 o5 O# _" F/ q0 y
" H+ S1 a* Y0 H. U8 x
8 E/ F' ~. d# ^) u) _7 r, |9 J9 u9 Q* X5 @7 C
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了