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

[原创] vb操作access数据库

[复制链接]

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

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

15757753770 楼主

2016-12-11 15:03:17

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

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

x
c# c++ vb 是可以互相调用的) c; a! P+ U) h0 D; E

& G+ x, k3 Z& |9 Fvb操作access数据库 的方法! V1 _: W. o% c  @2 ~( W

% w/ o' G9 B9 S' H$ t7 ?+ Y3 D首先要安装  Office2003sp2
7 P2 E: E; N, `: y5 x7 k! F3 o3 m2 c, ~6 K
列子:读写数据库(.mdb)# Y' o* e9 `; ~) ?$ R* C: H- E

5 W( o4 [8 {9 T& \1.创建 mdb* w9 g: @( [" p( k; t
开始->所有程序->Office2003->Access 2003  新建一个空数据库 保存位置C:\report.mdb  
4 e: i" u/ Y& T创建一个表格 并重新命名为test          (操作和Excel类似)4 C/ q/ r% L, n, S7 T3 V4 `
+ _1 d9 y: J) x4 X
注意 表格名称 和源代码要对应
2 i- \+ A4 N" D9 i+ G3 x; n& x0 W) `3 }$ |# }% ^

$ @& N6 S( z- Q& @2.注册数据源(代码中已经注册)和写代码5 n  c& ~( y& a6 [
% K4 k5 I; w9 I8 m: b8 J

( p! b* o/ `2 M" y/ P# \, G在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,3 X0 U* _  B4 x
我们必须点击菜单中的【工程】-【部件】,$ s/ ]3 U9 Z4 w. G
在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和
- t/ @1 p7 o% T  e; Y“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,
9 l6 T1 [  Z6 O0 z2 r) F" a最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
& e. j& v) t$ m, _3 F: C
; W9 Q6 {, n1 Q& Z1 l' d* d
2 H  B: P0 w- J( ~+ Y( y; l. h. B- H添加4个文本控件  Text1 和 Text2  和 Text3 和 Text4
5 [2 X$ o9 L  I% G* q0 X添加一个按钮 ID修改成 “保存” - ?( Q7 w; q0 O! ^, c! E
添加一个 List1
5 d0 e4 ?. R: v0 k2 S0 z
+ [; M2 {# n4 X: D/ |代码如下) n+ B2 [. }' C  y6 u* ]

" t3 ?9 N9 g: I0 h; j& R5 {+ Y  l7 {4 Z1 ~- o# P
Public conn As New ADODB.Connection     '标记连接对象
0 W8 Q. @# x$ ~9 G) b" z# O" LDim sql As String
6 Q7 \* r$ E& y9 q8 GDim rs_maxcut As New ADODB.Recordset
7 `0 P6 H2 i# r, Y5 u" A2 [Dim str As String! G6 I: u& Q7 [/ n+ n5 i
Dim aa As Double, bb As Double
7 b* L6 t( y2 i( T, _8 ?$ \Dim mbd As String! L- ]3 _* Q; D( j% f
Dim 总页数 As Integer, 行数 As Integer, 列数 As Integer
3 E# H. P" _3 T1 g3 \Dim 内容(999, 999) As Double+ U2 |4 H+ u# R$ S' W) D
( P9 d5 D8 O2 }
Public Function cnn() As String2 X6 `& J% Y0 H
    cnn = "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & "ersist Security Info=True;Jet OLEDBatabase Password=123"
# x" o5 k+ y% B; l% q( [End Function
5 }" ?1 L' y: B/ m  ]5 U, ]9 e" k# d# r; u) [, U
Private Sub 保存_Click()
" W# f/ N- \0 [, }" H& V* [7 y) \  f
* w7 S; G# o* j7 e2 ~% d writeDatabase
0 G! D3 o7 I! W: o3 N1 p    End, J- M: A; w% {
End Sub
8 P  e) p/ b5 a1 F1 F, i* @* {5 u& r4 c) {6 w0 a1 D* {
Private Sub Form_Load()
7 `8 J3 M3 ^- x3 x
$ Z" L7 v+ @7 E. {: |2 V+ x: O6 c mbd = "D:\UG_OPEN\ini\数据库.mdb") P1 P2 }( l7 W% s* |+ Y

* a# L3 B1 N1 _8 B  z' |6 D- |! @* r    conn.Open cnn '连接数据库1 n6 j% z& j2 |+ L9 `0 g  v; D
    readdatabase
* z# N) F1 t# K- R    Me.Text1.Text = "行数" & 行数, m( C9 m7 w" u5 s
    Me.Text2.Text = "列数" & 列数
% v6 V- k: Z7 @9 T) vMe.Text3.Text = aa
( E3 d9 d0 u4 m, RMe.Text4.Text = bb9 q. E! f) q6 r& L, M* V/ F
End Sub
0 Q0 @0 Q( p, p8 i. @3 V& `: f2 S. @* w% k
Public Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)
4 r* ]* D3 {- Z6 h# p) y  ^, F    Dim i As Long
4 k8 o8 K4 f: @0 F    sql = "select * from test"
% ], Q8 g3 K% G* J1 c( \9 u# o    rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集
! \* v- H6 @% R4 L: h( G# M, y5 u' n0 g

! ]8 h- ?+ j/ ?5 h总页数 = rs_maxcut.PageCount  '页大小rs_maxcut.PageSize+ @' E7 H; m+ p1 R8 e7 F4 C
行数 = rs_maxcut.RecordCount  '行数 (排除标题)* u+ i% j. R! C9 Y+ M8 q
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)
  h- K; r1 A0 n- F: `- _" P
2 @2 j) A4 T3 A0 W8 W- m    If rs_maxcut.EOF = False Then; _1 @4 [6 C* k8 [3 T9 q
        i = 01 \1 z% R# ~( }
        Do While rs_maxcut.EOF = False& D. _1 e0 Y' J
           i = i + 1! V) f3 B% L1 Q* R

" C6 {- F- f3 I! ^           ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标8 O7 b- v, c5 d1 a1 h5 t

* U# j* ^5 A. J7 _; n7 c            '第一行  或者  第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的
! R$ [- ]8 p% G( |* r( C
$ C1 Z) V. x2 X7 A( I
- C  [$ U7 e" i) y* ~       If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
$ u5 _7 q/ b7 g* g+ S; I# V9 t* r* p        If i = 2 Then bb = rs_maxcut.Fields(1).Value  '除去标题后的,第1行第2列4 v8 [% b7 w8 C1 x* l/ J. Z+ D$ v3 x

5 x7 u4 w+ A5 a3 _! `9 `! D        '读所有内容到数组
+ \, C3 _- F" f8 @7 p9 B! V# M        For j = 1 To 列数
# }$ D9 i% y4 ~' ^        内容(i, j) = rs_maxcut.Fields(j).Value* z6 z" a) }1 z
        Next
* T) H: O6 k. Y: P. R4 l! j& O& ~
. V0 S( ?( S2 |& E& ~5 L        rs_maxcut.MoveNext '下一行" g( Z" Y: W7 x; }& q# k
        Loop
9 |$ e! e! z& D. O; p- }: k       rs_maxcut.Close '关闭
3 `: E8 ?) D6 {. _
7 Z5 k9 R; R" d' u) v* A  V1 G4 {' {. Y. P- a8 H
        List1.Clear$ E. r4 [9 l+ I% ^" w7 z, m* [
        For i = 1 To 行数
! Q0 T9 |) }, _4 Z' @& K, m0 o' S        For j = 1 To 列数- u& F7 K7 k( G. d
        If j = 1 Then
3 v/ l5 B! g  T% A; z        str = 内容(i, j)
# }+ l& _! e; r- z0 d, q8 O        Else
2 }7 V5 s; b9 I" ^( Q8 s: t        str = str & " , " & 内容(i, j)7 C3 u  ]5 r2 N" ^! H5 D
        End If# y* q9 E3 _# `7 x4 k/ [# p
        Next* p# J$ |' S' h/ _2 h5 U) a" s4 Y
        List1.AddItem str2 A# u' C3 b: Y
        Next& h; F* S' m5 v, X! g
( |( z1 q/ U* v0 `  H2 j
    End If
" E" D: N- w& J' C2 Y) C5 A6 {1 R, J0 b+ ^
  a# L6 u1 B4 }, W" [
End Sub+ \' W% H- Z5 H

+ j9 N' e. G0 h" V( }6 ^  S1 ]Public Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)* ^. t+ x' g* X# {: x7 g
    On Error Resume Next& i% S4 F* k- G$ j% W
    Dim i As Long* S& t' ]+ ^- W7 E1 X
    i = 0
! V5 X# g( s1 Y- G/ ~$ M, v/ ]! S3 `( B& C8 \3 a
conn.Open cnn '连接数据库  R7 n- X; G/ f: |1 V& h

4 B# c( \( n, c6 @'sql = "select * from test"
$ z7 U- f0 e+ a# `6 f4 @
. b5 o* s% ~+ h7 _/ b4 f  rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集0 `' j  [* y! u' F& f, L
* o2 b( s" r/ O# _* j
    If rs_maxcut.EOF = False Then
  [: B0 I& B1 p9 t$ g5 T
' X% P" H  p1 U8 o- e        Do While rs_maxcut.EOF = False
- ^4 J9 d- A2 x. z          i = i + 1
5 u7 B" P2 s* i
1 `% {9 m$ y9 Q6 N/ C7 c            '不要去修改 第一行  或者  第一列的内容  因为他们属于标题! [# V! p8 R/ v9 f
% i4 H2 d, g( M6 b3 V  `) L! u
            If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列: a* {! w) Q# P. K3 `: B5 h" u
: Y  ]- x: B% \7 C+ g  y: a
            If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列
% [1 {( S% u8 P* i! s* Y/ y/ k/ \  e7 z& _& I( X
              rs_maxcut.MoveNext
7 Q0 O& I: e5 W5 D" f4 D9 ~$ x1 g# C$ }2 |8 d% S5 f; D
        Loop
3 Z  f5 B8 Y) H& C8 F; n- w  V
! L. X; D* @9 {/ C       rs_maxcut.Update
( Z; ~* ]+ M9 Y$ l    rs_maxcut.Close
3 u5 R& V+ `4 _  S
  p! g2 b- |$ @% n# [2 K    End If
6 K3 [$ o8 \1 l  z
3 N) p2 C4 e+ QEnd Sub: f/ |" H" \9 x7 C7 ~3 `" q
/ t7 r' v) G# t) }9 v8 f
: b" p$ N9 m; t; T
4 [6 Q2 |3 W7 d
) d! `+ a3 }' O/ F2 W
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了