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

[原创] vb操作access数据库

[复制链接]

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

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

15757753770 楼主

2016-12-11 15:03:17

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

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

x
c# c++ vb 是可以互相调用的/ }% M0 H/ a+ b; w3 b
! `' [* W1 u: W& b2 h
vb操作access数据库 的方法& k; q1 `" e0 c# K

7 G. e' }, r+ T首先要安装  Office2003sp2 - v2 c6 h6 M/ {4 s& |4 E. E

; O4 w; ^  O* i! _) g7 X列子:读写数据库(.mdb)' F0 L/ D8 p* H1 i
- @+ P: S1 d$ u5 D
1.创建 mdb
+ \; I0 X% I2 D" V; w2 A& S0 r1 P开始->所有程序->Office2003->Access 2003  新建一个空数据库 保存位置C:\report.mdb  
, A, P2 }" b" e4 o创建一个表格 并重新命名为test          (操作和Excel类似)
4 w  ^: t* J2 P( ~8 ^/ D# r# Q4 k2 f7 p: U! o7 f
注意 表格名称 和源代码要对应9 Z. F& B% K9 I3 K% k* I  s% `
7 @# D- p/ g* d7 J7 r3 a
& j8 ?4 ?' ]1 {9 L$ i  p: A2 g
2.注册数据源(代码中已经注册)和写代码
0 u: j5 x! m! P; V: m$ N2 w% B& C2 o* M4 R" o# x% a, \

1 R4 Y$ D" Z9 _; X% n# K: @在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,9 b* V7 n# P4 B- V
我们必须点击菜单中的【工程】-【部件】,. N- k" `8 W+ t' f& f
在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和2 \+ R: f# Z$ |5 s  J
“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,
% r, x2 ]: q; H6 `3 j" D) h, c' Z/ y最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了* c+ }- c5 y4 o: y
* V- \4 I. N  V" E( t) M8 i
9 j3 V0 x$ z) T0 s, x3 D$ f7 k
添加4个文本控件  Text1 和 Text2  和 Text3 和 Text4
  U5 n4 H8 u2 k/ v' h' A; A" e添加一个按钮 ID修改成 “保存” : P5 f% R* p& W- a! F$ ~
添加一个 List1
- B7 U( B0 l5 `% \( H$ N" d: K2 s! j' h- Z6 o7 c
代码如下
9 y0 v2 \4 \0 |4 Q! V1 a9 a" ~+ o8 P& N1 Y$ k4 J# G; B
( G3 k3 J" q9 V
Public conn As New ADODB.Connection     '标记连接对象9 B4 G8 C3 a6 F+ U) @5 P3 A' V" d
Dim sql As String
, g6 o3 C: A0 d# g0 a7 ^) {5 V7 k1 s% LDim rs_maxcut As New ADODB.Recordset0 r9 w2 Z2 c& V. {+ y4 I( e
Dim str As String
& \6 [6 T& X+ UDim aa As Double, bb As Double
2 m. q! e. W# l  H8 h* mDim mbd As String
# j7 l. L9 P7 F; d3 m0 _5 e* wDim 总页数 As Integer, 行数 As Integer, 列数 As Integer* T) X1 r* F+ g
Dim 内容(999, 999) As Double2 I, x; f6 i, a$ ~
2 t( ?; ~: y( q; W! x) ~7 ~% d# c
Public Function cnn() As String
  J6 M! F! l4 d' K6 s$ o    cnn = "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & "ersist Security Info=True;Jet OLEDBatabase Password=123"
1 ]5 H3 i  l6 b) K4 sEnd Function5 {. q/ [2 V8 f4 n+ c, P
4 L3 o% P5 o5 y+ N, `* |
Private Sub 保存_Click()
* Q) e+ Q+ m' Q9 U/ ?6 {% `6 O" r& D. K9 h" A
writeDatabase0 z, ?+ g3 M% T: ?' @
    End- M4 O9 r. W5 B' k; ?1 B0 X
End Sub& r- B7 v# ?4 l9 H1 M: f
' j+ E5 W8 @2 f% }. h0 e3 a, x$ B
Private Sub Form_Load()
0 j- ~1 g# B5 M8 W, c# f. i& A/ U6 H3 m: d) Q# @; G
mbd = "D:\UG_OPEN\ini\数据库.mdb"
; V3 e1 ?9 v+ ^- X
, |5 `2 s3 ~* j0 t4 l* U    conn.Open cnn '连接数据库
8 [* I  B7 I/ b2 Q    readdatabase
; [# ?' @: Y) b* X. @1 k. _1 z. T5 V    Me.Text1.Text = "行数" & 行数
( K/ o# b. B# S' Y    Me.Text2.Text = "列数" & 列数
8 \* N( g9 X( ]Me.Text3.Text = aa6 S! @2 ]1 c  r: I+ \
Me.Text4.Text = bb
) Y) B% b; b/ D2 HEnd Sub3 j( ?" a% W9 ?1 E! r

9 W: E2 P) b3 r: J2 u9 {% \9 XPublic Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)
- F  D; U2 N) A6 S+ ~    Dim i As Long
) v+ `' Z2 R+ `# ~5 |5 r% \! D$ d: c    sql = "select * from test"
/ r8 \0 Q% p# v, l* q8 I6 C! P, s    rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集
8 r5 p# J0 m0 w( q% P! N
+ ~) X! g& C' [( m' c' Z% I4 r1 v
: M, g# R, O% p. f, _总页数 = rs_maxcut.PageCount  '页大小rs_maxcut.PageSize8 b7 W- `, F# ]  X# o) ?' F. k
行数 = rs_maxcut.RecordCount  '行数 (排除标题)
  [; ^2 h! C- x( E+ b6 \- m- d列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)
) P/ Y# F; \8 ?6 M, G8 l; o9 _: {
6 r0 b6 s5 k0 c; r9 T    If rs_maxcut.EOF = False Then
6 N. Q/ S  }) Z# i$ f7 Q        i = 0
1 U$ A7 N- x1 i2 ]& O, @% V  R        Do While rs_maxcut.EOF = False
# E6 o, z7 D" }) r0 j+ x$ Y3 m" ?+ e           i = i + 1
2 i/ t! r0 A" _; a  g0 D; s
. P4 |! t0 T. u6 @. h7 i' O5 ]( \7 x           ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标; A( \$ K; a6 j* @3 N" `7 U

