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

[原创] vb操作access数据库

[复制链接]

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

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

15757753770 楼主

2016-12-11 15:03:17

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

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

x
c# c++ vb 是可以互相调用的6 [, l) N! D" z* H# G$ C
4 _7 c# x" P( C" f. |& X% E
vb操作access数据库 的方法2 Y' _3 K$ R/ o) W$ _

* z, }7 Y# _( L% f6 T3 h4 X首先要安装  Office2003sp2
1 A) x! X+ u8 M: a% ^
0 U$ d1 A: I! l) Y$ B列子:读写数据库(.mdb)
: s2 F- O9 d5 C2 R" ~$ [# k+ y' Q& S7 Y  e6 \
1.创建 mdb
+ f8 T  v% T2 C9 O7 Q! b: b; D2 |开始->所有程序->Office2003->Access 2003  新建一个空数据库 保存位置C:\report.mdb  $ g) ?1 Z7 u6 S
创建一个表格 并重新命名为test          (操作和Excel类似)8 R; [! J/ _  Q& K3 y& H9 o

3 K# e" c+ a$ F. A+ p: c/ [注意 表格名称 和源代码要对应% l9 V& r/ d3 M- I
' t, A! D1 U7 U( n

% F- P9 D6 S5 y2.注册数据源(代码中已经注册)和写代码
/ W% W& t. o+ N& u% q; x4 m6 ?
( H" x0 N/ t( h; Z2 e- r9 J( Z% G! H
在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,: v- X: ~9 P8 N0 L' ~
我们必须点击菜单中的【工程】-【部件】,
! x5 N$ e8 i" A* o% T3 j" `  Q在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和$ k& r1 I9 K7 y5 C' }' t
“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,
4 ~+ s" ]7 d# r: z6 y" H最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
0 z1 N/ V$ a: p6 I- }$ |2 e; ?' L  {5 S
: K# W0 d2 Y2 Q7 ]! x9 D7 A
添加4个文本控件  Text1 和 Text2  和 Text3 和 Text4
+ w) I* B! y1 T# v0 c1 \添加一个按钮 ID修改成 “保存”
% s8 |& v. d+ `$ ~' @# `添加一个 List1
0 x, Z5 d6 c* r  Z' b& p
, y+ ]& c4 ^: R4 f7 N9 y7 x代码如下
5 l5 V* Z: F+ o$ A; P" S% I1 D5 c9 x' z+ S: \1 q# c; P
: d, D7 Y6 V( {) s: X
Public conn As New ADODB.Connection     '标记连接对象. H' \. U7 Z% t. b
Dim sql As String( m7 \# ?+ f5 R& m( [! L' a7 S
Dim rs_maxcut As New ADODB.Recordset
. V: _8 T; ?8 b- |8 A& uDim str As String. ]: g' Q' C1 h! T3 T% q' h
Dim aa As Double, bb As Double9 b+ y& T# O3 z- Y* }$ ~8 x
Dim mbd As String& c; ]8 Z; y+ Z7 g8 R( G
Dim 总页数 As Integer, 行数 As Integer, 列数 As Integer! [5 p8 i( m0 G; W8 P
Dim 内容(999, 999) As Double* h! p- f/ ~# e/ W6 H
" |+ O$ m* M6 D' t) v
Public Function cnn() As String: M' {  Y6 I4 c( J5 Y' |. n& d
    cnn = "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & "ersist Security Info=True;Jet OLEDBatabase Password=123"9 z7 Y4 g) C' U! ~( v5 Q
End Function
* X; f$ v1 ?. o& V( [3 m: t7 @% [9 K7 g. i2 i8 E. F" w1 U, [- d
Private Sub 保存_Click()! _; h! C4 j- L; X- Y# Z) L

  O4 |, e5 U. Z' d8 A writeDatabase4 u% X& g9 h- x- p6 ~9 ]: M. I
    End
& f* k' ^: Q0 n/ _End Sub
% K* [) {/ `/ x' Y& o& I
4 w- ]0 I7 J" O! fPrivate Sub Form_Load()+ `7 \" y/ H  C4 I0 `
6 V; |+ i, ]! Y) v0 R3 F  E9 [, S* ~
mbd = "D:\UG_OPEN\ini\数据库.mdb"
2 W2 T* H( Y' V( c9 g  l* @; {9 S3 t
    conn.Open cnn '连接数据库& I& [, [# M" M  s9 `
    readdatabase
8 A- T9 f* C# w. ]; z9 |    Me.Text1.Text = "行数" & 行数
5 J7 b) _& F% F$ E* z% L    Me.Text2.Text = "列数" & 列数1 Y  J6 z7 T4 M( ]6 c: b% t
Me.Text3.Text = aa
0 x8 n; N( w+ t) H8 @4 X, IMe.Text4.Text = bb
' P: H9 l) }& `6 SEnd Sub
% B- d1 b/ o  ^# m" @; `' }) n  ~( L, G+ b# E7 O4 h
Public Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)2 W1 v/ q; A, ~4 E' _* \& c9 _
    Dim i As Long
  c7 `' z; D5 Z' |- |7 {) A1 f, ~    sql = "select * from test"8 R  x9 y; r5 _; |1 h% M2 s4 t  o
    rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集* \& F/ S1 c& [) c" M% L  C$ J* @
) u3 ?2 s0 l2 n  a

( ^, K. |0 \7 i- X2 J& `总页数 = rs_maxcut.PageCount  '页大小rs_maxcut.PageSize
, w% w5 p8 q4 j; N# u行数 = rs_maxcut.RecordCount  '行数 (排除标题)* ?9 k. W$ g8 W9 s' v" v
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)
. @% s6 T6 \' ~- P" ~/ Y7 D
! E6 i- ]3 I" P* S: Z% O/ F    If rs_maxcut.EOF = False Then* o5 P8 ^2 u' T4 D8 G
        i = 08 c7 W5 X5 O$ K7 H5 a9 Y# w
        Do While rs_maxcut.EOF = False
$ q: O7 l8 a" B) s# t           i = i + 17 K: r' v5 t+ O! C$ c6 s

- h* L' |3 |  g# m- w. F% a           ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标4 }( `7 n: S: r% X* c: {5 R
' @9 W! |" F* C- P& f0 B. n9 K
            '第一行  或者  第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的3 E. W+ F# f4 |) w5 A# _
- a; k! r7 F# T& Q4 n5 e, s
' r: N8 ^6 o3 h3 m6 j9 H/ T5 D; g
       If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列" {5 B1 e3 E' p
        If i = 2 Then bb = rs_maxcut.Fields(1).Value  '除去标题后的,第1行第2列
; @7 c6 C6 L6 `0 U5 k1 w  l! D; \
' J. x/ E1 T5 r" F( |: D  n! V        '读所有内容到数组5 c# E# k* K: D' }
        For j = 1 To 列数
  u) N/ ~( |3 ^9 ?; k) U  ]        内容(i, j) = rs_maxcut.Fields(j).Value6 d9 M/ Y, b+ U6 `- ^4 o
        Next
; D" }" e9 ~  e* [% P# a4 u# A& y* w% ?; F' n6 J: B
        rs_maxcut.MoveNext '下一行* S- \7 Y1 {. ?. a' r0 G  y
        Loop/ K  A9 t# o5 ^' X3 D
       rs_maxcut.Close '关闭3 ~# S& R1 ^; f

) K/ P9 @! x7 r7 p0 }" C1 A: a: O
        List1.Clear
; h! S$ U9 H$ p+ }9 e* o        For i = 1 To 行数; C' }9 J" ^# m( y
        For j = 1 To 列数
, ~. T3 L7 d9 C( d& Y9 y        If j = 1 Then
: Z+ g4 p( s! ]. c9 ~) L+ A        str = 内容(i, j)
) w! H- A& j# R0 ^! n1 \0 e" \        Else
& c2 `" u- ?# P. a( V. v1 d9 t        str = str & " , " & 内容(i, j)+ O* }8 T! V" ~4 ^" v
        End If
$ p8 y0 _' o, e4 ~+ E, m        Next3 e% I, W* _9 I$ l; f2 l
        List1.AddItem str" E% e6 N& A% ^. F9 U
        Next1 t) }' T5 I! F5 n1 C
9 t" r( R/ W4 l) f* ]( Z( C: `) f
    End If
