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

[原创] vb操作access数据库

[复制链接]

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

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

15757753770 楼主

2016-12-11 15:03:17

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

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

x
c# c++ vb 是可以互相调用的. i3 E9 j9 S9 w# |5 a; g
: W: p+ b: p# S$ s& O3 w
vb操作access数据库 的方法
1 G; c& d. N& ^4 S5 |: @# k* I
- [8 x! q7 f9 t/ W首先要安装  Office2003sp2
' {) m0 g0 R4 U) P
2 f. C$ b/ P% \8 O  K列子:读写数据库(.mdb)
) c( ?6 b( \5 j4 B! o: {9 o: z9 J5 H& r! R
1.创建 mdb
- i! W& }3 r' ~  Z; p: g# g! f& m* m开始->所有程序->Office2003->Access 2003  新建一个空数据库 保存位置C:\report.mdb  & @* Z; H' f% M" ?
创建一个表格 并重新命名为test          (操作和Excel类似)
3 B3 D" _/ |, v) M( x- z/ }8 B3 O
注意 表格名称 和源代码要对应
& B5 I0 L; _: y2 [- l2 }' y% f. W$ U$ _; N4 \, Q* `6 b

# G; c; O6 `1 Q' a6 V$ W2.注册数据源(代码中已经注册)和写代码8 _; [- F: T0 M* A% V2 {

  l# ^, i# ]; k/ x- r4 E% q) [& F! b
在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
: o2 y2 {( |( ^! H0 ?, q$ m/ g我们必须点击菜单中的【工程】-【部件】,0 o7 \# {" l# P" V' b* L) D
在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和
* ^" w$ C* L+ H$ n8 I) B7 n5 v“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,  v! j  e' [% \$ h
最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
5 c+ c6 J, Y/ o( N+ ]
' p1 Q# o9 |# B$ f. P
7 {' ~' M) a4 L. e+ ?; U8 M  X7 Y5 I6 _添加4个文本控件  Text1 和 Text2  和 Text3 和 Text4
) G/ o% Q  H. L7 s3 n9 O8 N添加一个按钮 ID修改成 “保存”
) z" ]  r: g2 j( v% k添加一个 List1" M+ D" o0 F0 N# g+ X
( D8 I: q! f* n) }
代码如下
6 W+ N: ]) e+ v8 _6 l" `9 u1 B% J' {# e+ b

* N8 {+ X9 s' X( J' Y+ z+ F% y) t/ qPublic conn As New ADODB.Connection     '标记连接对象9 g% Q% c% q) g, q9 Z5 E6 W
Dim sql As String8 ?* H* u- }* x: E& A* r4 m  v2 B( f
Dim rs_maxcut As New ADODB.Recordset1 o6 P0 e1 h# U
Dim str As String
6 Q2 t4 D- B; J3 UDim aa As Double, bb As Double
2 G1 f1 F& y9 O( fDim mbd As String
2 e( N; n; Y# ~: vDim 总页数 As Integer, 行数 As Integer, 列数 As Integer
0 j: `' b4 H9 p3 E: HDim 内容(999, 999) As Double
  a+ W6 W) e! o; i/ J  k  I0 S# g% ?: l# u  X. K% n& m
Public Function cnn() As String
$ x- K) P6 e1 _    cnn = "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & "ersist Security Info=True;Jet OLEDBatabase Password=123"1 [4 @) w& @( k
End Function
: X1 ]# E8 R' u4 [$ d" V
/ J3 I7 O+ Y- `Private Sub 保存_Click()
8 R( Z+ G" c$ \5 L2 k/ R) |7 \, \) j+ F, D- R
writeDatabase
* D: C: _, @$ f    End- f" C$ p7 ~! R+ y
End Sub$ K6 N; F) g/ {! w2 o! e2 e% `
8 I+ a' @0 x" [% t. B4 f7 N" X
Private Sub Form_Load()/ Z" M; ~0 c; P$ ]- E9 u  X
+ L1 K2 k* p' G2 x
mbd = "D:\UG_OPEN\ini\数据库.mdb"+ V8 Z3 O* t4 A0 [6 s* o0 Y# Z
9 u; A- b" l( k' O
    conn.Open cnn '连接数据库- ^9 _/ E  K# y0 s
    readdatabase
$ S* a- }3 Y( u( Y; t4 }    Me.Text1.Text = "行数" & 行数
2 }/ v, M( d: J- i7 |) C, f    Me.Text2.Text = "列数" & 列数2 B" ^) Q- o* m, P2 Q* C) r
Me.Text3.Text = aa. S5 s8 G' M+ Q- m
Me.Text4.Text = bb
$ [5 c* o5 k% P) n  H- b' U5 `End Sub  f1 v% w% x7 t6 C& ?5 Q) D

3 t0 l: q! G0 _) M; ]1 J0 J' z1 cPublic Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)" ^& |$ K* y% N5 p
    Dim i As Long
/ J4 I: C! m% ^4 R; @    sql = "select * from test"
2 c7 E9 E, M  Y. j, A    rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集6 {. }9 o) ]5 P" r
+ A" u- y" a7 }9 X: n( Z
( C1 j7 g+ i# w/ ]
总页数 = rs_maxcut.PageCount  '页大小rs_maxcut.PageSize
% v) ]/ S# ?9 g4 }行数 = rs_maxcut.RecordCount  '行数 (排除标题)8 {# k1 i( f/ n! t
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)7 A% l- I( _" }' x. ~

. V! s6 a; \9 Y! d/ l4 F    If rs_maxcut.EOF = False Then
- f0 ^3 S" C2 U        i = 0
2 _9 E9 j& E* x. J        Do While rs_maxcut.EOF = False& g7 N  l& t) |, Q3 g( t3 J
           i = i + 1
7 u1 J( Z" R# V4 c. r4 S% h. M, x; h
' P" i. z( B; `$ m5 a! p1 [           ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标
! K: f1 Q+ l0 V8 T; A1 @  V" v! s; p$ w* C, l) Z
            '第一行  或者  第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的
' Y9 q6 _9 F( H# P( T& v9 H4 Y) _( y$ g- a, R7 S3 B; G$ f

: E' k8 |: J- C, Q       If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列3 ^2 t. U4 @, o+ U5 Z: H3 e
        If i = 2 Then bb = rs_maxcut.Fields(1).Value  '除去标题后的,第1行第2列
! w7 z' l. ^2 y* z, z! c' h* q' ?# ?; x- w
        '读所有内容到数组  m7 y1 S7 e# ~" |7 N0 e
        For j = 1 To 列数; O" @# ~6 K  c9 C" ?
        内容(i, j) = rs_maxcut.Fields(j).Value
1 C' o8 c! c1 Q9 J- H        Next# T4 G0 n2 f2 u) E. y

  M" P( E. i" d2 E4 B9 z        rs_maxcut.MoveNext '下一行
! y8 X: x- e# Z! S4 Z        Loop
0 P6 r2 ]% E) O0 s& _       rs_maxcut.Close '关闭
+ P% w( y' E1 ?+ O! W/ V* O/ h) K+ T* o
; {8 a) W; @2 t! \7 A3 F
        List1.Clear; J. d) H2 U! v) P" b: N
        For i = 1 To 行数
