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

[原创] vb操作access数据库

[复制链接]

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

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

15757753770 楼主

2016-12-11 15:03:17

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

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

x
c# c++ vb 是可以互相调用的
" Z) j% ~. H0 P4 n) F$ `7 }. D5 T* E( @0 s, f5 P
vb操作access数据库 的方法1 S1 G, V7 g' c5 R  o( D  r

+ [  x0 \# \( S/ G2 h( I; [首先要安装  Office2003sp2   T# T; w8 l9 G- ]1 |; ~

$ r) t  g( ]* }3 q2 H列子:读写数据库(.mdb). n0 U6 \8 N( E) j- n/ k
: P& }* y: u4 `
1.创建 mdb
6 R+ B! c: ?  c( }1 z开始->所有程序->Office2003->Access 2003  新建一个空数据库 保存位置C:\report.mdb  
7 s; E* Z. B! z) N3 u* o创建一个表格 并重新命名为test          (操作和Excel类似)3 l' F! ], M5 U

* w5 B* z* ^/ b( i+ p: [* D# x' C注意 表格名称 和源代码要对应
( m, T0 s: y( ]; T, x9 |, O- O) X

3 `$ Y" X8 S7 O& i2.注册数据源(代码中已经注册)和写代码% w$ U: Z' P9 l- |0 d3 t! A% h' ^8 A

