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

[原创] vb操作access数据库

[复制链接]

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

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

15757753770 楼主

2016-12-11 15:03:17

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

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

x
c# c++ vb 是可以互相调用的: t8 B% y, a) W

9 y* L9 i( ]6 Z6 ?8 s  q8 F$ avb操作access数据库 的方法. \$ _" p* E  N2 Z& K) M

' N. ~9 x" W$ o  K首先要安装  Office2003sp2 ' }$ G8 B' a6 I! @7 |

6 F; R4 a( D7 a2 D列子:读写数据库(.mdb)& [$ F9 s) D8 I* g: `3 H5 o
' b0 S: a# K% Q3 ?
1.创建 mdb) ?- j4 ]9 P# n: M) R6 i
开始->所有程序->Office2003->Access 2003  新建一个空数据库 保存位置C:\report.mdb  - y' p/ t* U9 M4 B+ r1 m
创建一个表格 并重新命名为test          (操作和Excel类似)
3 A- D3 H! f2 j/ p3 ?4 a0 _- S- N9 `0 B& C
注意 表格名称 和源代码要对应5 d$ h/ Y/ g( X$ q9 I' K
; U# S5 Z% E$ T  n, w- L6 o

, g8 ?; @  C1 B: I, p2.注册数据源(代码中已经注册)和写代码
5 C3 P# [, E- D3 N: b
& `4 r, I; `. G. p$ G0 F* o5 Q( F0 D- l
在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
/ Y; V6 y6 z4 ?! h4 e5 Z我们必须点击菜单中的【工程】-【部件】,
* K8 a/ k, E3 g/ j4 h在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和
# s  e* Q$ o. ^) q. |( a“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,
3 u4 v5 m6 {. s0 z4 M最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
& r# t( k1 ~, B6 e8 S
# M$ a( ?! ^! U2 S& O
- L, ^6 f2 F. ^# G& N- W- Q  D) o添加4个文本控件  Text1 和 Text2  和 Text3 和 Text4
6 g; U- s* ?) M8 p0 b6 a* c: Z添加一个按钮 ID修改成 “保存”
, P2 O$ |" }' v添加一个 List1$ r! |) _% ^7 m1 [+ a) |

1 [6 O# t2 P7 `- Y' h1 N: v* v代码如下
2 n4 h% l( G8 _* ~+ _& Y! j3 ^# J, K: A) e+ R8 h0 v

  o% o  J6 P1 a+ [5 [7 lPublic conn As New ADODB.Connection     '标记连接对象
: M8 x; x0 h! R, J4 FDim sql As String
  S+ O- ]/ z' Y0 o$ _) JDim rs_maxcut As New ADODB.Recordset
, }7 e( E  _5 O% D) }3 \# zDim str As String3 }* L; I) u* m2 b4 Q. u+ @
Dim aa As Double, bb As Double
( ?2 r$ b. H% O7 p: X. P! yDim mbd As String( {4 Z, {! s- D7 f
Dim 总页数 As Integer, 行数 As Integer, 列数 As Integer
% O+ A" f; z9 a$ N- ~' d/ mDim 内容(999, 999) As Double8 N9 t* L9 T1 A8 S: I
2 j0 P: b9 i4 E% N  c3 `" Q
Public Function cnn() As String3 O" G( W, ^% e. r
    cnn = "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & "ersist Security Info=True;Jet OLEDBatabase Password=123"- ?0 N& D! a4 @* ?  _& u
End Function
) g% G/ e/ p1 E9 V+ P. R1 G3 ]6 L* x# P* I
Private Sub 保存_Click()
3 n8 g* F4 w% U! j3 e3 d
5 I3 I9 p) w0 D6 |( Q writeDatabase
* \% m$ Z0 w+ r! w1 S    End2 a9 J( n) f$ \  w% A& {7 B
End Sub
3 u1 u# R& o1 e* |% i$ W6 e
  t. f% y! V( A2 a3 v7 J# nPrivate Sub Form_Load()
, E. }5 O$ I) W+ ^7 M, g" ]
- Y: n- b2 [+ ^" V! e3 J4 y8 n mbd = "D:\UG_OPEN\ini\数据库.mdb"
: ?3 Q! m$ t. y+ Z3 H; X; [3 s+ J5 L- {/ n& `3 z7 h6 _
    conn.Open cnn '连接数据库) F* s! K' l6 p& [$ C& e
    readdatabase
0 ?' D4 h0 r' O+ Y2 T  L    Me.Text1.Text = "行数" & 行数' F1 W3 |2 E9 h! h
    Me.Text2.Text = "列数" & 列数
+ m: }1 o/ i; F+ x$ gMe.Text3.Text = aa
' {( ]1 g0 N$ cMe.Text4.Text = bb
+ J% f! A( I& H  M# P! kEnd Sub
9 T) O7 c3 j+ A; F* s4 ~8 w+ l
- ?5 M  ], \7 P* I. bPublic Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)
+ ]$ H3 y  k2 K" v# i! \    Dim i As Long
- E; T8 Q' q2 S" o$ @! T    sql = "select * from test"
3 f$ P2 I+ @" D  ]' v" r    rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集
# d4 N, q& u1 H4 Z4 m4 t
+ R* u& `( m7 W' Y4 }( v  \6 ^+ I) o  |. I
总页数 = rs_maxcut.PageCount  '页大小rs_maxcut.PageSize2 X" g  @& ]6 A: f- F0 [# n+ m7 k
行数 = rs_maxcut.RecordCount  '行数 (排除标题)
  D0 r8 G6 K, j5 u1 V- Z6 k; p列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)
0 f5 I+ {5 p$ F  P- X$ U. z; _7 K) ?. ?6 ^, l: }" ?$ J5 I
    If rs_maxcut.EOF = False Then  x! f! g4 S, }* g
        i = 0
/ n3 H% q0 H5 q- R/ K2 c4 ~1 @1 `        Do While rs_maxcut.EOF = False
$ {' K- J9 [0 G# Y           i = i + 1
9 w7 B" [2 K# t6 c$ ]( @! _% j# V* b0 c& {4 g
           ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标. a) T: }% u3 b! U1 M( C; F

& u& ]: J1 z) K) J0 H4 F2 d7 \            '第一行  或者  第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的' C' t4 z  e: `5 D
" @: Q$ j2 C+ x% w4 g8 |3 Y

" ~8 O; H& t3 I2 t, l       If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
7 B  c2 _/ _9 ]. t* {        If i = 2 Then bb = rs_maxcut.Fields(1).Value  '除去标题后的,第1行第2列
2 G2 v4 l7 B# {1 @0 o& Y1 J4 B5 l: U* F/ v6 @$ {6 x* ~* P5 d4 I& ?2 [+ R. u3 C
        '读所有内容到数组
* J1 B5 `0 j9 ^3 l4 H' @* h        For j = 1 To 列数
5 G8 {$ @$ g8 l1 F1 ~) Y1 c        内容(i, j) = rs_maxcut.Fields(j).Value
0 Q9 u4 v: j0 z. E' B6 ?5 L        Next+ h' Y3 F0 K; P( A- i1 x: R

& @$ s2 K9 y1 Q% e% k: C3 k2 v# Q        rs_maxcut.MoveNext '下一行, ?. R3 o2 q. ]% N
        Loop
( _* ^) R. ?7 A' D       rs_maxcut.Close '关闭9 G. f. Y# d# a3 a9 Z+ o

. t- {! N3 R$ g+ B. {3 ^- I! V7 O" E+ x9 b9 x3 O
        List1.Clear$ T7 K* Q+ W; ?! C7 U
        For i = 1 To 行数; K2 r0 W" i4 Q* X7 |
        For j = 1 To 列数6 S7 e, n/ y0 [
        If j = 1 Then
8 D) X, q# j4 O/ K+ A' `        str = 内容(i, j)
8 w' W- W0 ]' }& V# `# I- c4 O! n        Else
5 m6 h* U. _) u        str = str & " , " & 内容(i, j)' p( q/ Y) C1 o8 R1 z7 b& P1 f) M/ }
        End If' G& A" g% w: L) ^5 O
        Next
