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

[原创] vb操作access数据库

[复制链接]

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

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

15757753770 楼主

2016-12-11 15:03:17

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

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

x
c# c++ vb 是可以互相调用的
' o: r6 a' x8 S5 v+ n8 Y/ r
8 B. u0 p) M: ~/ |: j- Evb操作access数据库 的方法
( g4 s7 L) o- U, U4 q+ x; l9 u  M- M$ N* k8 C
首先要安装  Office2003sp2 / q, ]. k9 a7 V. ]

) a$ K+ j% S; M, X2 C; C列子:读写数据库(.mdb)
5 m; k% @% [! I6 m/ ]  Z( X' }. s  r
% |4 y, z- S1 s) @; {  j1.创建 mdb
6 ^/ u& r- L% E6 S; A& h开始->所有程序->Office2003->Access 2003  新建一个空数据库 保存位置C:\report.mdb  
9 P4 E5 O' L, R4 D创建一个表格 并重新命名为test          (操作和Excel类似)
$ M; z& ?  \: V! f6 q' f7 B
5 Z+ K, w7 l  g注意 表格名称 和源代码要对应6 G* S# a5 J# g( c$ T8 a5 c

* m/ U, e; i6 v8 N) n1 Y" o$ r8 t/ b3 w5 j
2.注册数据源(代码中已经注册)和写代码
  z& U4 K6 W0 f# I* ^2 |
0 {3 O: }9 V0 h& M8 e
$ ]2 J7 R7 Z* r1 ~: s) L' _( B在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
; L5 r; l+ K! g$ K- a: A' c: {我们必须点击菜单中的【工程】-【部件】,
1 q- H0 w. c2 j& \9 b1 v在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和  u" v& f1 q: F
“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,( A1 r% B# p  A( \! q1 F" _" [
最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了8 F) e* z- |; C- N' b/ D

& y8 [$ n1 e( ^. V8 n% U3 v( ?) y' ^: _0 M2 Z
添加4个文本控件  Text1 和 Text2  和 Text3 和 Text4 ' I  o2 o+ y+ i+ j2 P0 o* ?; w  c3 I8 g
添加一个按钮 ID修改成 “保存”
$ f' z9 v) w; V- q添加一个 List1
& f5 Q7 N2 _% G5 t' d: i
9 L$ Y) m2 |" ]$ W4 w% u3 k( A代码如下
: W* V  c) R% L
9 D1 ~- f3 u: i  H. n' s9 w5 F5 K% B9 d& t6 h
Public conn As New ADODB.Connection     '标记连接对象& x" D# V' B" e+ g
Dim sql As String9 w" c. z; _6 Z, Y) p' [+ O& B8 K
Dim rs_maxcut As New ADODB.Recordset
3 ]& |; B  D( Y5 m- uDim str As String
- F0 e, P7 E0 [( A8 xDim aa As Double, bb As Double
, Y9 T& e- P1 g* B, U0 [Dim mbd As String7 I4 N0 v+ M9 I7 Y: V1 `7 T
Dim 总页数 As Integer, 行数 As Integer, 列数 As Integer- q* ]# _7 h, U* I2 V* g, d# @* m
Dim 内容(999, 999) As Double
/ D8 d" x7 T0 q6 T3 `& |+ l3 _
Public Function cnn() As String. t; ^) L0 ~2 l4 p" y
    cnn = "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & "ersist Security Info=True;Jet OLEDBatabase Password=123"
, A. h) J& _6 sEnd Function
5 s7 c! |; R% W2 d% q
7 h* b: u9 m  H: ^Private Sub 保存_Click()
/ n) c5 a  Z0 V3 f0 i, _6 ?3 t& p5 T6 V5 K9 H' v
writeDatabase
& g$ j! U2 y) ^' B  Y    End
  w  A$ p8 d( u  x" pEnd Sub
: k5 b$ {  H' Y, Q3 _1 J: p
- y8 A0 ~4 w) Z6 m7 |Private Sub Form_Load()7 G& y! o3 x  N* Y
3 t) [& r' x( O: R; V8 h; u0 t/ q
mbd = "D:\UG_OPEN\ini\数据库.mdb"
$ p% D& T9 v8 O1 _# J0 I+ x' j2 B, R6 p
    conn.Open cnn '连接数据库
# ^( g' l- j1 F" m1 u8 X$ @    readdatabase
6 G0 }' x2 ]+ M$ B% m    Me.Text1.Text = "行数" & 行数' @7 y+ r$ Y3 {
    Me.Text2.Text = "列数" & 列数2 R( i4 R+ v. P3 F6 ]9 E' {
Me.Text3.Text = aa' A. v, T5 J0 j( r
Me.Text4.Text = bb- _1 y( Z# @4 Q5 C; [: P
End Sub
1 D/ \: T- d/ h) H! C2 {
/ s. M$ T( c) e' P3 y% N' T; a8 SPublic Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法): Z2 s$ D' G* Z4 w
    Dim i As Long
0 B5 S; B2 Y7 J2 m    sql = "select * from test"
- _3 G  o1 {/ C* b% t" g* ]    rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集
" D8 Q  X; D9 `+ Q, ^$ p1 D1 L; o" w3 H, P6 z$ m' c
4 I5 D. q$ i- ^
总页数 = rs_maxcut.PageCount  '页大小rs_maxcut.PageSize, f( o6 C5 n5 p% f! o
行数 = rs_maxcut.RecordCount  '行数 (排除标题)
9 n: t! N- S/ L! ]8 T8 c列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)) j7 c+ e% t* q. Y
7 R  \. k4 ^* T* o# ^  l
    If rs_maxcut.EOF = False Then
