PLM之家PLMHome-工业软件与AI结合践行者

[原创] vb操作access数据库

[复制链接]

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

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

15757753770 楼主

2016-12-11 15:03:17

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

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

x
c# c++ vb 是可以互相调用的
) I. }7 s9 D( u! k3 J: \/ U& |& _/ l$ W% F! X
vb操作access数据库 的方法' ~1 ]9 \" z% i  r7 U
; z$ V! F6 A: l- I$ N
首先要安装  Office2003sp2
6 D" ]9 F) Y% Z: Z& \; g' E
7 S7 ]8 r2 u- \. i# W列子:读写数据库(.mdb)5 T: [+ d7 ]$ @5 v
  d; h! @1 v. n
1.创建 mdb: D2 `. S6 a$ Z7 ~2 q
开始->所有程序->Office2003->Access 2003  新建一个空数据库 保存位置C:\report.mdb  / S" m: q% d6 I
创建一个表格 并重新命名为test          (操作和Excel类似)
. E* r7 N# c1 m8 f8 C/ B) q8 ?5 @1 T; m" ?" }! Z5 b2 f- g
注意 表格名称 和源代码要对应
+ ~0 c- H$ R, k+ Y* Y# Y- \# U' f( K0 K' x) \
( v( C5 M4 M  U( ^4 q
2.注册数据源(代码中已经注册)和写代码
) x; q1 }; J% E# H' P( a: w, P9 f8 T3 t
. R4 t7 G! z# i
在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
/ G& A% n2 e4 Z: G6 C* @% j我们必须点击菜单中的【工程】-【部件】,% I& U; \  O) ^7 ^5 N8 |+ B
在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和. D1 m; W' K# d0 ^
“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,: ^- a/ b3 T2 X
最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
$ j, D6 B3 J* r2 F
0 h' c/ Y# L1 o9 V" O0 N& f7 j* Z3 `
添加4个文本控件  Text1 和 Text2  和 Text3 和 Text4
/ M- i2 N7 o0 y& }添加一个按钮 ID修改成 “保存” ) r# C+ ^9 n9 l2 p/ n8 ?
添加一个 List1" a4 v# N' c- c

2 `: N8 e: |/ Z  Z9 G- H7 T: ]代码如下
% A5 N/ y& V  W9 N0 ?% I: x1 R' G- V$ N; L9 R4 a8 M3 v
6 R) Q1 |4 _2 @
Public conn As New ADODB.Connection     '标记连接对象
9 ?# L9 N! y1 g& ?, YDim sql As String, B) r# Y: Z' |/ q8 q6 l3 a
Dim rs_maxcut As New ADODB.Recordset6 V/ H3 r7 @4 b+ p7 F
Dim str As String8 c! H* a! Y4 u5 i$ v
Dim aa As Double, bb As Double# k1 b/ M7 F  ^# {6 }, \7 V
Dim mbd As String! T. [" v8 H6 F6 Z' j
Dim 总页数 As Integer, 行数 As Integer, 列数 As Integer/ [+ A0 V+ E! ^' `  k6 X
Dim 内容(999, 999) As Double- I3 j, E1 H5 m, w

- D" M) K5 H$ ~5 DPublic Function cnn() As String5 I/ z$ s3 p3 q$ [
    cnn = "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & "ersist Security Info=True;Jet OLEDBatabase Password=123"6 n; h- a; M% v9 z+ l
End Function- Q$ \, l& d6 e' d: s

