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

[原创] vb操作access数据库

[复制链接]

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

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

15757753770 楼主

2016-12-11 15:03:17

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

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

x
c# c++ vb 是可以互相调用的
. \6 g8 ?+ A) e8 _  z) p7 Q4 t+ N8 x
vb操作access数据库 的方法  P+ a3 p" ~; N; }! Z/ J

1 O" _0 L# K+ R) e% o首先要安装  Office2003sp2 4 L9 M6 f5 ?8 b

: B2 @, ~9 R4 W9 O列子:读写数据库(.mdb)
, @7 a0 Q% U4 y' m# q* @! T% X1 K3 h" J; X# H5 }# S
1.创建 mdb
, P9 U0 G6 A/ l开始->所有程序->Office2003->Access 2003  新建一个空数据库 保存位置C:\report.mdb  . N4 [" D6 l4 o: N
创建一个表格 并重新命名为test          (操作和Excel类似)  P5 m, V3 V* ~: U# a- x/ t) V

* g2 \; x& w# G注意 表格名称 和源代码要对应5 q* w& e1 }" y' v
- X( ^) X! K9 o5 R

; k. L  N/ [- r; X9 Z) x6 e+ b2.注册数据源(代码中已经注册)和写代码* f) C7 U8 o1 H5 k2 S! s! ]6 h

