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

[原创] vb操作access数据库

[复制链接]

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

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

15757753770 楼主

2016-12-11 15:03:17

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

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

x
c# c++ vb 是可以互相调用的& N! J7 P- H$ c5 {; `7 U9 u. ?* w
4 N7 X! U/ P/ W% ^/ k! I
vb操作access数据库 的方法- Y1 u& u3 ]  v# S1 W8 W5 Q
9 g" X$ o' n* z( ^) M5 _
首先要安装  Office2003sp2 % L2 _* Z& U; S0 l. ?8 A/ ^
7 R0 D! g' G: E, F: ^* h
列子:读写数据库(.mdb)% d: V3 R" x1 ~/ d$ D( ~
9 `5 f/ l. e- t- [
1.创建 mdb
/ ?  E1 C# `/ [$ X开始->所有程序->Office2003->Access 2003  新建一个空数据库 保存位置C:\report.mdb  ( l6 T7 _; X* g3 |
创建一个表格 并重新命名为test          (操作和Excel类似): I3 ^3 X( z& c  Z- k* j3 N

, m/ L; }( i* B$ N$ U注意 表格名称 和源代码要对应" p& d4 Q1 }6 l& G" F
  v8 v" {- v. X  x

6 F: I/ F1 h7 u) x2.注册数据源(代码中已经注册)和写代码
% W  v- H+ P6 z( T) F5 L/ v
6 W) r6 |. l2 R, U
( g; ^% X( n% z6 x* p在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,+ U( W3 I3 T" \3 _3 @  @
我们必须点击菜单中的【工程】-【部件】,2 @! Q! Q( p/ V& y* u5 e/ m% m
在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和
+ P: Q0 a8 V' w+ L1 R% N; z“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,
5 f" G1 j( L  q" p; D( Y5 s6 S- z最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
' \) C0 \" \; S2 h2 o/ X) P- G0 J) P; B$ G4 N
8 `7 h& J; d0 D. Q5 [
添加4个文本控件  Text1 和 Text2  和 Text3 和 Text4 ( O& M2 J: y! Y& ~1 ^8 b( B% b1 w
添加一个按钮 ID修改成 “保存” & A/ O$ E: `4 |
添加一个 List1
& J6 `" B- ]! `: ?- H7 ^+ j/ M
# s" N. R0 T1 g% a; }/ G( h代码如下
( y& y9 B4 m9 k7 q& _
. x2 Z1 y' [, J5 O4 s$ z& }
& D& G/ O/ v' V6 JPublic conn As New ADODB.Connection     '标记连接对象% [7 j1 }$ k/ u
Dim sql As String
% P, k2 _' {) L8 d" H9 H/ e3 zDim rs_maxcut As New ADODB.Recordset7 E. o! D  G! o, h' R( I6 }8 `
Dim str As String: V5 M# w& P4 p1 [
Dim aa As Double, bb As Double3 K# I+ h, \$ n/ Y
Dim mbd As String
! o- ?: H* v- {4 QDim 总页数 As Integer, 行数 As Integer, 列数 As Integer
+ W7 g0 k7 d* ~& XDim 内容(999, 999) As Double
6 _: t  d8 V- b5 P5 \% p$ g# @$ ?5 V
Public Function cnn() As String
! S2 [% ]- `6 a3 x5 m7 ]; l    cnn = "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & "ersist Security Info=True;Jet OLEDBatabase Password=123"( E: q6 S6 E4 W' f+ ]# c! Z* U
End Function
6 W. y( V7 I$ M) d; W* `
3 p+ C8 i  c# Y" R: I. i( I0 ^Private Sub 保存_Click()" [; B9 A0 D5 u. w3 \! u
; G3 I' Q* o; w2 t( ]/ J
writeDatabase5 l# x- y+ z# }% P, m2 l3 ~
    End
) Q$ a- s  {* S& n# a' uEnd Sub. ?* e6 G6 t+ @. u2 L( k; y
" K3 e! R$ A; G& x: k9 A
Private Sub Form_Load()
! [2 O+ y6 A4 M# M4 M7 [  u- Y4 P$ ], M
mbd = "D:\UG_OPEN\ini\数据库.mdb"
- k; {  Z5 `% L4 L/ }& Z9 ^
$ w) N# C. ?. t8 _  x( W% q    conn.Open cnn '连接数据库
% V- F! `8 w# L% L) a/ M0 y6 D    readdatabase
- x+ t$ x+ q2 I& Q- r3 \5 f3 _    Me.Text1.Text = "行数" & 行数3 E+ c( z; A& [) U" q+ Z$ e
    Me.Text2.Text = "列数" & 列数# k- j4 a2 j2 j( `
Me.Text3.Text = aa5 v7 i* m2 M2 t! ~& w
Me.Text4.Text = bb6 Y$ ~, Z8 @' N# [
End Sub/ r3 {+ h0 \3 q
" ^9 h# R4 ?6 ?! }( H- p% c1 G# u
Public Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)
( Q( Y- H- |0 D/ Q( w% e( E    Dim i As Long
# L; v2 p' k, o( _* ?    sql = "select * from test"
- n5 R, ]0 U5 q0 |3 f6 ?. W9 Z    rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集
7 B" e1 g' B" H3 X/ j- j0 r+ g9 K4 @4 S. I6 y

( n  |; Q1 E, ]) K/ e总页数 = rs_maxcut.PageCount  '页大小rs_maxcut.PageSize) K% X( H6 u  y
行数 = rs_maxcut.RecordCount  '行数 (排除标题)& M! a+ w. j6 J, o
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)0 f4 b4 h4 T2 Z  x. b' n
; `& z/ g; d/ o7 f! {$ c
    If rs_maxcut.EOF = False Then  E! e$ U7 \& x6 o0 v& f
        i = 06 t. T0 h' C: }& V; ]- i, j
        Do While rs_maxcut.EOF = False
( {; t3 N; I3 w" R( Y           i = i + 1
& ~! J7 X6 A$ F" r  }2 _: y; @, }4 m4 s* K/ l5 v8 n: O  [
           ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标2 v# Y# o' C$ B! y
+ R( i9 ]5 x. F* Y; W8 X- o# _
            '第一行  或者  第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的
( n- h: ?4 W) l6 `! F9 E: \' m+ _# |+ f9 Z# L2 U! g/ S

% W) n+ O& G, w- A  p% ~3 ?( i) y       If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
# ~" s8 v' S1 l        If i = 2 Then bb = rs_maxcut.Fields(1).Value  '除去标题后的,第1行第2列/ b, R. j5 C1 k. c7 v- T. V8 z# ^
; H8 C4 S, d2 W
        '读所有内容到数组7 O+ [4 Q) x: `- n) Y
        For j = 1 To 列数# W6 o2 J) Y$ H: o" ]* t
        内容(i, j) = rs_maxcut.Fields(j).Value( Y" ?. z; H, y  S
        Next7 Q4 C: s9 Z+ |( A% ?3 e
/ Z* ^, t+ d! T' g
        rs_maxcut.MoveNext '下一行+ K3 r: a* D' z2 e$ t$ u
        Loop7 s0 i( M4 |! r& H- A2 y
       rs_maxcut.Close '关闭
/ @- y. J) ]( U8 F$ B- f  o8 \5 i% e, I! Z9 r
( q: p1 v. r1 T5 I+ ?( Q6 z
        List1.Clear
$ J0 z( t8 v2 Z: C; P        For i = 1 To 行数& U; {, U8 P- _' Z' f
        For j = 1 To 列数% O! j2 y/ x8 n. _7 S
        If j = 1 Then. y" @% S& ~6 ?
        str = 内容(i, j)
: r% M) F1 A2 O6 f. Q        Else
) x) `6 s4 M1 H. V4 x        str = str & " , " & 内容(i, j)+ Y- E: F- l  N9 i7 y
        End If9 E, Q! n2 u) s! J0 t+ h
        Next: j5 w7 q1 H4 k. T
        List1.AddItem str+ E) f. o  i# k  f0 e' w2 _
        Next; g+ Q( d4 y6 Q3 h$ v$ n2 `* C- d3 E

9 Q/ A3 \/ A3 f& U3 K6 c& ~% E    End If
! w* q0 q/ N6 |# y& r$ z: T! J
) B$ N: t/ R* }" s( P7 f+ V# x- z/ N+ i$ r# A
End Sub: U8 Y1 B7 B( f1 ]6 s5 W+ I5 D2 T

; Q) w, Z: X" @5 YPublic Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)
" i9 N  v) ]( o2 J    On Error Resume Next
/ f0 k, s) i1 X    Dim i As Long
! I* ]/ f7 Y, i. o& I$ O    i = 0
& w  K8 @( E0 ^7 A- K( d1 B+ W$ R0 U
conn.Open cnn '连接数据库
9 D7 J' x7 j" m
* J1 J5 X! G  F. f4 `) u2 t'sql = "select * from test"2 R9 X' V3 _- o. X3 a" m

  U) W% w9 P5 p% n" a, E  rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集
7 ?! C' \# r$ }9 u& k
. z- b: O& s" k5 Z: v    If rs_maxcut.EOF = False Then
+ J- a, k. M8 g3 U5 s) r! I# c5 ~6 f8 b% w5 y
        Do While rs_maxcut.EOF = False
, k, M! J; a3 j" }          i = i + 19 V. o8 u+ \+ N1 c& _7 w
7 S; o3 Z9 @+ u0 p- \$ L
            '不要去修改 第一行  或者  第一列的内容  因为他们属于标题
7 m9 p$ t" w* }2 X
8 n7 y0 s6 `! ^+ W            If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列, i; N! `& ]+ l
# t; P# G( M( Z5 W) G7 {0 V
            If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列6 b8 ~5 X0 d' l. g9 m0 v8 L

* G: b$ h" E) T1 h! b; ?/ Z8 O) M  H% o              rs_maxcut.MoveNext7 K4 r7 t: n( i

' [+ E0 F, ~& u% W        Loop/ u5 n$ C; T6 i+ N5 n- ~
, ?' M2 Q7 H' b' o. b
       rs_maxcut.Update
! T3 j: m9 p2 g) h" ^' e1 u    rs_maxcut.Close
& ~% p4 }/ I$ d/ M# N' Y6 Z9 Y4 O
* R$ j/ p, X% h4 n' ~    End If
1 i2 n0 F! o# Y& v$ l3 s  F9 f$ Y# ^' X% c6 _
End Sub
% S! `0 c: e" @' u  W9 S: V/ ~/ W" `. u7 \" o# \; |2 g& ^. D/ }! \
' _0 F2 z& n$ K) W8 [! I- g! ], V! `7 s

0 ~" v0 y4 }1 [: }, J* C- e% ]5 w& U1 V* 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二次开发专题模块培训报名开始啦

    我知道了