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

[原创] vb操作access数据库

[复制链接]

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

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

15757753770 楼主

2016-12-11 15:03:17

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

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

x
c# c++ vb 是可以互相调用的
, d/ }, G3 L6 t4 U( B+ y" j- ?3 B/ P4 S5 u$ X7 R6 n
vb操作access数据库 的方法
! }8 z2 X/ P* r4 a2 ?$ i) t  `9 C$ j
. L; u1 g/ V% s1 V- r首先要安装  Office2003sp2 ; p9 c6 I* I2 }+ V8 @, S. Y0 G
8 t- Z0 d$ Z0 @
列子:读写数据库(.mdb)
9 Z- p4 W7 R( L( K9 f
* L( F- j6 ]( C! y4 L- ]1.创建 mdb
9 I+ f0 F6 U5 c" w  e7 V开始->所有程序->Office2003->Access 2003  新建一个空数据库 保存位置C:\report.mdb  & Y( F; `& G4 t+ ^7 r
创建一个表格 并重新命名为test          (操作和Excel类似)& G- t! k% l2 o, U

1 k9 [- y3 E9 K8 y! {( o- g5 d& z注意 表格名称 和源代码要对应# D# y% w: ^& f9 U1 v4 R; U
' f' o' k) ^8 u- t: v

, A4 ^7 i4 Z7 s; z( ~% _2.注册数据源(代码中已经注册)和写代码% i) R, D1 u% W% [# M' R& T

* V4 t- H# {. }2 K5 y
1 n: L) F1 t* U/ {% J在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,4 ^6 n& }! Z6 i0 i- z
我们必须点击菜单中的【工程】-【部件】,
, D/ t) i6 }: ^# j" y5 O在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和& g; O5 e$ l) d
“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,
, R& s' V) D" Z最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了3 u: N! l* F7 p# \. Q" C
8 ^/ C- v$ ^. G( _( g

+ X  Y8 t. s: y$ A0 {. v" t添加4个文本控件  Text1 和 Text2  和 Text3 和 Text4
  Y2 n! ]% i1 U" {6 `添加一个按钮 ID修改成 “保存”
/ U4 B0 t$ ]/ j4 Z添加一个 List12 r/ c+ Z' D: j# j: ^# k% [
8 K, S; A3 z. I
代码如下  ]1 y& @4 f% |2 D: G

9 e" y$ a. L% Z/ X/ Z3 m
, w* N' D% w! d) ?' n# |" |' XPublic conn As New ADODB.Connection     '标记连接对象
% c1 e& l9 T8 P, @Dim sql As String
5 O! o# W* ~2 nDim rs_maxcut As New ADODB.Recordset
; L0 P% i" x7 x) ^% B7 \1 [1 nDim str As String
. R1 I4 @2 \+ W8 o2 jDim aa As Double, bb As Double$ v7 c# ^) _+ Y6 g. R, j9 }& t# ?( o
Dim mbd As String
) B2 {# j4 s6 r+ a: w5 `, z9 oDim 总页数 As Integer, 行数 As Integer, 列数 As Integer: J: M/ G5 M! x# p# i
Dim 内容(999, 999) As Double, T$ K/ n2 O5 E+ _- A; a
* C7 H( O- Q* K6 q' H1 o" `" {5 ^" t2 S
Public Function cnn() As String2 o! c: y/ S! }, W# c! L
    cnn = "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & "ersist Security Info=True;Jet OLEDBatabase Password=123") V* |) Q+ n7 J9 v' T' E# R
End Function5 s( [0 O* n# h" `) F! n; T

, @2 {3 ^1 Y/ QPrivate Sub 保存_Click(). P8 B! t; p, W# _! h2 S7 |

% @$ y1 D0 {! I writeDatabase1 Y& b+ ?, O7 T/ u: X0 f' d4 z) [, ]
    End0 D: }7 T: `+ @/ V
End Sub
8 ^/ o* [, k/ x1 z4 @$ X- U, g3 J# v$ F+ p! c1 w- Y
Private Sub Form_Load()
  h* S4 V; S. _5 r( v" K4 a% L
: o/ K0 n7 n5 e/ Q& M mbd = "D:\UG_OPEN\ini\数据库.mdb"
# _& T( Q+ {! i. b. {
% ?* J, d: s$ [% b, W9 f8 F    conn.Open cnn '连接数据库
# Z- ^, N0 j* K, l7 r    readdatabase$ i8 h8 ?7 R9 T2 _. X$ [; k
    Me.Text1.Text = "行数" & 行数
" r) ?! P4 l; g) x1 p% x9 G& I    Me.Text2.Text = "列数" & 列数
! b  C/ C& K3 v' q: C/ X5 p2 S% w2 sMe.Text3.Text = aa* C+ D, Q3 n4 j( P
Me.Text4.Text = bb; {, W) q+ g$ _' ^' V% x( y
End Sub! u) y+ Q$ a- V

1 D4 @1 A8 ?% v9 s7 _, VPublic Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)
3 f0 Z9 a( z$ w% k    Dim i As Long
3 N  b% q( L8 C7 f    sql = "select * from test"- m% F  c. `" _( X' T
    rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集
: R; J. o, @! ~: e8 v8 t) ]" W
4 U" v# k# |$ @/ e# A# a
1 J) `2 }: D6 E2 }9 P/ ^总页数 = rs_maxcut.PageCount  '页大小rs_maxcut.PageSize
8 c8 V- f) ~1 i* a行数 = rs_maxcut.RecordCount  '行数 (排除标题)6 q! n2 |1 j4 V$ O+ U
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)
8 k( P( v! p  W) q8 r1 d% b. T( [/ L- m
    If rs_maxcut.EOF = False Then
7 B8 b/ V: f  }. a( Y! i        i = 0
, Y+ C' x  W& x+ Z& p/ V        Do While rs_maxcut.EOF = False1 v! f3 w5 @0 R, l
           i = i + 1
, B4 W* y6 F! r9 g, q! L2 o, D
$ Z: e/ H; Y) p# Y) m. n+ C& g9 X           ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标
% S4 k3 \' }1 h; B# n( F1 [
/ m4 e1 |) m' ~5 `- C3 Y5 Q8 a1 W( W            '第一行  或者  第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的
; C9 g; C7 k# m+ }9 G: A" H' ~1 p6 t& w" k' n6 }3 ], Q
2 i& O) _7 R9 a8 g# k
       If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
9 i7 E  s* S: K        If i = 2 Then bb = rs_maxcut.Fields(1).Value  '除去标题后的,第1行第2列1 {' X& E5 R$ P+ ^
, _4 S; j+ k9 `7 K; R9 v8 s
        '读所有内容到数组8 @7 S& F3 m- L7 q
        For j = 1 To 列数
; J, r. k; t3 o% Z        内容(i, j) = rs_maxcut.Fields(j).Value
5 c9 v) u  f5 ~0 f3 Z        Next" y& D1 u9 D0 A. W) R+ |' Y

% P1 p. f2 C9 g        rs_maxcut.MoveNext '下一行
: I" [+ L+ Y* K' X* A$ k        Loop) m1 V: @) G, A1 p5 }6 @: `
       rs_maxcut.Close '关闭+ L7 {# A' U6 h& m, }' {& V: k