4 ]$ C( j2 x' U& u. k% o3 ]# A5 {( _& ~( ~- w
在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
$ N0 G4 F+ l8 t) ?1 W/ P8 T我们必须点击菜单中的【工程】-【部件】,' [7 n4 J1 j, u' g  p$ W
在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和
7 Y0 u- u( w7 a, c8 V“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,- s) P! k- G" T6 u0 J# K
最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了4 Y; c6 Z3 p4 G5 q( k, k

9 T  y% b' I+ H9 g
! Y' T& _- D/ e0 k& L+ m/ x添加4个文本控件  Text1 和 Text2  和 Text3 和 Text4
  ^. Y' U  Y$ ?* b. {$ \: r. F添加一个按钮 ID修改成 “保存” ' A3 C8 p6 ~4 K- _& U
添加一个 List1
3 X$ r- r, Q! u7 e$ [7 e6 Z  c  |9 V! m  y0 {
代码如下9 x0 B: O$ \% @# Y; v) H) O! [

) z) \! Z9 m5 V& A! i& \$ a5 C! r" C: o) Q6 o4 Z7 `& g/ w8 s3 S
Public conn As New ADODB.Connection     '标记连接对象
7 J& q! X* j/ \Dim sql As String6 i  y% c+ Q, G, p7 q5 D/ ~+ C
Dim rs_maxcut As New ADODB.Recordset' u4 d" _" x7 |4 N; o* C
Dim str As String0 m) s- Y; M" O- C% R: L
Dim aa As Double, bb As Double
, ^# c8 p1 n; }% g8 BDim mbd As String# i- x0 {2 p$ v! k& o8 I4 ~6 x' I
Dim 总页数 As Integer, 行数 As Integer, 列数 As Integer
* }0 G5 P5 n. z( G5 cDim 内容(999, 999) As Double
( I) p4 e1 A9 t7 s! w, P0 V3 x$ c; D0 V+ s" l
Public Function cnn() As String
4 n4 c3 J$ d# L1 f    cnn = "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & "ersist Security Info=True;Jet OLEDBatabase Password=123"
, s& i0 P. S- ]& W) jEnd Function; e4 O! T, I2 q! P3 j( `. G! I

2 N$ w0 G4 e2 A. O6 r0 APrivate Sub 保存_Click()4 S3 I# b" g# B" {7 X) t4 `
1 V- N0 t$ b7 k7 S, K! H2 Y0 d
writeDatabase
- P% w( L; }0 I$ e! L2 h    End+ C: d  Z9 s* g) c1 @( o
End Sub
7 p+ q  m7 V/ N: H- _9 H
0 z2 h0 A0 C. KPrivate Sub Form_Load()
* m$ {$ {: C- r+ a7 D
" C7 E( R( n4 c+ ?! N, i# d mbd = "D:\UG_OPEN\ini\数据库.mdb"
3 a, Y5 n" e( _: i# v, ~/ J: a; i7 o0 V: W, N
    conn.Open cnn '连接数据库
5 b1 ?; u' M3 G    readdatabase
- K# \0 M9 U& g% O/ V    Me.Text1.Text = "行数" & 行数
, E8 M0 I9 r1 X6 N3 ?    Me.Text2.Text = "列数" & 列数
  {- T* Z7 V. @% x8 XMe.Text3.Text = aa
# W4 l: X" n5 l$ m1 ^9 C: TMe.Text4.Text = bb
0 D0 i. O, J; I$ V8 C2 Z* nEnd Sub
/ o" u$ q0 }# o& {
) h$ i7 }" n5 C  V% l, _6 @5 HPublic Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)
9 D% V6 w# {0 y" {* O    Dim i As Long$ F6 Z7 A' A1 d# Q# }' ^7 F# h
    sql = "select * from test"0 W/ q8 C2 b; A* l; q
    rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集4 c2 `2 Y6 W" i' U) h' _5 J" {" O

( n( B+ T$ A; m2 F
0 d  |/ T, K  [% d% W( P总页数 = rs_maxcut.PageCount  '页大小rs_maxcut.PageSize' m/ i* }# T% y; F: t% _
行数 = rs_maxcut.RecordCount  '行数 (排除标题)& M- [- P* t7 t2 |
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)
& H$ ~5 @/ L: A# A3 J$ O: j- }( ^. x" A' s6 h& o0 H
    If rs_maxcut.EOF = False Then
7 l; X& Q2 d2 B/ A& P9 w        i = 0
1 ]) Q0 d; U/ {        Do While rs_maxcut.EOF = False
/ Z5 C' v! ^$ F2 E" N) u           i = i + 1* m. W5 S  y9 R3 {3 ~% b% B4 k
8 U/ @- o2 |9 A$ Y; {0 |  _6 e
           ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标
3 U7 T7 ?7 r5 n: A- w0 N& W* J$ q) J. ]3 Z4 u
            '第一行  或者  第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的
( C* X: `: p* ]8 I# i! }
$ W( E1 |: }2 y9 v: G1 M: Z" x) \* c4 i
       If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
3 y' @( o9 S0 x        If i = 2 Then bb = rs_maxcut.Fields(1).Value  '除去标题后的,第1行第2列4 P3 x. c8 I# J

( f. O  D& a9 S        '读所有内容到数组# D  F% d, _: B  j
        For j = 1 To 列数: z' _4 D- }; l" F2 y
        内容(i, j) = rs_maxcut.Fields(j).Value
. x0 D8 G. [, b: L- \* ~  D        Next2 H. t: `8 M: [% L4 ]( q; m0 J

( S" U# |! L7 Z6 s0 t- d5 |/ B6 Y        rs_maxcut.MoveNext '下一行& ?! ]: p0 C  v! ]3 [% h
        Loop
$ k6 O% K' o) N( s0 G4 J5 y       rs_maxcut.Close '关闭
8 L3 L' I' x- l2 \% {" b, I
: k" Q; w& y8 w) `
- A6 o: a$ ~+ [( }6 W        List1.Clear: @, h6 O; f3 Z  D6 Y9 ?9 _
        For i = 1 To 行数# C' [1 `, u) \. @7 G3 Z, A# r# ~
        For j = 1 To 列数& Y8 x0 K/ m, b6 p. t
        If j = 1 Then
/ ~: y5 H: `! T& X* k        str = 内容(i, j)
- V3 z( y+ L# _* x" ]- c        Else" Y% s$ [3 k% b; l  a, L
        str = str & " , " & 内容(i, j): B# J1 L8 T7 z2 Z- E/ S
        End If
% K$ @/ u1 V5 v* S' i+ [- s! A        Next5 U1 Y4 `2 D# L
        List1.AddItem str$ p2 R% u' T! {- e
        Next
/ a  D2 u+ P1 \+ Z, M
5 W# m9 ]6 f1 r0 u+ P    End If0 j7 I, g* ^. {! b- x7 Y

) k+ v$ A  X6 x
2 {, e+ u" q# M& l6 PEnd Sub" b" }9 j2 T" u7 f/ ]$ Y8 q1 u

1 B( Y0 A1 p/ j9 Z! u0 N! Y5 ^: YPublic Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)
  U& H, I& w) h+ H    On Error Resume Next
* C/ x" `5 |. R1 {. _    Dim i As Long
3 ~$ p) Z& l; `" Q2 Q" h    i = 0
1 _3 q9 b: p1 k
+ o3 s+ R- M3 H" C, Y. y+ S% Bconn.Open cnn '连接数据库
: L& X1 E8 \. Z% \6 {$ |( j+ M  S. U  \: c- |
'sql = "select * from test"
7 V( e% m. v; F0 C8 A, V, a/ Q. u, L, R4 _/ f& M$ J' O
  rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集4 t8 Y) F0 O0 n/ b- P7 ?, i8 n
" |! M( y' \) W9 K' v
    If rs_maxcut.EOF = False Then* ?: X' e! h9 R1 Q

- r& I7 _1 p' v8 c, U. Y6 [' n& v        Do While rs_maxcut.EOF = False8 X5 G; i- |' i  E
          i = i + 1# i0 [& Y, A5 ]/ |( G
- C0 g; {& W6 {$ i
            '不要去修改 第一行  或者  第一列的内容  因为他们属于标题: r) I0 A* I- B9 c; }& m

! y5 b! p0 o3 `3 ?) Y            If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列( ?. a5 V. N# `" `

" `, w7 [) x' u2 C            If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列& ^: Z% q8 H8 L& g

2 S* ~  u$ t$ K% s& o              rs_maxcut.MoveNext
9 L7 _* s$ q: Y5 f/ }4 t# C$ D5 _. z, N( O- C/ ]8 t. c: g
        Loop
  |0 a3 T6 E1 P$ v+ X/ h) j! A# k. i
       rs_maxcut.Update
0 g* J4 K5 r3 ?& o% A# k    rs_maxcut.Close! v3 U+ O/ j* m! Z) z. i
* B7 Q7 X5 b3 p" a6 Z: w* Q
    End If0 O& y% \( E2 R: \7 }

% M& ^! t; u% y/ G0 ]+ JEnd Sub; z" Y7 Y7 D! e' Z; v2 A. l

1 m2 O3 D- e6 I- p- z2 }
! j$ W  w; H' q& N: S  S6 E0 s" T( B1 h. R

, M  {; I3 T* w$ B1 W% 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二次开发专题模块培训报名开始啦

    我知道了