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

[原创] vb操作access数据库

[复制链接]

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

8

主题

10

回帖

146

积分

注册会员

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

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

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

x
c# c++ vb 是可以互相调用的( ]  ?9 I( m' Y& u3 \& W
( @( g  t/ P+ H- S2 I* ?8 z: U
vb操作access数据库 的方法2 M7 M5 G0 W" T2 V

+ F9 e/ P) i" L: e4 Y6 m% l首先要安装  Office2003sp2 ) s! i$ j+ L$ k/ D
" `( @- I0 I9 J7 }7 N
列子:读写数据库(.mdb)
0 f0 X) X1 y3 z% g
! n& \% {  d; K* P1.创建 mdb9 _0 {% I8 w( h, _. |
开始->所有程序->Office2003->Access 2003  新建一个空数据库 保存位置C:\report.mdb  
2 [- j# ^$ t; w* z5 R$ Q7 N创建一个表格 并重新命名为test          (操作和Excel类似)0 t0 Q  k! v- w% I( O

. d  ^# u4 T% K: [3 \注意 表格名称 和源代码要对应- Y8 q5 v  `# k. F/ U6 v1 i" A+ c
6 w* V, |0 V% [: b4 `) b( ~" W

! X* P0 a2 ~2 g; j3 P  I! S2.注册数据源(代码中已经注册)和写代码
* a- W- c* f* v# I9 {$ @: F+ G9 @- W* W' X1 \) O/ `

) K; q( e9 v5 [: o+ U, A) T在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
) Q5 ^# W* o7 ~3 w6 ^0 }* m6 W我们必须点击菜单中的【工程】-【部件】,. R$ b0 N' p# ~. R" \2 ~/ i
在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和$ v; e# L0 I0 F% E- t  J  r0 x( U2 i
“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,
  |( I" }% B$ v9 ]3 Q最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
! k' X; i5 R6 S" g, `2 L6 p4 B8 g
5 D( C8 f& W0 f
添加4个文本控件  Text1 和 Text2  和 Text3 和 Text4 ( O, @+ W7 F% d; r
添加一个按钮 ID修改成 “保存” + W/ V- s: L" b
添加一个 List18 E, Z% f; w5 z; W
4 N( w1 G4 H9 A: u
代码如下
+ _; ]) i% z" u  Q9 n3 g
* j" w; K# T' w9 @& {  h# d8 v5 [9 J) p7 W  |7 E3 q: `/ V
Public conn As New ADODB.Connection     '标记连接对象
3 Y, D: X6 `9 ~+ Q3 VDim sql As String
! c' l) F9 G7 {9 KDim rs_maxcut As New ADODB.Recordset
& L% I  o+ j- s- |# E. zDim str As String
  m! a. a$ z  z  g% E8 BDim aa As Double, bb As Double/ Y, x+ F) _7 k1 [' O
Dim mbd As String
/ ?- W( r2 Z, QDim 总页数 As Integer, 行数 As Integer, 列数 As Integer
) H) N0 T; M: s1 iDim 内容(999, 999) As Double
, `+ f, A; m0 o( j# e9 ]
( R* p2 O2 v  B' \- A7 R6 D8 u3 FPublic Function cnn() As String
, M/ T! O: R$ e& n+ z4 {( ^    cnn = "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & "ersist Security Info=True;Jet OLEDBatabase Password=123"
6 G4 ~3 r5 F- q; @End Function& V+ m% P, L4 W$ K" N4 f+ T1 y

: p# L& d5 x: E/ r3 U8 @Private Sub 保存_Click(): s7 p! O* |0 }% w/ \2 S. u

; Z1 s; ]* g$ I: J9 O" R. g* P writeDatabase
# f" O4 A+ ^2 r+ [& C2 O# m    End
( L# X; {& S, C5 H. X2 J2 IEnd Sub
% @! X4 r7 _: ~% N9 ~' S8 a* s  T  l% ^+ R* }) E: W/ \
Private Sub Form_Load()
* |+ R: h+ M( y8 X1 {9 y+ c1 L( D2 X; ]! ~* r4 X: P1 u( `4 |+ T( x, }, H
mbd = "D:\UG_OPEN\ini\数据库.mdb". ?8 @0 I' b1 z: I
+ L2 e& L  O  `7 y" I- G! t
    conn.Open cnn '连接数据库6 T; r, l& ], @* K! B0 ~9 }% a
    readdatabase
2 s1 @/ L6 U. M' L3 \9 s& C    Me.Text1.Text = "行数" & 行数
) b' Q" ^/ {/ p1 h" R8 c9 N    Me.Text2.Text = "列数" & 列数- N5 K/ n! ^  f* Y2 K. ?2 Q
Me.Text3.Text = aa
7 ^, Y* l  b( V, D' T, NMe.Text4.Text = bb8 Q6 x1 F' r& C. f  X; h
End Sub0 n% G. _+ h* z! ^/ Y2 H. @, Q( x' ~

2 c" {8 I( f8 T! V, mPublic Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)# @# }1 `$ G% o8 ]7 B9 K$ I
    Dim i As Long
7 [0 W) W4 i6 j: D  c    sql = "select * from test"
  P+ I5 y5 Z4 s' u) v7 W    rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集- j* h% l& V& V. c) G

6 W1 ]4 u/ }9 ~4 l3 T; S) N% o5 }1 L& }
总页数 = rs_maxcut.PageCount  '页大小rs_maxcut.PageSize. e* F$ k" l1 U" }
行数 = rs_maxcut.RecordCount  '行数 (排除标题), f- _3 X5 E7 b+ ^, ^6 v" ^
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)
6 M2 z0 S# N) {) l+ F. `* y1 O
' Y+ e0 L' q  V    If rs_maxcut.EOF = False Then) q1 s$ w4 m0 f& O3 @; v7 d1 j4 W3 \
        i = 0
& T3 S& E) Z1 i1 h6 [0 X' V0 a        Do While rs_maxcut.EOF = False" ?) R+ z, s; u  t" B
           i = i + 19 H1 P, O: E1 W2 ^; [5 ]9 e

% o  {/ S4 C* b( i# D           ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标* }6 U/ u% ~. w5 a/ `7 Y

4 B) n$ E* F6 @! ^2 ]+ y: c+ _; }            '第一行  或者  第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的/ o& @0 ?" ^; @/ F

( n) r* {( t: m) t( ?( ^: x4 H% E. q2 U' |1 G+ b* x7 @) J/ B
       If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
8 v* V9 F- M+ J        If i = 2 Then bb = rs_maxcut.Fields(1).Value  '除去标题后的,第1行第2列
- U" m2 x+ n2 I+ t4 @( i0 ^/ o- N( U- W2 q6 ~% l" @
        '读所有内容到数组0 O2 s; @; N( L
        For j = 1 To 列数
, J. b1 q5 S/ V5 w9 C' h$ D        内容(i, j) = rs_maxcut.Fields(j).Value
$ c9 J  v4 V, Y( |, \/ }        Next
) W0 W/ S* D7 y/ c
8 h) u$ B- u' p. q        rs_maxcut.MoveNext '下一行9 `) u5 F7 G; q4 L# B
        Loop/ ^4 T$ v5 Q( X: p6 K4 t
       rs_maxcut.Close '关闭. f' z- M0 [4 f$ [/ z

: |& b( a  K7 X8 C2 B; A6 L5 J: V+ z5 Z/ N8 l5 o' j4 B6 p' L3 t. B
        List1.Clear
' S5 |: s$ _6 e- Z, ?8 G        For i = 1 To 行数/ q. P  F( A; j- k, V5 N
        For j = 1 To 列数6 H/ @7 T  F  }1 n+ b. b# |# u
        If j = 1 Then
, M& Z( H, E* t. I- d. G1 F) g- G        str = 内容(i, j). u; x! q8 x& B0 s0 D. U' X3 Y* g
        Else* T- ?8 `  Z! o4 t' I
        str = str & " , " & 内容(i, j)6 M- N  E/ q/ L5 s3 k3 ^  V4 r  D
        End If3 ~& I; ~7 y" ~3 B: j
        Next3 `4 e6 B. z7 X( g# Q8 p
        List1.AddItem str. ?3 I0 w0 l& q# V* x
        Next$ k: n, E2 i1 ]3 V) U7 l
6 J# X1 L' ~- U, {8 H" p
    End If) `8 l& b" a0 }$ ~0 |( O4 N1 y
) K$ h- s8 w* P. n! h& \" I4 Q8 K
$ G4 z  n5 g; e) y5 {* S
End Sub
* o8 y" ?2 ]4 Q1 d0 h3 y3 G
* w/ O# x- k( F2 Z0 tPublic Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)4 M8 }* E& H7 ~1 x- m, ^
    On Error Resume Next) @( S6 y& X% L; `7 K7 L
    Dim i As Long* x; E3 U/ w* K  ]8 s3 |$ T; S
    i = 0
! R" d7 }7 \/ |; M
# \+ B* t/ }; j. [& a! @# ?. yconn.Open cnn '连接数据库
4 k4 C+ ~8 w) O5 L0 b; n. V9 t0 P% k" l7 Z
'sql = "select * from test"
6 N8 F7 S- |, q8 b
. m: w! A8 W: `8 E  rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集
; }  M( S1 A: r3 q( U
- s7 l5 t8 a7 Y% f- n" ?1 s# [* [    If rs_maxcut.EOF = False Then  M1 N" M  C; Q
3 p4 f! ~9 T" k9 ^8 q; l2 l
        Do While rs_maxcut.EOF = False
  K, a6 {! D; ~# G+ t8 h: V          i = i + 1
6 r' H  q1 r" d/ n" a' T: V& ?# R3 b; J- p( p
            '不要去修改 第一行  或者  第一列的内容  因为他们属于标题
. n$ O( `. f3 }9 W+ u1 b. k% _% T. S) w; J9 W# `1 ]% _
            If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列
/ a3 l/ {0 _  a! j6 Z4 N8 T) W! Z- U$ I7 t: a
            If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列
, e6 k7 [. Y& j
. u$ I; `# N+ n2 T  j; y              rs_maxcut.MoveNext
' A! {( S) |) _! X6 V
; F; k; ]: k4 y3 w0 [; B2 J        Loop
* }6 m8 _  w; @* t) q: A% D" H
3 T8 f  ^# ^( g       rs_maxcut.Update
( t* _/ i- T9 @6 B    rs_maxcut.Close+ j: t5 \& s* X. g# {. C

) K3 p& Z) p3 ^6 E' b: V; u5 V    End If
% e! |5 Q3 {1 K# p& k8 v  o6 l1 P  s9 A# _+ v4 T& b* r4 @! o/ p
End Sub
& _# b: O4 \6 p+ L, ?  d; ]- A, h0 Y  A8 l, k4 H3 ]& n
$ |. |3 d, V( u- l0 n& x
3 W/ p# O; f% y

  F) b, s: p7 s3 f( N  n
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了