/ Q$ Y' N! G8 A) i( J
- S( K6 K# B2 z5 M5 e* L        List1.Clear; @+ v* H- `7 T& i1 d, R1 i  s4 s
        For i = 1 To 行数
' @: ]9 ]' s9 d+ Q2 {5 F        For j = 1 To 列数
  g8 d9 y% S3 ]5 F7 b' q        If j = 1 Then
" |* Z- o' ~* G8 D# F        str = 内容(i, j)
: _- a  b$ X$ H$ y        Else
5 N( l) o  |' Y% h/ r; d& Z& c        str = str & " , " & 内容(i, j)6 N6 b3 {/ C6 S5 ^6 \
        End If
* z+ R! Y# `# Q6 k9 r  f4 C        Next" L: P9 o- R3 T  Q( c
        List1.AddItem str  B* L5 u) Q2 K  }# |+ @
        Next
8 J. \2 p' S4 S
- L3 d7 m0 |8 _( N& i    End If1 L& w! Y* r  t/ |' l
% N! t& [0 k9 R1 T+ B
( N# t# N$ B0 d" `" p& `6 l
End Sub. r4 H& K4 E! X+ t. r

" _* M* e  |. e  o8 R* mPublic Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)7 j1 \6 B# ~8 a2 T
    On Error Resume Next
  M* M; u8 v8 E- Q6 e$ S5 @( y    Dim i As Long. W9 G  z* Y2 C8 L6 t5 O
    i = 0
# @2 Z! f/ U; r( R& D  v9 f  }; X6 N/ M6 l
conn.Open cnn '连接数据库
- s, B# R& G6 i4 D2 m( F& z. G+ z4 r5 O, N0 t
'sql = "select * from test"
0 j; K9 }+ U2 p) ]3 L
  Q6 H' O  ~9 S: o  ]  rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集7 P6 N4 i1 E! |+ w. e
9 @' W+ X" r8 C% D; m3 [
    If rs_maxcut.EOF = False Then! |2 y+ p( `2 G* Q

; A- l" ?/ O9 e* `) W1 F        Do While rs_maxcut.EOF = False
+ J, X1 a/ o$ G6 i: X9 ]7 }1 E          i = i + 16 P7 P: w! E& p2 m. {
8 b/ n1 b0 |  z' L% R- c
            '不要去修改 第一行  或者  第一列的内容  因为他们属于标题) }1 U8 Q) R; S8 y
& S" z8 v6 r+ w. g
            If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列4 A9 w1 i( w( w4 M
- D; C* E7 c4 ~- `' \
            If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列4 Q+ k7 d4 X2 {4 H9 h2 \! X

/ T& E  M* ^/ p8 k, c              rs_maxcut.MoveNext+ p' _& u" c! q. o; D/ ~

  E  X" K7 Q& M% B  _- e        Loop
( V8 n( Y& f/ ?# \2 _! Q0 ?$ F' {5 s6 {3 G% z) s, G
       rs_maxcut.Update8 e# N, H- m, }- E$ \
    rs_maxcut.Close
6 x6 ]+ b+ L9 ~3 b% j* w0 `9 I1 D2 u( p
    End If8 n5 p7 I' h; V) P/ P. w
- V) k, s7 t  i& L/ \3 a3 y6 }
End Sub; J2 x: C( ~, C& k

/ m8 t9 j4 F* A! ]5 c+ \% h5 y3 M8 e- i

* A0 {( \. V, g1 Y( a5 I' E
3 L- G! o6 L9 X4 f5 s
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了