8 ^- s. S5 R6 O* Q9 V0 I: V5 B+ _! i! p1 g1 l
在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
: s+ e# Z+ R: c/ g$ _  t我们必须点击菜单中的【工程】-【部件】,
+ X3 _5 j% o: F8 L: I* _; h+ J在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和
! m9 j: H# M7 R: S“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,4 G0 Y/ X8 K; {. P; a4 j9 p
最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
3 O+ F! P5 d) @. _7 `+ g
/ c  P* ]0 W; k1 G0 H9 b& |. d# n% p7 A  N9 ~  G5 E% V+ E$ @
添加4个文本控件  Text1 和 Text2  和 Text3 和 Text4 % J: q3 @0 c( `6 i; t
添加一个按钮 ID修改成 “保存”
8 A- B  Q  K7 d- N( c, Z' b添加一个 List1
# {. k- b5 H) Y2 f9 b8 s1 w  i4 k" R  ]0 m% S# `( J
代码如下9 l4 i1 J( X* J4 a

. J# b0 e( a7 u: R5 [- a6 M8 w+ }1 h
Public conn As New ADODB.Connection     '标记连接对象
' {/ R$ H$ e1 W% MDim sql As String
# o/ @" v& y" K) d/ b: [8 {+ Y) p- @Dim rs_maxcut As New ADODB.Recordset$ N9 }6 i. Q( U1 K6 V6 _4 [
Dim str As String
: R1 K# d1 ?; Z7 q' ?; DDim aa As Double, bb As Double+ L7 _" L+ s, q9 T" G" s
Dim mbd As String8 M6 G0 t2 V% a. [5 M
Dim 总页数 As Integer, 行数 As Integer, 列数 As Integer- v7 ~7 ?. b: t; ~
Dim 内容(999, 999) As Double5 m3 L2 D/ c5 p% |1 ]* C8 W

! q( w, `8 Q1 jPublic Function cnn() As String' q" m7 Y4 C# Q6 L( ]2 W1 u. `
    cnn = "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & "ersist Security Info=True;Jet OLEDBatabase Password=123"
. W: V# m* T4 z; t7 i( H* L* REnd Function) t: C; }2 c' A- ~2 p
( z0 I2 x* R9 H+ J7 [: q* W& i
Private Sub 保存_Click()
8 ]9 `% V: \1 U7 I1 \3 ^5 j& e" X& q( R3 a1 K
writeDatabase' B1 X9 ~3 N6 x* F
    End
4 g+ `8 S9 d8 e, [End Sub! q7 D1 F/ d+ D$ A0 P# `+ N9 z$ q
+ U5 y. v+ G! S3 e
Private Sub Form_Load(), l1 u% t, c0 V' u7 i
) F' B! a# s/ X1 q
mbd = "D:\UG_OPEN\ini\数据库.mdb"5 u) w" O. j8 Z
1 o4 A( U, w  e( V7 l6 l5 H. g5 ?
    conn.Open cnn '连接数据库: N  \* \3 v6 f8 m: W
    readdatabase) t0 `, a3 X3 W3 N/ K: o
    Me.Text1.Text = "行数" & 行数
& W- ?! q4 V; D* ~0 [; `    Me.Text2.Text = "列数" & 列数2 @8 l- z& i0 \
Me.Text3.Text = aa
3 ~, D4 E- U7 H5 E' x2 @6 C" XMe.Text4.Text = bb
4 |1 H6 _: M, x% x  JEnd Sub0 ^5 m/ e' Z/ N/ z8 o. W' y
& A0 p( ~; j0 @( |1 O
Public Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)
" f9 p) O, J$ E    Dim i As Long
5 f( c, F! {, }    sql = "select * from test": G, w  g; `# P# T& {% Y
    rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集
/ @3 {) U$ b, }; K" }! B0 a
/ K( o, Z8 q" d8 S% `; J1 z, x! _- u6 d9 ~, }4 \7 |3 h
总页数 = rs_maxcut.PageCount  '页大小rs_maxcut.PageSize
/ ^% L  i1 Y6 d0 [% k6 {5 n行数 = rs_maxcut.RecordCount  '行数 (排除标题)
+ s/ F5 k# k/ ^$ @( m列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)2 q- ~' ?' I, Z" p- ^& y# i

' d( m; K4 g( P5 t    If rs_maxcut.EOF = False Then
) W1 B: Z3 N) n        i = 0
) S" T2 D* f. @0 ]- ?  \* L        Do While rs_maxcut.EOF = False
0 g. _! g9 P: ~5 S% G5 A  m& ~( J           i = i + 1% f* t% V: q0 k3 o# T0 ~
! b5 B+ N/ P1 s7 C5 L1 G
           ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标( T: `9 g0 b! b1 j* q3 S7 T% s" O' b7 A
' M# D4 p+ h: V. k
            '第一行  或者  第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的
; s9 H7 D: _5 |" o# D, b, d: F% K* ~7 s- m9 z

8 O- p& N4 W' k  S4 S       If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列: S8 a- f5 F, b) f; B
        If i = 2 Then bb = rs_maxcut.Fields(1).Value  '除去标题后的,第1行第2列/ b/ Z# L% T# {1 s! U( R; ~
" [1 s# Z) T: D" Z& x
        '读所有内容到数组
; U$ c! h8 Q+ g( X6 |% V        For j = 1 To 列数. A) p* j+ b+ P$ C5 V* W
        内容(i, j) = rs_maxcut.Fields(j).Value/ k7 V6 ?. U9 E& G; C
        Next. `1 [0 c: J* w" V2 b3 A! f, A
8 ?0 K% f4 z; l8 O
        rs_maxcut.MoveNext '下一行$ k4 Z$ R! M1 t3 @6 A3 X+ z4 }+ D
        Loop  L: p" s9 j3 W; ~( w5 F3 t
       rs_maxcut.Close '关闭! S. Q8 x% J" N* h! I: Y
1 O1 y6 W8 U5 Z
4 J; a2 J5 M+ Q! S  C4 f  E
        List1.Clear2 h. B# k8 X* r
        For i = 1 To 行数& q: ^5 f) Y/ X$ ?  R
        For j = 1 To 列数
& N7 _8 `4 z' B        If j = 1 Then4 g+ t1 W/ y9 U; U: T  b
        str = 内容(i, j)
& F  n/ R5 R$ G        Else
! ?2 a! h3 A9 v) w/ t) {        str = str & " , " & 内容(i, j)4 h' s% ~# i: P7 H! M& k4 j
        End If
% z* B2 Z) v1 Z' L4 M        Next1 X2 U  r8 b8 D. \
        List1.AddItem str
% A' o' r+ B7 x( j5 N        Next
7 D0 P1 F, v3 O% g5 l2 t9 d0 d2 O* v! i2 s5 H. F# ?" E
    End If
9 _) ^( m* w2 s5 o) M3 @+ _
1 V2 P8 p( @! ^0 k# o- k6 j' O& i
End Sub
' ^( l5 c# R' ?, m( W3 ^. ~# A4 v; @+ k; F% k' c% S- p- J/ I" e
Public Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)/ L( r" }* \6 c
    On Error Resume Next% v4 X  x) c- c6 N8 k6 J# U- I
    Dim i As Long
) X" e3 F! W+ m; J$ P0 @    i = 0
4 j8 y( h' x5 T& x! u4 }8 n1 [
; {0 p7 a! v7 G& v. a( Gconn.Open cnn '连接数据库
% U' n$ h$ S; ^# a
! h7 m' X& u: L$ ?: b& [( R'sql = "select * from test"- d7 z! ?/ d  x3 l5 j1 X
! C5 W: o# Q8 x) a2 e8 P
  rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集) [, v- i" }9 G4 s6 X1 k9 |) r$ L6 [" F

2 ]0 p4 L9 r, R6 t) `+ @    If rs_maxcut.EOF = False Then
  S! r! g* z: z1 Z8 P: u9 D" K, j5 y( S8 {
        Do While rs_maxcut.EOF = False
0 z5 r: o7 t9 v$ r          i = i + 1% P7 p6 u! N$ J0 L) y' r( P5 m2 U
8 `: w$ @2 ^2 l% a
            '不要去修改 第一行  或者  第一列的内容  因为他们属于标题
: B6 o7 Q' w$ L5 {- M0 i
. o. b* K9 I: b: C: z, a, U8 x            If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列
& O- _$ M* P: R1 R9 Y4 s2 \6 y/ |  S7 P* x! \- k! Y
            If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列& O0 P$ X# h1 ~0 R9 p% e

4 c1 a- O9 t7 w0 }( K* A& M              rs_maxcut.MoveNext7 x: [" V( C" c8 E: j8 ?

1 h. @" u5 ?% c! E  G        Loop
! s$ A& H1 r4 @5 k8 f9 _6 l0 M& t1 p1 u5 e9 S* _" |
       rs_maxcut.Update
0 t* S0 ]+ K! \1 E    rs_maxcut.Close, \% i0 ~: e! F9 D5 T. @
1 J: ]( \! f% [
    End If. I% J. |7 u6 }. V" f

/ }5 y3 i  r' x# X9 @2 q+ _End Sub
0 E$ z0 e% I  x$ F+ B6 S
( }# X& \3 p9 l  [" N9 q0 i" M% s3 \* w  E3 \

7 K. D# b2 T  E& J: ?- O
' O( Y* Y: c+ d: ^
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了