" j6 x& T$ E$ s% K            '第一行  或者  第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的
! T" f9 d# L$ `3 @3 k
4 e. X/ A" @- b  q* w; l3 E8 x0 \% s7 A% l' d# U4 r0 j7 Z2 @
       If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列4 {, P0 L0 x0 h0 P; ~" I6 ~, z
        If i = 2 Then bb = rs_maxcut.Fields(1).Value  '除去标题后的,第1行第2列
. c7 V/ V$ I- u. y, {# o4 T7 {4 G6 F1 o/ u6 y6 I
        '读所有内容到数组
- G: F+ a* I+ l: R        For j = 1 To 列数9 f: S! J6 N9 H! P$ B
        内容(i, j) = rs_maxcut.Fields(j).Value* B' N6 d! j% G7 u  N. L* |
        Next
5 @- D& @; i* D3 G
! k; U( ~+ o) n        rs_maxcut.MoveNext '下一行3 @. Q" l" o, p6 ]" l2 z( {
        Loop. d2 g  o9 D; d' e. |' \3 v
       rs_maxcut.Close '关闭
- g5 d& H1 }5 W6 ]; N. I/ B3 ^+ g) W

5 h/ L6 M8 E/ i9 B" \) L, S        List1.Clear
7 ]$ K, S% b! M+ l* W        For i = 1 To 行数
- ]7 c. `- j" ?3 R9 M5 ~$ {0 Q        For j = 1 To 列数6 x. c( `: l1 o. _
        If j = 1 Then
. V: i; ]* n. c  j+ |! Z        str = 内容(i, j)  ^  w# {# R4 p0 a7 ~. ^
        Else% z; M/ L# u& h" |
        str = str & " , " & 内容(i, j)4 n* Y% Z% ]8 ~' n, d
        End If
" \' |! L& Q' S2 P2 H, `        Next
7 t) R5 b2 H; }1 o6 }. M        List1.AddItem str
* G2 \% t; p/ v# X4 K$ E, G        Next5 l8 Q3 p" W3 a* r* v* @
  u3 f& D; Q% f. p
    End If$ L# E3 j8 V$ ^7 h6 _3 Z
; B# K' {( T- E# P2 m$ G" L$ Z

/ l  E& ^- D# u( D8 zEnd Sub. W, {; ~. _! s7 I

' r5 t! \4 Z0 z  k1 M0 |% @3 i* Q8 I' cPublic Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)1 ]! ^# o' o0 w
    On Error Resume Next
8 R6 V9 e' l: B* ~0 Y    Dim i As Long
6 @% i; O# Q" R    i = 0
1 l' Z- ]9 N7 G% C! ~! I' [' \+ q6 a% c+ m" a1 J
conn.Open cnn '连接数据库( z, K: {7 T* ?: x8 u+ ]* S  c

5 a% N6 f; M2 c. r'sql = "select * from test"
. X: v" [% h7 }. M$ ~, U% X3 A$ P, W6 ]8 t- D& m/ d* s
  rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集
2 `) E- G( S- l- V/ D, P
8 J8 c# r! t5 ?    If rs_maxcut.EOF = False Then
" o5 D$ A: r4 _$ _- {& ?. E+ a. e9 x. s
        Do While rs_maxcut.EOF = False
" q$ U/ p# ^' O, e) A4 o( H( w9 U. F' [. B          i = i + 1( g( ]2 o3 B4 i+ j/ ~9 e

5 c+ {) m) Y5 @2 |# T! Z            '不要去修改 第一行  或者  第一列的内容  因为他们属于标题- J: N4 ]# S  d  N

- ]; m4 H- G$ r' @5 D* N            If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列
2 m  _# v" V- A% ?% f+ e
$ p+ j2 ?. k8 f6 u+ e5 E3 D            If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列
1 v. w, \# I6 @0 A; ^* P" w9 R1 O, X% A: N2 H+ Y
              rs_maxcut.MoveNext- w( T! B9 |% Y$ k

" A6 `* d" z1 ^. c) `        Loop( G4 L, o/ q' W  P' ~7 q8 \* f( r

5 i7 P- f- e6 _2 |' i       rs_maxcut.Update' f- o; x4 q% q& N
    rs_maxcut.Close; h$ E$ y9 q1 i& ]" i2 C7 x. a, M9 ]

" R2 V" s/ ]8 e+ P9 p' r# u    End If; `- ?! z' C: V; D5 G

/ X- g4 ~/ M/ a" m; sEnd Sub0 p8 H5 E" j# _! i7 T2 x
0 s7 o/ ~  G, V, l
9 T8 \5 P% T( O/ T: R2 G# j$ N
$ O) [  _, m- r3 I& J
* G; [5 h5 |7 @+ ^9 J! A
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了