+ U3 Q7 Y/ Y- C' H        For j = 1 To 列数
* z/ s" q: l" ]# p2 B+ c        If j = 1 Then
; L9 ^' d9 X; f" ?1 M# l        str = 内容(i, j)$ J$ M5 I! Z) @) g2 I
        Else
: |5 |; Q: e5 d$ F9 O+ F        str = str & " , " & 内容(i, j)
2 x# w; a' O( I: L4 r# a        End If# j8 G, m- j2 M7 y6 B7 Q
        Next
  D7 n! @9 f/ {& g! G7 O) t" g        List1.AddItem str
/ b% Q3 J" R8 j        Next4 H. X  ^3 v& K7 r: d+ [8 F9 @* J
/ F, w8 D4 N  Z3 s- h0 }8 M0 j8 N
    End If$ }* e2 n$ ?) ~  |0 w
5 H3 w& U+ g6 O

6 r& |0 [2 P" C" x! N+ EEnd Sub) r  W: a5 y( y( K; n- T; R# Z

0 o. G& F, S( F4 yPublic Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)/ i) s3 P. o9 M7 E  W8 Y% `
    On Error Resume Next
8 u" t! p$ R( r3 b0 |    Dim i As Long, ~$ V3 @( @4 j9 @. `
    i = 08 l; W$ U& l8 Z% I/ {4 C" V4 D

, j- f  l: O8 G( M- |- L  Bconn.Open cnn '连接数据库( F1 [- k* |. K5 a
0 a1 }5 A  e+ Y6 a( z  N( c
'sql = "select * from test"" N" \3 t# k; ?+ C& p- W
9 m) n9 j0 O+ |7 h3 o
  rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集
2 m6 J9 x! ]- Y  g7 y% }1 R" n# M3 i1 R5 U" P
    If rs_maxcut.EOF = False Then
: s/ a! b; E7 D. C6 ^; i; S3 v9 y0 N2 V4 H( @
        Do While rs_maxcut.EOF = False
/ z4 Q( r6 I7 D0 G, J" P          i = i + 1
5 h* i$ |2 i; U8 P4 }2 E0 P0 p) f3 \9 D% R
            '不要去修改 第一行  或者  第一列的内容  因为他们属于标题
3 @8 z3 K5 V% b, V+ ^' ^4 P1 y* E; E2 x) B
            If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列
0 \0 L/ b' L/ N! y1 R+ ~- |/ P4 C3 m( `. M9 H1 T$ C. R; |# n
            If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列
5 k+ M- r$ Y$ F) j' r/ l
8 ~% R: v+ Q  A  y              rs_maxcut.MoveNext
  C1 o% f0 j6 o* D. g$ X4 n% h( \; N) o" s
        Loop
$ V2 k  {- I2 t$ {' Y, O* k3 g' R1 Y; X4 g; ~* j6 j
       rs_maxcut.Update
4 g4 S1 o  R# s7 U    rs_maxcut.Close- T. }6 o# M  R& R1 w
, `1 H3 A% `0 k! S: W) F
    End If
2 b6 Y2 n/ h. F1 U" K, z9 `" p) h2 r( h# W
End Sub
2 g1 T9 s9 a' o" K3 {' i" Z3 w+ r- v3 Z
; A- H( r+ u4 U' C. ]+ p6 {" o
+ S, b, r$ J9 U- {" Z' B

: G! k' \$ p$ I
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了