* f9 k: T/ c) F& ]9 e4 p$ h        List1.AddItem str
# q; Y# D' R* ^5 N" |        Next
2 L1 ~1 P" Y% ~7 Z) c* G/ B5 F% F% a3 o- {# K0 c- V+ Q& s
    End If- f) [# ~) C+ x2 L3 ^' Z

) o' @6 a# ]0 ?9 I4 o: w0 F" f- ~/ X$ Y# _* P4 k
End Sub
; I- u6 f. T) F# B+ ^& Q; s; @, \# Z
' I1 U  R/ M% d& ^! qPublic Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)6 {$ G$ E* w/ Z' r" H
    On Error Resume Next
! [2 N4 ^6 c+ p& x# L" @$ ^2 `    Dim i As Long. c5 L  j1 m6 a- H2 F
    i = 0
# m' j" P( C1 O- e. B) Y
8 }" v% ]/ u  g$ T4 `* ~conn.Open cnn '连接数据库
* g! p5 U' D* M) V) Q
% S  `$ e$ J" t) i0 U5 V'sql = "select * from test"% x3 a% r, e1 s1 U0 i& F# Q

/ }2 N7 @4 q6 u2 H/ r  rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集6 L& k9 J3 z# Z2 h- j" f$ S* ?

" B5 ?9 I$ C! W; \6 T' t/ l6 K    If rs_maxcut.EOF = False Then5 V/ {7 G( E) f$ C2 d1 U

0 K: U5 r/ p% s        Do While rs_maxcut.EOF = False
6 H, D1 W" v% F/ @          i = i + 18 D$ o: m& S" C. `; \
" s4 c! M; R5 ~4 x$ F
            '不要去修改 第一行  或者  第一列的内容  因为他们属于标题8 F( m9 q$ k( O; m
  L: r' k8 H" h: `8 r: M0 ^9 X% \
            If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列
' c5 B7 E, k9 ?% w* z& r  U
, g0 n- m4 [9 [" X" F7 L7 l            If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列
( J$ h3 k+ F; o+ ^# U( @, ^
* C1 p3 n3 D; p; `/ l2 F/ g  g" ^              rs_maxcut.MoveNext; o% f) p1 N' `$ t) _) H7 S

" d# K1 p; j. T        Loop% {3 d/ L" Z; w$ k( n

% @& O2 W" J; G( F5 \       rs_maxcut.Update! q7 ?9 W7 h  }, i  l
    rs_maxcut.Close
8 ~' v+ F3 j. _) B
. W" C6 C7 {$ P  f( G7 V  F$ e    End If6 U1 j9 U0 r: U9 [
$ ^' v4 r$ v; b! k8 t" E
End Sub2 j% m* p  S1 N& d! _& C
& v% i6 u# k& i6 x

8 l7 b* g( L( s" x  J6 k. M
) t- W. S( u$ x" F
# K6 Z  u# ?2 M" Y: A: R
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了