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 2338 0

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

15757753770 楼主

2016-12-11 15:03:17

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

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

x
c# c++ vb 是可以互相调用的
- m* J) ^6 c% ^- g) @# @3 c
' r! x8 P) S! m( q5 H, wvb操作access数据库 的方法3 B( |1 L2 O* e' r0 T4 T# k
4 K0 R& _" u6 @. N& e
首先要安装  Office2003sp2
! i9 V& m: U' e# r1 ]2 L4 |4 c5 m4 v, }# E
列子:读写数据库(.mdb)4 D! o& h4 l1 T" z5 O
( n9 @4 |5 b& u
1.创建 mdb
  d$ L; p4 u( \( q开始->所有程序->Office2003->Access 2003  新建一个空数据库 保存位置C:\report.mdb  ! J- ?+ r$ K- U6 o' h
创建一个表格 并重新命名为test          (操作和Excel类似)% X% f7 N! r4 k5 |6 r

' V) i, C. c( e# b9 j注意 表格名称 和源代码要对应- b# ?! q4 `' L' A

; c5 ^% C( E( h! k$ _# u
* Q& ^! Z' c* l# a* o2.注册数据源(代码中已经注册)和写代码
" h1 [' R7 M, ?( }  K! d1 ^% \6 c  X4 J+ s2 I+ u; E% u

, ]. f: B+ h; ~  t- C在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
  V0 C3 I! U) n) k7 H/ z. f我们必须点击菜单中的【工程】-【部件】,) j6 i- ~6 b, V7 l
在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和
5 L9 }* v- o' _* y2 W4 u, H“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,
, x' X7 Z  m; ]4 o+ W3 A最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
4 o+ s+ [! `/ H
4 w+ q' Y! I6 _1 t
( l6 S; p  J$ ?3 q4 K* a# ?添加4个文本控件  Text1 和 Text2  和 Text3 和 Text4
1 Y, t+ w* y) b7 f添加一个按钮 ID修改成 “保存”
; c9 y  m3 b3 W, I, Q" @6 w添加一个 List1
! C# U/ o9 v' B. w% {5 A/ M0 q. F  P4 `9 {! k1 u  I
代码如下
+ @; t! F% P" `
" ~( e* v! Z. W; D2 ]. h/ s( _/ E4 ^4 d5 M- t2 ]
Public conn As New ADODB.Connection     '标记连接对象
$ K6 d" N; c# U* dDim sql As String
1 m6 {" \: o* }8 _Dim rs_maxcut As New ADODB.Recordset
! n: w9 o$ N( F) y$ q% G% oDim str As String2 H1 A5 z6 l0 i# Y9 G/ S
Dim aa As Double, bb As Double
& D! H. g- S7 a  mDim mbd As String( Y; c7 J% q& c3 f
Dim 总页数 As Integer, 行数 As Integer, 列数 As Integer
7 Q* Q0 N# T" ^% x9 |Dim 内容(999, 999) As Double  y) R+ G( n. J1 {/ O
! ^  j; @" v! Q7 f
Public Function cnn() As String
( V" ?7 M: \  |* ^4 F    cnn = "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & "ersist Security Info=True;Jet OLEDBatabase Password=123"( l# E# n% T) y) T
End Function% w9 s' |3 a2 G5 |& i1 T

4 `! b% j! N' S! E: h& g+ VPrivate Sub 保存_Click(). s; o* h. S2 C* b+ o1 ?5 g

6 I2 a: J- A  F- g4 V: N writeDatabase% `3 }) _7 M+ B0 o1 v3 P  c
    End2 j- ]' Y8 a$ _! d# A. E
End Sub
2 @" M5 B, q+ ?; x* }* s1 U8 W) \' K; K/ ^
Private Sub Form_Load()
0 G. i  s- D' d" b) T
7 s7 q1 G6 Q) F mbd = "D:\UG_OPEN\ini\数据库.mdb"
4 i+ x8 Z7 `7 c$ ?
) ?* p$ f7 E* u- d    conn.Open cnn '连接数据库$ Y& {4 n+ P$ e5 H5 y; F$ A; N
    readdatabase
2 I  |, C# G) D  e1 M  v    Me.Text1.Text = "行数" & 行数
) W: Y' ?6 b- y* K+ l! W( _    Me.Text2.Text = "列数" & 列数8 _4 j! A/ L9 _/ C  h+ j, M
Me.Text3.Text = aa
8 n( V' }: ^1 l9 ?Me.Text4.Text = bb
  ~5 s! I2 B, Q# s) U2 L: X( eEnd Sub
; F+ N% j3 u5 ?5 P& Z4 h* B
. J% ?# K% ^9 V* I& zPublic Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)
3 A0 k( t4 B# L2 |1 H7 w6 G0 n8 S    Dim i As Long
3 Q* |, s1 k) m% Z5 O" C+ S& B    sql = "select * from test"  Y6 O  B. D. p1 X% I& n$ I5 z
    rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集
' P% K( n1 `# x8 v3 R" k
! J# a" D; D! N( ]
1 D/ w6 g1 w1 _  Y总页数 = rs_maxcut.PageCount  '页大小rs_maxcut.PageSize1 [1 [3 \) k" [
行数 = rs_maxcut.RecordCount  '行数 (排除标题)0 e1 x1 d" _3 X% R( [
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)0 S7 C, b% L" L' r" l9 U

% I( C% _; t$ g' O* A8 a$ c    If rs_maxcut.EOF = False Then
% f; p8 |- _0 A7 m" I) @        i = 0
8 i# ]! a, Z5 I        Do While rs_maxcut.EOF = False
$ o8 U* ~1 z( h& q1 c           i = i + 1# B9 c$ R: @  M* ~( s. b, j# x

9 n0 C! h( o2 h0 [) [/ Q: u           ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标3 n( A: b: l. f0 q
/ v' R4 `$ P) u( n! G0 b1 v7 v) h
            '第一行  或者  第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的  e8 m$ u+ ~% |7 Y

; k, M  u9 \- [8 T0 B" @( @3 {$ h/ {0 ~! m
       If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
* J/ e  r1 u" Y, k3 K" t        If i = 2 Then bb = rs_maxcut.Fields(1).Value  '除去标题后的,第1行第2列
. @6 c$ u7 F: M% H. K4 z
1 p$ R# r/ `! C        '读所有内容到数组
" m0 p3 d, h' l: {. q" x        For j = 1 To 列数8 d9 x2 I+ G' i' V
        内容(i, j) = rs_maxcut.Fields(j).Value
% E! o8 x5 z7 |9 \0 s, p        Next
) o/ f- u/ Y/ g# \
0 x% {  {" C: t) g) \        rs_maxcut.MoveNext '下一行
) l1 W5 W& H' h7 ~+ Q        Loop4 {1 g0 ~9 H4 I! l2 O4 B/ x3 N1 @
       rs_maxcut.Close '关闭
4 y) D; f+ c7 B! m) V9 J  c: g
9 Z, c& e2 W9 b5 I  z: B' s2 _" b) h( Z8 w+ u/ Y8 d  }6 V
        List1.Clear
0 q7 z; ]/ R$ G* n6 x, K4 I9 r9 W        For i = 1 To 行数9 ?1 t; I- U& ~/ Z/ q; d& n
        For j = 1 To 列数8 f/ M5 {  R/ m. K# w7 n5 C
        If j = 1 Then' |2 [) _2 y# E5 ?
        str = 内容(i, j)
+ j) c4 g) N6 h" q$ o        Else5 P# J" _/ h8 y+ g4 r3 K' ^: m
        str = str & " , " & 内容(i, j)" z" Q* V% g" m' L6 ~" f2 o# x
        End If
6 D- ~. F- A8 G3 ~" o; d        Next
* f* Y: D# l0 O' ]* a        List1.AddItem str
9 o# h  @& p0 [% b( L* `/ c! M$ N4 G0 A        Next0 V5 q5 w: i2 x/ U% `4 F$ D
3 e9 z* }' Q4 t& ^$ ]& a1 ?8 c
    End If
  J& p; p! f# D7 ^3 H3 T8 k# r# [( g" t+ m. l  t% t5 ^3 E# T8 D
4 e* a/ d& I7 f* Y3 G7 U
End Sub
9 |3 x5 T! u8 \& Z! z4 k3 Q5 x8 I; _+ T3 X- O# v
Public Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)$ w2 ]! w  O7 c0 h2 M
    On Error Resume Next# Q4 w! R; J# c4 X- a5 |
    Dim i As Long
