PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

[原创] vb操作access数据库

[复制链接]

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

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

15757753770 楼主

2016-12-11 15:03:17

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

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

x
c# c++ vb 是可以互相调用的* a3 a; W0 ~2 y

7 E4 k4 _- `2 S( h8 tvb操作access数据库 的方法; t& r. }! K# C7 [) a
7 t2 y* C0 d+ R% U' V
首先要安装  Office2003sp2
' E+ e4 t2 ?) s3 ^
( R2 w1 K$ V7 O, O, k列子:读写数据库(.mdb), f$ ^, F2 }; h$ Y6 d: l9 W4 c1 v+ ?

$ z% l, n& z" y3 W3 b' G1.创建 mdb
4 L% ]. l; n* p8 D( i* F' ^  r开始->所有程序->Office2003->Access 2003  新建一个空数据库 保存位置C:\report.mdb  
1 v9 }5 s' M' r创建一个表格 并重新命名为test          (操作和Excel类似)
* l9 I7 n0 s0 x
6 \- c3 C, }) _3 D8 G注意 表格名称 和源代码要对应
) x$ b5 I. y5 d5 G4 P2 m$ F7 }0 a0 y5 \2 V( k; f& b* }

, z8 R9 h( {/ X3 m, `$ S2.注册数据源(代码中已经注册)和写代码
: T; Y5 V& X0 v" ]4 J7 X  D' l: L( q% {* \5 l
' b, c6 A  u6 Q9 F2 Q. p, _
在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,* y# e- U4 }  d
我们必须点击菜单中的【工程】-【部件】,
; \7 F- ?, n5 x% [8 ^* o8 C在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和. c2 e, X$ G( ?5 `1 F, e" `* {
“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,
1 L0 o  B/ [) _" u7 P8 C最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
" z3 c! J% A/ q4 r; @8 {3 q: |, F* S  e: `8 I

% @$ |6 F* Q' f6 v) r  o' Y添加4个文本控件  Text1 和 Text2  和 Text3 和 Text4
2 U" l$ t( J/ l0 x( z# ?添加一个按钮 ID修改成 “保存”
: o7 {7 O, ]" Z+ \3 ~  T添加一个 List1
+ U! g9 R9 L  A, _: h. x$ D! Y
; h: `' i8 y3 Y9 Z代码如下* a4 Y0 T1 X+ S- A- d! k
7 T, K' Y5 M9 P7 H7 y4 R
+ L4 k' }9 Q  v. n% q
Public conn As New ADODB.Connection     '标记连接对象
( E' q" Y; O: A3 u# b4 L+ _Dim sql As String
  w1 {/ ?$ [, T" i+ a0 @: j4 cDim rs_maxcut As New ADODB.Recordset
! ^% ]% }: i6 C5 p% b) H$ yDim str As String$ `  l8 P0 h& f, Y
Dim aa As Double, bb As Double
: W( ~5 \4 t1 u7 R5 j6 ?Dim mbd As String
6 r3 y/ ^" q: c2 [8 MDim 总页数 As Integer, 行数 As Integer, 列数 As Integer
4 `; I  H$ {- Y) V- @4 GDim 内容(999, 999) As Double
: O; ~9 w2 s1 r7 x( k* E
% j" l# t9 j4 z$ @Public Function cnn() As String) i( Z) q# y. V5 }( |
    cnn = "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & "ersist Security Info=True;Jet OLEDBatabase Password=123") n. S- h# x* y. S- l
End Function  c5 {+ [0 l5 r1 I+ o8 f3 l5 j1 D+ R
3 u: p: a9 T: b+ u1 L
Private Sub 保存_Click()
# e3 f+ v, c0 @. @9 b7 T8 `2 d. Y( m6 q5 ~
writeDatabase  [/ O( a; a+ R
    End
: D8 o" J" s' }. y' q. kEnd Sub: l$ `2 r6 w% _5 S
2 i/ C, V0 e" O. d' b5 y$ b# P
Private Sub Form_Load(). p+ P! c& N3 [8 z

% r) M7 Z0 R% Z0 W6 z" g: J. \ mbd = "D:\UG_OPEN\ini\数据库.mdb", {6 g  l+ X; E, Z5 g  e% G. k

1 u0 E# t$ V# S( a, Y5 i  w    conn.Open cnn '连接数据库
" t- x5 C( N8 h$ b- c3 G7 a    readdatabase
; B4 R  k$ {% ]! _# x9 ~( n    Me.Text1.Text = "行数" & 行数$ `+ W  {! m. D0 e
    Me.Text2.Text = "列数" & 列数
6 F" D% A  I8 ]: F5 F! d! YMe.Text3.Text = aa6 b: S5 S! r; E  y0 `% k
Me.Text4.Text = bb! |1 o2 T7 G  q2 P; s$ w; z" c
End Sub
$ {# _* x% ~1 z$ [  |( T5 z, Y2 M
Public Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)
; b1 E% J) |; {1 p6 S; g    Dim i As Long
" g4 A& Q) I+ e+ V: Y/ A    sql = "select * from test"
6 o4 l; j" ?  I& b4 o    rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集# Z3 m6 ^5 T) ?( V
6 @; v' [* T8 |" r
5 D  }7 z. C; ~! q" N' z  h
总页数 = rs_maxcut.PageCount  '页大小rs_maxcut.PageSize6 _' j6 K; K1 j4 A" s4 |" G
行数 = rs_maxcut.RecordCount  '行数 (排除标题)
& q) k& G0 N( ~列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)( p/ y9 B+ J8 |- A( {/ z  h( N

0 I% G# i0 O0 x- H5 n: l    If rs_maxcut.EOF = False Then+ q6 A2 k2 d4 v) _: I
        i = 0) }4 ^; D$ c: Z! K
        Do While rs_maxcut.EOF = False5 l+ r! W, A- [# u
           i = i + 1% j: V- x- u0 _% J
- G3 [' O  K8 e
           ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标6 a; d& f, ?  d! R- h) h& n9 l1 e
8 H. M0 \5 G1 \  t- z
            '第一行  或者  第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的8 o2 Z4 j* \, |( I$ n. e  v
2 o; L9 `, G9 F9 T2 O/ f

" V2 j$ o/ E1 T3 l" g       If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
* q7 D% Z! Y3 ?4 r" u        If i = 2 Then bb = rs_maxcut.Fields(1).Value  '除去标题后的,第1行第2列
, y5 J  u* ~2 ]. G/ [4 R5 f) f4 R9 r7 B3 A* v0 o& v; K
        '读所有内容到数组
  f# p+ t* ]( M# I- g3 T        For j = 1 To 列数
. d% V/ O0 d% K* k3 g6 y        内容(i, j) = rs_maxcut.Fields(j).Value; \. V, t! r1 F0 e$ Z: p
        Next
8 [7 s( p% d8 [2 x+ ^: u, s
) U. T7 K+ A) }" d1 c" }8 J- N        rs_maxcut.MoveNext '下一行# I) T: I9 g- ~( c1 H; v
        Loop
8 z" o% t: |5 \* v       rs_maxcut.Close '关闭
( A5 O  b! v( h( p9 V
; h2 T, Y+ Y) \( j2 C  f
& H2 k) i0 [4 @9 @$ l' O  @        List1.Clear
; P# u1 ^  V7 D. @% c" G        For i = 1 To 行数
& m2 ^" M1 u4 A% i/ V8 x* I        For j = 1 To 列数
4 f5 C% V' W( j3 U6 H        If j = 1 Then
& Q' F5 {& L  O        str = 内容(i, j)
& @  W4 |* N4 I; G. C1 \3 T3 `        Else
; ^" H$ ~7 m- M. l$ I2 J) j0 N        str = str & " , " & 内容(i, j)) L" E7 N% \6 [7 I# {. {, _0 `
        End If5 i5 z& F; F, K$ H6 @% G
        Next
. a$ M: E% V( |        List1.AddItem str
! U, Z6 K4 {1 I8 C- k        Next
) a7 ?+ s$ i; u4 D7 ^' ^1 S+ _% h7 g5 T2 o; j' V2 V1 q4 K
    End If
$ Z9 v( |( U# s' n$ o! t- P. M, U. o" s" A

! w% ]& r$ g. {! d5 E! L* X# @End Sub2 B3 ^% @% H  S2 ~
- T$ D: i2 y: X1 t+ V- G6 y- a  P
Public Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)
/ K3 ^% \" K' W0 y    On Error Resume Next+ Y+ J4 y+ P6 E
    Dim i As Long
# V2 K7 X7 I1 P3 G) L    i = 0
( }9 v5 w" n5 @( [
6 g' K) D# L$ \# [7 n1 jconn.Open cnn '连接数据库8 u: u. d* i4 L. m5 q
6 r6 a! n+ ]& v) O/ a
'sql = "select * from test"2 D+ y! h- q; ~5 ~# o& c2 d5 E

" E( |- k) b0 G& ]4 H9 [' e- r' v  rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集
. Y2 c* V; H) ^7 T0 C/ @3 r# s- I  d  O2 ?
    If rs_maxcut.EOF = False Then- f% k) `# S2 }/ K
2 m3 y. ]* O2 k7 l( ^, M
        Do While rs_maxcut.EOF = False% D1 C, {4 i) M* o% O
          i = i + 1
. R: z6 I( V. v) D& O) P4 }. j5 e% m1 M* o& J
            '不要去修改 第一行  或者  第一列的内容  因为他们属于标题
8 W3 M( c% E* d: @% S
3 e# [* l7 i* |+ ]% u: s9 v  W! `            If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列
: E  w! M6 p0 S" r1 a* F' V# E
+ ]; \, Q$ O- b' V1 g5 L            If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列( K4 H! o$ L. E. l! ]0 y

* l2 [* f4 k$ {' X              rs_maxcut.MoveNext
" H  Y  `# Q1 o- [
; c% d, o/ z/ {5 O9 g- _' i- g, g: Q        Loop
0 g1 n6 A/ U: Z8 e
' ^! a# M- V2 z. u/ D/ j1 s3 K       rs_maxcut.Update
* X+ t9 x* S9 S: J  M: _+ w/ {    rs_maxcut.Close5 _0 Q6 n0 N8 M
8 N- k/ ]! W0 P, W: x
    End If
+ _/ {3 W% c. F* n" i9 a6 l1 Y6 q8 v* \6 @; q8 T) _
End Sub
6 v  h3 E1 _$ ]4 B- I0 G
# l  n$ r5 s* y  C& J
! n/ H/ n) I1 `$ C3 n
/ S' C! n& I+ [! Z: E1 i( x
& W, H  s3 N" x% l# c% O4 n
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了