9 S) W2 \6 A/ {1 N' T        i = 0* U6 W* {9 f. q
        Do While rs_maxcut.EOF = False
% j2 ~" _/ [4 y) y2 \           i = i + 19 t: j# l- X* K; E! K
5 [+ e' K  j/ P/ O
           ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标
3 Z& X" p3 }, }- H0 f
# z( z3 h1 _9 f( Z% i0 M            '第一行  或者  第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的/ I, C/ c5 ?& u0 y
  @1 Q1 d5 w: f  j) X8 n3 Q' R

7 h  E- `- Y8 v       If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
5 \! r* ]1 c" i/ I( _& W8 h: G        If i = 2 Then bb = rs_maxcut.Fields(1).Value  '除去标题后的,第1行第2列2 a: e4 a# I) \

- I4 J* u9 o. t$ _        '读所有内容到数组  O: g; t; W- _. A1 j3 p
        For j = 1 To 列数
8 v4 E5 S% e/ R0 Q! m        内容(i, j) = rs_maxcut.Fields(j).Value# l, ]* F- F1 i( C0 S
        Next0 t) I8 N3 h2 [. D# E# a# S5 _

, J& G/ @9 M" I6 _        rs_maxcut.MoveNext '下一行
3 U% `# d1 M, p5 o& O6 r        Loop
0 T8 L. ~5 G7 C       rs_maxcut.Close '关闭2 f- K: y' G$ r; R

/ y  ]1 g3 R. ]' T, D. O* _& S  o8 }# ^+ N# Q
        List1.Clear
( `2 P: Q3 U- U$ w6 A        For i = 1 To 行数8 V9 h$ w; N0 P( X5 @" y% d: ]
        For j = 1 To 列数7 R  k6 Q3 U8 o+ ^2 O# f+ U% h
        If j = 1 Then) E& I  q& l, D+ Z  l
        str = 内容(i, j)0 s/ }' i. J% x$ f  j; y
        Else
/ ?& q& W+ {8 e" h6 H. G        str = str & " , " & 内容(i, j)7 A5 T4 n7 e8 z! d6 b8 A
        End If
& {5 Z0 h1 x- Z: r; z# e        Next
) ]# e' F+ M$ [- E. u# m% X        List1.AddItem str# H7 f/ r$ J5 I
        Next  q. V5 j% ]4 U" c% @4 F/ i/ _

% ~; l: x8 H$ B; V6 R, d    End If) T) ?, c7 S) h  T4 [/ W& x
& r$ {7 J8 u- r0 Y/ J, S
" v# ?6 L% T  K6 c, u3 P" W1 z
End Sub
$ R5 Z9 P  I/ [" A; l
& Q1 ~  ~0 K/ j, |' [$ _Public Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)
2 J  G6 f1 p& Q/ ~1 e$ g4 S    On Error Resume Next
7 i3 p  l0 b$ b' c  D2 n- r    Dim i As Long" q; y" Y, r4 L! b
    i = 0' W7 q; R" u0 V

9 K7 q3 X5 S0 N: Pconn.Open cnn '连接数据库3 `9 ]1 `$ B1 d4 ^
4 f6 t; R: F4 \) i
'sql = "select * from test"
$ l2 S0 p5 J2 p# f3 t$ b/ K/ S( T" t; T: Q1 v
  rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集3 o, Q+ s' e9 ~7 H
3 d# K3 r# l* u- ]1 G0 B
    If rs_maxcut.EOF = False Then+ B5 q& J' f: O/ v' ]! v
6 P$ m2 Z: p. `" X
        Do While rs_maxcut.EOF = False
& t8 x# F  l: Z0 r          i = i + 1+ l7 ^0 k  d$ R3 i" q! [' p9 v

9 D* Z5 J# q7 |+ _/ [            '不要去修改 第一行  或者  第一列的内容  因为他们属于标题
5 O) o9 Y) \6 l) ^+ v( ~( m: [1 a# ?/ p7 w
            If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列
1 m- a7 c* D. I  L# V/ j6 V& H6 f( s$ T: U& v. @; g( B3 l
            If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列
" e5 |) [2 S8 m8 i1 `) f) w( I9 V
: w; e  H7 I+ v$ W$ h              rs_maxcut.MoveNext0 Y" K# Y( d  e9 Q+ a
3 g4 V7 _% C1 D$ P  |
        Loop1 P- M) W# O( g' B. E% N  v/ K& H1 l

2 V5 Y, Q  c0 E0 Z9 N2 a       rs_maxcut.Update$ l/ ^1 w/ P, ~0 g
    rs_maxcut.Close. k" N  `8 K' C' F$ R/ |' [

7 t; m: y: j- @: ^% o    End If  s+ H( ], D; D3 b6 y9 J% o
/ n5 i6 U. o! W5 d& d' W; w# M
End Sub
5 T/ a# s6 V$ w# @
/ _& s& L' D; _- @! s: Q! r& t% h3 q, d+ J
5 s; Q2 a" T  A  X: o: c( Z: Z) a+ t. L

$ m# ?$ W. y3 N& M7 y
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了