$ |2 W; G1 F/ _1 g; j    i = 0
( p. I) O/ `7 j; V
/ W3 l" ^$ m  m& Econn.Open cnn '连接数据库
. h+ k- _9 s8 _( }8 H* q% T4 q5 y3 v
'sql = "select * from test"$ B2 U% Y3 m* M2 t

6 l3 j8 Q' T, K- g+ {6 a- ~/ L2 N" s0 X  rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集: w% J* B/ F4 f! Y# N9 z  P

4 T+ |# V  U. {) S4 O    If rs_maxcut.EOF = False Then
- }: T4 Y) g% N: C6 {% a
2 p/ r6 _, G/ }- V9 E- M        Do While rs_maxcut.EOF = False
! W  H/ g: T/ g0 P3 `- C" I          i = i + 11 R) d" Q* W8 c8 o& B4 z% t

, @! V/ `7 W9 M/ q) p            '不要去修改 第一行  或者  第一列的内容  因为他们属于标题
3 U$ ?7 {! N# d& n6 t( T; x5 F6 S% V$ M2 u1 q& N+ B6 G, x) {
            If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列
5 Q7 |: v- o* k/ m5 r; c4 i* l# H- `7 T. R* y
            If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列
9 Y2 U- x2 O. h! r3 ?1 `( ?+ H
3 R8 N0 J  V4 _! V              rs_maxcut.MoveNext& q* ^; ~* d- W. N: _

+ [# O, W/ B0 R' H( t8 a        Loop& p4 Z' k6 K, [& s9 T0 s6 N$ `
1 w2 {; [( ?* B8 M  K/ `" R+ e* d
       rs_maxcut.Update: T3 B2 E2 R% `
    rs_maxcut.Close
2 b: b0 v9 z# |" w. |0 E- Q% d2 N2 h0 e  @/ W/ i9 S1 y& U0 \0 e& ?
    End If' S! j4 Z! R, {3 U" Q; n/ }" U# @

$ m& u  l( @; _$ o5 h' w2 I' c( n' {End Sub/ D* r) C9 Q% k9 F
% R' T  j% e, U" S
1 t4 v+ D5 Y8 Q. y5 Y" N; q- z* M
4 R' S1 d/ M3 ^5 v: j8 A
( N6 ^5 q. `( ]" d2 N9 g$ B
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了