& D- c6 l0 n- Y3 W8 t  SPrivate Sub 保存_Click()* L1 ?  o5 V+ Y5 V$ V
! N$ b, P2 B) Z7 d  c, v
writeDatabase
1 r: x! x5 H5 b) l: T( n# Z. e0 @    End( z' Z( B9 @5 j- I# `
End Sub" \+ J" k5 e) S# Q1 t' v
6 W  A3 d% b% P  U
Private Sub Form_Load()8 D, S' Q: f$ k, n% }! e
1 M- {8 e  A; |: Y, m1 T
mbd = "D:\UG_OPEN\ini\数据库.mdb"
( q3 o2 A$ N* `; v. }7 g7 ?& {3 U1 F; B/ t0 H! K: y! p$ M
    conn.Open cnn '连接数据库" B# c' Y3 A* K: A3 H* q
    readdatabase
" M* b; m; p3 G( Q' }    Me.Text1.Text = "行数" & 行数# _$ f' E8 Z8 d
    Me.Text2.Text = "列数" & 列数
( ]0 S3 ^/ a/ r& R7 R2 JMe.Text3.Text = aa+ Z  t/ W3 ~: G7 E: R
Me.Text4.Text = bb
! u6 X# q4 \4 kEnd Sub: w# r, X; B; t3 B) z

6 b! U) ?/ ?; `  ~Public Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)
8 K" I+ z- i8 d" e' t5 R+ P2 S    Dim i As Long
9 c& N( X$ ~& U" Q( c    sql = "select * from test"
: _+ u% p" x% a    rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集/ W5 X: Q/ }3 `, Y. M
7 |+ _( U# |. V$ {4 F

. a. t7 Y; J# A( Z0 Z- C# u! \总页数 = rs_maxcut.PageCount  '页大小rs_maxcut.PageSize* X6 F7 J$ ?8 I  N
行数 = rs_maxcut.RecordCount  '行数 (排除标题)) h5 e' y4 R9 ~) V/ f* h
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)2 a% _" {/ X; l/ {
! z, q5 D& p+ k2 o( d. s; Y, ~
    If rs_maxcut.EOF = False Then1 W8 n( K6 }' C1 Y9 W: I+ T2 l
        i = 08 D+ S3 ]2 e1 ?3 O( p6 Z' i
        Do While rs_maxcut.EOF = False# k* p' b: K$ Q
           i = i + 1
/ M: v/ J" x, _+ B1 z3 A' C
6 {. O8 g7 @: M0 b( R7 P           ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标
/ X0 k3 A8 @- K, v4 ?5 i, V
) Z& F, p3 K$ H5 a# B, |+ K            '第一行  或者  第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的
# F- o4 @. Y0 O. F" x  _* h( X5 _. k
: j: P' }- q& l& r( Y! R2 P
       If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
' Z" ?3 z8 d( K. l        If i = 2 Then bb = rs_maxcut.Fields(1).Value  '除去标题后的,第1行第2列5 Y- Q$ Q* K. o. A
8 `" O" K9 A2 N) L! ^/ x
        '读所有内容到数组
) Y- C, z6 n$ X/ [6 _, }  s        For j = 1 To 列数
3 G  Y9 }9 [4 T8 i" X, n6 g        内容(i, j) = rs_maxcut.Fields(j).Value3 G1 y5 y! [* [$ i! }0 i2 S
        Next) J4 {) z' t" W' B  b  x

/ }* P$ X* `: r' H6 H        rs_maxcut.MoveNext '下一行: |! [1 [% x3 q+ L
        Loop
  i5 T2 S% J: L$ K: _2 Y( R* V       rs_maxcut.Close '关闭
# ^, u! ]4 N4 i9 m9 P5 C) p( f0 l7 ^& M* @4 ~  s! B; d5 T

. s" `; K( O7 ?# X        List1.Clear
+ p* L6 C& C1 Q( f; V' X        For i = 1 To 行数( m- A9 y& k; A8 \  S! {/ n
        For j = 1 To 列数  t8 `. l: B3 E- L) y" o! ?6 W7 v
        If j = 1 Then
0 m9 m' {3 H+ N3 n        str = 内容(i, j)
- Q  g5 i3 y4 n9 c( M# |0 V        Else" e( ~# S! S$ W# H. t  Q' C
        str = str & " , " & 内容(i, j)- k3 @7 ?- r7 m8 n* w5 |3 k7 t
        End If0 P+ a. }, h- b( u3 P
        Next! Q9 i) i. }) ~0 F. s4 [% ~
        List1.AddItem str8 u3 I2 r4 N9 P( z
        Next5 \2 Q% j4 p2 I" ]- ]* }
1 {0 N9 L( Y( s# X1 G! G
    End If
. Y& ]/ Z/ E- y6 E
0 [4 D5 V" t9 J1 ?( n6 X2 T& `3 _8 p( Y9 o. Z: }( T9 z' g
End Sub
9 u/ @: r4 E/ |; v2 T& J$ _7 w! u  M+ X% F9 r" t
Public Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)0 y% f' a" p5 a' r6 h. U; m
    On Error Resume Next
7 {' X2 R8 x2 f7 S# [8 v# L    Dim i As Long
! o, D: F/ @+ T  Z2 }( ]    i = 08 w% _1 _) m" `* c8 K+ H
3 b# e7 T4 P' j5 i; K
conn.Open cnn '连接数据库2 L/ B6 U4 O. Z4 b3 C: A/ A

: k8 E, D, Q* r3 w, f  b; |'sql = "select * from test"
- O2 C% k# f+ f6 E1 }+ x- u; b0 N; \- ~) U- k
  rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集
# @5 T  e9 O! V) k' g  b4 ~' V  m  @& [+ y7 m, j/ s1 \3 k' R" y
    If rs_maxcut.EOF = False Then: v( P3 e+ R$ R- t, E& H2 B

3 d/ f- S# m* i  C: [        Do While rs_maxcut.EOF = False
6 g2 [* l" ?% @, r3 p: w$ _          i = i + 1+ d/ Z- W' f7 x1 `) U

* w4 i9 H4 [( P8 E/ D            '不要去修改 第一行  或者  第一列的内容  因为他们属于标题
2 X$ H$ `6 J9 j, q" x- g  t  z$ ~: e" w: _2 z* f
            If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列$ ]! G/ _1 R  x# h

2 m" u+ H" D3 B( m; [- ^# v            If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列
, r! d/ O7 L. X3 C: N( G+ _+ f
  B  U# Q# B0 B; P              rs_maxcut.MoveNext, I2 H7 d, ^' p6 t% h; R0 x, A
! H! K: B( ?5 I. Q
        Loop" G4 s4 W; _) r

" p: e8 X6 F  u# K" I9 a' k       rs_maxcut.Update
9 _7 V  j" m& V" {    rs_maxcut.Close5 n7 `7 Y" t2 D! v/ t
" m+ Q! n8 r1 V9 ?6 c5 `9 {: z
    End If
9 k9 P/ Z5 T5 a" w1 s
; O( S0 }: y+ x9 o3 C2 J7 K( M0 H& {End Sub
/ f- E9 x* w- K# N  L( O* k' R/ |9 }7 x

2 ~& W* v! H# E4 i# ?, q
2 r- n! [+ Y( ?/ c" D
4 R; z- }* o' ]6 i* z
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了