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

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

15757753770 楼主

2016-12-11 15:03:17

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

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

x
c# c++ vb 是可以互相调用的  n9 S( L' Y# r  m

" I" L( S8 j. X# V  Jvb操作access数据库 的方法
6 i5 m& G, o8 b( K% v! u8 |' ~$ |+ B. n
首先要安装  Office2003sp2
: B# f, `! d9 V2 j3 K) \& u4 I! D7 }# U( [" W
列子:读写数据库(.mdb), i% z% J% V5 u; W! X0 c/ |( ^9 F- _3 N

4 ~* U' `) _- G. s: T( d1.创建 mdb$ y3 c% G, {$ r
开始->所有程序->Office2003->Access 2003  新建一个空数据库 保存位置C:\report.mdb  . N( l3 `5 ~( s: k; E
创建一个表格 并重新命名为test          (操作和Excel类似)3 s. D/ q3 M2 }& C' |2 ?

& N+ b: ^. o( e/ ^  ^$ L4 O注意 表格名称 和源代码要对应# n- X( z. t: n) F  `6 w# F
. V% B! H" O2 J2 c1 [* [
& a- O* w/ {' x( {& O* S
2.注册数据源(代码中已经注册)和写代码' v2 `1 S8 y; u& K1 Y- t

% y, y9 N! G8 L& R* p4 B# g! _! s% g$ U  V
在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
" V6 X: e) `1 `; X2 B3 \我们必须点击菜单中的【工程】-【部件】,9 \- P$ K+ L. s. R+ l& F
在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和
4 I6 x) G; T  w“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”," r! S5 ^  Z# {3 c
最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
  r$ I% ^, ^8 S5 k! c4 d' }- k
& \. y0 g' \: M7 [1 g4 k2 {% @
9 Q0 |! A5 |+ }* k添加4个文本控件  Text1 和 Text2  和 Text3 和 Text4
6 q: r3 ~, R! a) o2 j4 o* \: N添加一个按钮 ID修改成 “保存”
" f( [( p# Z9 M# J1 n添加一个 List1
( t4 h* D6 F7 D1 \; B& }
% t* r( n! |" [8 r  P# h1 P代码如下
3 k- E. n& E! y4 N7 {! ^" c0 l8 Y; x% t$ q6 p2 _5 K
2 L  j4 m' ^4 ?, X  ?
Public conn As New ADODB.Connection     '标记连接对象. ~2 T0 Q  X4 f7 V  K
Dim sql As String
, g$ O9 F$ f" b$ m* ]% Q$ `  iDim rs_maxcut As New ADODB.Recordset' }$ K7 J* w9 k8 f. K2 r5 R
Dim str As String
5 P8 R( w2 q, sDim aa As Double, bb As Double" B1 f( s1 v: F$ c! ?& c
Dim mbd As String5 v5 i3 O' u9 g' _
Dim 总页数 As Integer, 行数 As Integer, 列数 As Integer6 L, n5 N( C( z: B" p
Dim 内容(999, 999) As Double
1 j# R" B, T6 k7 G$ h4 N
# L! R9 ]% E! N& C6 }Public Function cnn() As String+ f" T, ~% L  i. i& X
    cnn = "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & "ersist Security Info=True;Jet OLEDBatabase Password=123"! p6 R5 p8 E" i
End Function
9 D: g3 ~2 J6 }( a8 k4 s  n& f  J( i6 d! o) t
Private Sub 保存_Click()9 e5 ]8 C$ s: L1 ]$ D9 J' r

8 q, t" Q- W& E6 G( d writeDatabase
5 p' w2 J' |5 R1 z8 q( A- C* n" w    End1 d/ U; J7 G( s8 }7 x) V
End Sub
2 i/ @& V3 t5 @2 p, p( m
+ C- t% r7 ]/ o' w, M( \5 G3 y: L; oPrivate Sub Form_Load()
0 ?# ~7 z* N3 X" Y: W4 E' ]' t& L+ l$ J& ]- D
mbd = "D:\UG_OPEN\ini\数据库.mdb"- u! y: @  J# p9 _" ?- s
: g5 {! f: i3 Y2 ?
    conn.Open cnn '连接数据库/ u- e; r+ B! F8 g
    readdatabase
9 U7 I7 k. g* L$ A- E. l) T3 {    Me.Text1.Text = "行数" & 行数
  h7 @$ F: R- Q' b6 z    Me.Text2.Text = "列数" & 列数, d, ]- x. J" e) z
Me.Text3.Text = aa
, ?0 e$ U5 X/ LMe.Text4.Text = bb/ M" @; `' g, ~
End Sub
+ q8 ^  k6 o: U( \/ c; Z# o/ t4 a# x$ S- @
Public Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)
2 ]9 Z" U, C$ B    Dim i As Long. u2 N: A. U+ l; A% o
    sql = "select * from test"4 Z8 k, H( W- l" ^$ I
    rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集
% v7 ?& f  K3 I% X$ T+ k2 R1 u5 ~" ^, I. R& `& b3 D" R5 z- ]

* W; F. T4 @$ q3 \* r2 \总页数 = rs_maxcut.PageCount  '页大小rs_maxcut.PageSize! N# N, q# K9 p$ X
行数 = rs_maxcut.RecordCount  '行数 (排除标题)
% t- m& N. Y2 v5 T' U8 k9 c列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)  [( C9 X, B) o2 L0 v. ^/ @

  D2 S3 n5 G0 K& j2 B5 X  e    If rs_maxcut.EOF = False Then& F7 k1 R. O4 f
        i = 03 f6 ^" M) s+ ]4 j
        Do While rs_maxcut.EOF = False) z9 Q! t+ V+ X4 x( K7 y
           i = i + 1
( `) r7 C! E! ?: m) L
. n$ R% N" M" `% r$ u1 w           ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标
5 S& G+ o2 d# d. n. w* V" n
6 r7 y4 r$ j- o            '第一行  或者  第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的
' x% M$ |6 f) S! b% a. k. ^0 ~/ D  `9 _' M5 Z& w# N5 J
  A$ D/ _5 q: \
       If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
" l( E1 n& U* j$ Y        If i = 2 Then bb = rs_maxcut.Fields(1).Value  '除去标题后的,第1行第2列$ Q; W; w9 {# _% L: Z
7 B' `0 c* l+ M7 w
        '读所有内容到数组# O( |: z0 ?. G7 b
        For j = 1 To 列数$ {$ t8 u& o4 X+ a; Y
        内容(i, j) = rs_maxcut.Fields(j).Value
6 H  n  S% R, ^/ Q' J8 w$ u        Next
, {7 ?& n. \& C7 c% G' Y
# v" J3 D! T0 i+ |! \# I        rs_maxcut.MoveNext '下一行4 d$ w1 f( t8 ~* u( R( r3 k5 O
        Loop5 s3 |( G5 f: |
       rs_maxcut.Close '关闭
; f( k% E% r. \& A$ I5 x, Y5 b2 e0 `. ]3 z" `2 v3 D# a6 k" p
+ o+ \% H, N. V7 r9 _1 e' S$ A
        List1.Clear
% V7 ]! v3 }( l7 g        For i = 1 To 行数+ `7 F. |! U, @% w" q8 l
        For j = 1 To 列数
$ l: O8 O" d* H6 J7 \' p% ?        If j = 1 Then, z/ Y8 x. x' f0 t) X, I- |1 b/ Y
        str = 内容(i, j)
  B3 o. H3 x! N% Y7 s, k* o        Else8 A2 S2 a8 W( ]3 J, K
        str = str & " , " & 内容(i, j)% B+ [. R) O" W3 o
        End If
5 ~9 Q* K1 ]8 ~9 X) ~5 P8 K9 N        Next7 a; A2 Y$ P7 I$ X1 N; q7 P: g
        List1.AddItem str7 n( f/ j: [) ]+ V1 `& B* b! n
        Next* @3 x0 I: m6 c
" r- j# Z) z) `2 P( ~
    End If
5 L( s" O0 {; V9 ?( ~; @$ i( N0 [7 Y& ]: D. M2 w: `' y  [
5 g; V/ E* N* G7 P$ ?( c. C  y' c/ k
End Sub: L+ w* z, [: y! w. `

8 u3 z. o$ I( l; MPublic Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)
4 z6 |* E" ]5 M5 T  V' h    On Error Resume Next
! D+ k- |/ w% w" ^. ~# o3 s$ H    Dim i As Long
' I0 K& w1 u4 G4 R# i- H    i = 0
/ G" M1 ?3 e2 j9 y) ?( j. G  Z. R" |4 ?4 K: g: J5 w+ b- t, l3 R
conn.Open cnn '连接数据库
  H# ?: u" O! l6 q0 @7 k) p( G$ _& ~  H
'sql = "select * from test"
4 K+ |: k( o0 S0 O8 E, h3 E  A9 r" L
  rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic  '打开记录集
8 O7 N: K; B3 n; E1 t' y/ r
; W% O* g. m) B, ]    If rs_maxcut.EOF = False Then+ y( K: @4 h( D* H; a! r
* G8 C0 S3 z, Y4 N- E- K
        Do While rs_maxcut.EOF = False
4 }6 T9 \7 F: k. u. T          i = i + 1/ N4 X# T, g3 }, c. E' Y: }# \

8 R) d3 s9 O) B6 `8 _1 A            '不要去修改 第一行  或者  第一列的内容  因为他们属于标题
, V8 j# R) a4 x/ E) f  h5 R4 {; O+ x
            If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列* _' z6 ^  {& N  T2 ?

0 M+ L2 Z' ?% V4 Y8 o9 F            If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列5 W, S6 r5 t9 Y( z* O, n6 Q
& @' M" ]  d8 `& ]& Q* A$ G
              rs_maxcut.MoveNext
1 \7 W( ^- e  U4 y: f. H
8 L* q- I% w0 t% `        Loop
8 Z) R: w+ J% R% `# D- z/ `5 y5 p" k/ B' X% n9 T
       rs_maxcut.Update& W, z. f( b# W& h
    rs_maxcut.Close& f! R1 |' ?  q+ B
/ D) w& Q' x7 @8 t6 j- a
    End If- o/ p# `/ d& m& W7 v
8 E6 b+ _$ r; U5 x
End Sub% o6 S- V3 ^. S$ p

4 }- Y$ ]( q1 ], ?. R2 ]/ c+ o' @. e3 x; E! C

6 e4 u( Y& z, O: `5 k4 q
8 r7 I, c4 [+ {2 \9 i4 J
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了