& Q. H' n1 }1 }4 m9 E( {. a, Y5 J5 h9 v* f: V
# F0 j( u! `3 C  r+ w+ i
End Sub, w6 F3 ~  k0 G+ y$ n4 E
. U) v# c( W. y7 p0 i! j$ D$ R3 e
Public Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)
/ W1 Z5 o/ r6 D# h+ v0 i1 A/ Y: [    On Error Resume Next4 u0 ?4 F. d6 u/ j
    Dim i As Long  l; r; e  D% n% y5 m7 m  P
    i = 0
4 [  E# F5 I$ F& u4 N- q( J; s- f& Z7 Q3 C- J! R$ ?
conn.Open cnn '连接数据库( t" E4 \% `# K& g7 j  z. Q
% f( {5 r  _) l! G# e( ~% R
'sql = "select * from test"3 `* ]! ]! h* f+ R; U0 ~

+ i4 Q; z: g) d. S: G  rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集
" \5 z$ G# P4 y! m5 c( u; L/ Q- I( N! X, n
    If rs_maxcut.EOF = False Then# i+ m% {8 K9 y9 w
8 Y; h0 ^) N; T# Q8 J. j
        Do While rs_maxcut.EOF = False" }' O8 j* U: c+ a  y8 x4 M
          i = i + 13 }6 M  a0 v# d1 @$ d! A2 [( ]2 _" m
% @+ S$ K2 S* s9 M: s) y% M# i1 t! N
            '不要去修改 第一行  或者  第一列的内容  因为他们属于标题
( e" j% Y) x; J1 Z$ A4 d% E* h/ P# R  \* X
            If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列
) M* p/ a  D# S, ?2 ]% G4 L
+ ^) W2 }4 o2 l& A            If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列
/ Q* w, Y" C4 t( f8 n( T6 V5 S* J6 P# _8 [2 B% g) Z
              rs_maxcut.MoveNext
+ O. x7 n' s$ D- {# |1 Z
  U) N" u/ j" \6 F4 X3 o% o        Loop4 Z  M4 x4 _4 @2 Y$ d9 ^: n

' V: m( W! O$ C& n8 [$ z% H       rs_maxcut.Update; ?- p) R! n4 s  F
    rs_maxcut.Close3 s' |5 Q1 ]: C
5 x* i( ~  D& G( z8 `
    End If; ~: n! P8 Y$ T% p) k
- j- w7 ?8 |" p& N5 i7 N5 }0 A
End Sub, d9 ?6 k7 E4 X% @' j" h, a
& `1 R" R' H/ H  o

. I. A* ?$ ?2 g' V+ [% r, ~# Z0 X4 w, [- |

4 P" K4 P, O' [6 K8 r0 @* U$ k5 r
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了