|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
c# c++ vb 是可以互相调用的: q/ k& a- _* \7 \
: c |2 j* ^5 t) t
vb操作access数据库 的方法
' u3 |# J; z3 o/ N9 V0 Y4 l+ i7 L3 l
6 f+ D5 b4 w( m/ i: l; h首先要安装 Office2003sp2 & Y6 X5 R5 k$ c: ?" {" J+ o
9 H) v0 X0 X2 E% X列子:读写数据库(.mdb)
( u, R- d" s, i, ^/ B4 h) m2 t1 [ p* q& h* F. A3 S9 [% l' {
1.创建 mdb4 T. X7 o1 y' f& V2 |3 l
开始->所有程序->Office2003->Access 2003 新建一个空数据库 保存位置C:\report.mdb
5 @1 \4 G8 r7 k3 C- L! c6 x创建一个表格 并重新命名为test (操作和Excel类似)
/ ^; e- D6 A7 m x0 ?3 D* t2 P" H7 s
1 T; G* I. r, L# K8 J. }注意 表格名称 和源代码要对应- K A- F% [2 C: H2 q2 L8 T
7 ^4 g/ T# x; p7 q- p/ c( p/ K
7 h/ o, _$ `4 f3 G7 w* t2.注册数据源(代码中已经注册)和写代码5 F/ M2 N9 b$ {. a6 S
1 }- W! f% J. u$ [9 x# w" F
' e3 ]& S6 P" Z7 h# ~在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
! Z q3 x2 F' h2 F" x- c- A& e我们必须点击菜单中的【工程】-【部件】,
( A2 C4 |) f8 ~4 t在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和* t( `, ~: C; Z" _2 E7 L/ y' Z
“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,/ L. j8 k8 B9 m) V0 g. e1 @
最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
, Z9 U1 @) H; W$ q# X) \4 `' H* U- F1 D5 P5 f8 G
" g. I" Z4 O% N# h( {0 M" Z5 w( l
添加4个文本控件 Text1 和 Text2 和 Text3 和 Text4
7 H) L" p2 a- Z) c% ?# n- E2 m添加一个按钮 ID修改成 “保存” 9 j" ]( H3 I2 k5 C) T' k- J2 ~
添加一个 List1
0 ~2 d% y; j3 [4 k2 r4 w
0 a) O/ u3 O9 g& c" Q% r代码如下1 N2 o. C! y6 j! F# K, C# b- L
/ I% ]4 _7 i x* Y8 |
& Y3 _. w" ]- b: G$ M
Public conn As New ADODB.Connection '标记连接对象0 d- Q6 ^1 C+ g5 f, D& H5 \
Dim sql As String
0 ~) ?; J+ n2 [- A# H9 ADim rs_maxcut As New ADODB.Recordset% k! i1 n' T, _- |' u
Dim str As String3 A) i' X& k% J' m' h; p% |8 @
Dim aa As Double, bb As Double* U% ?- z3 g/ I3 `' l
Dim mbd As String
" i# ~3 e* r8 g# G" f4 ]( s- KDim 总页数 As Integer, 行数 As Integer, 列数 As Integer
) W O: s R# G. T* ^. a f, QDim 内容(999, 999) As Double
9 D3 t! R! h- L* I p
, X, o( \% {8 I0 w/ w3 W- MPublic Function cnn() As String
" E0 [4 J1 r- w' S cnn = " rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & " ersist Security Info=True;Jet OLEDB atabase Password=123"
$ ^; E3 U6 b* X% o& s0 dEnd Function7 A: ^" M! z; ~% a8 u: r+ o5 R
% ~* m M+ r0 JPrivate Sub 保存_Click()
! n/ {+ P) K" h- L/ k2 ~% V% Y1 F+ ~; o5 `" Y: h/ @
writeDatabase( H, S3 G; q. r5 u9 c, ^7 M: f
End
9 ?2 C; m! H ?( jEnd Sub
: }9 {9 y4 _- F- X2 r
& M; X" n2 e' B; q& c2 `Private Sub Form_Load()# ]4 v" t9 E* l9 I2 f7 U
0 @' ?! K% E: R, P) ` i mbd = "D:\UG_OPEN\ini\数据库.mdb"
9 }* X, r+ h8 L. g7 b0 M8 _5 i9 h2 F" S4 `
# w% b1 W+ C. I) Q3 h5 i/ N conn.Open cnn '连接数据库
9 x+ S8 k+ C2 n/ \, x readdatabase
/ ^) ~: g' b F* { Me.Text1.Text = "行数" & 行数# D) w) [! z% v W# b4 |
Me.Text2.Text = "列数" & 列数$ [/ w' e$ P6 M9 [5 l
Me.Text3.Text = aa
1 D6 I$ a( R5 m9 D- CMe.Text4.Text = bb$ }+ i# b( O" P& m2 ^* y" N- e
End Sub
' X% J7 J C; A$ E) \% F% n) Q4 ~+ H8 p4 g* B/ Z6 }1 V* J
Public Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)
9 d0 n) c8 k9 q1 r, V5 z Dim i As Long0 _9 b. g& T" F$ W) N) A
sql = "select * from test"+ F* v( v& j6 J7 D( }$ y
rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集! l# P" j+ u& f! R1 j8 ?, h, \
; \* L) {+ V8 ^& k- I0 g8 K* y5 n) n+ D6 z
总页数 = rs_maxcut.PageCount '页大小rs_maxcut.PageSize
6 {6 P, K4 |3 g行数 = rs_maxcut.RecordCount '行数 (排除标题)+ m) q6 h8 t2 u' _, k
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)
' n) R7 Q& X/ ]4 k+ C
7 h) R" f, h' U- X* y$ P5 D. i; ~ If rs_maxcut.EOF = False Then
( S; w* K# z) Z i = 0
) d& |; H* e& _ Do While rs_maxcut.EOF = False
" x, b# u" y7 }1 f. ], X i = i + 1
4 i, |/ [% q, E' A8 ?) u2 s, ~7 {! P* J* c: P& a
' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标 i, M, H, D: U$ n& j" G' m
# M) t4 a8 `8 j# s/ d: m0 R '第一行 或者 第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的. h! h. ?! L; U3 Z5 I6 V% \
) ~" l) J+ s. ^- }0 N: A3 R9 p8 @
If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
$ u9 X& C6 H& _: L6 O& w; P0 J5 e# Z If i = 2 Then bb = rs_maxcut.Fields(1).Value '除去标题后的,第1行第2列6 i0 G/ ?3 i5 E& A h
+ ^7 q8 E' N, W" s, k1 j* M '读所有内容到数组. f2 d7 G. x9 b& }/ Q
For j = 1 To 列数
) p! h/ `2 H e, f 内容(i, j) = rs_maxcut.Fields(j).Value
$ b; p3 ] x% E& \6 x Next0 F, x8 O) h. h0 N
7 e" R( T9 v0 u$ }0 @
rs_maxcut.MoveNext '下一行, i( A+ Z' ^$ j% X y8 y; ~3 u
Loop, q' P- i: r* c* ~+ L. j
rs_maxcut.Close '关闭 U" M& @4 {3 o7 |7 V5 |
, ]% q. J s, B8 g, Q2 P* z9 n
9 B6 f; y4 i1 P% D+ p+ I
List1.Clear0 j G, g- i. U
For i = 1 To 行数
( o( \1 J: s( Q3 i4 ^! n: l For j = 1 To 列数
7 ^9 x0 p- C7 ^; K) C5 }8 S If j = 1 Then
( e) F4 U9 w( I2 q' j str = 内容(i, j)# n, R/ Z) w7 W0 d0 J
Else8 D' Q% \& w& W1 t5 ^
str = str & " , " & 内容(i, j)8 U2 @: M/ j, I
End If
; Q+ H8 L% s* t Next7 ^& Q4 G* c' W3 A8 u
List1.AddItem str
% d: L ]) U5 e' D% o Next
; n! a- `: O4 F; w O1 b L
0 \ b+ F, l- X$ C" H End If. j, g, J' ]: o Z" m+ _( c+ R
2 r/ @$ x' K L t! V; G6 K
+ d7 k2 I6 A4 _+ tEnd Sub
& s/ S: p3 v9 K4 [% H% k, S6 `2 v
Public Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)# t: V+ y% I; s) A- x- _4 g0 Q
On Error Resume Next
* Z% p/ H5 d! t" A. W Dim i As Long( k. h# v) x% a
i = 08 a) b Q; c6 y6 @9 X0 k
6 o) ~/ I( T+ R j
conn.Open cnn '连接数据库
- J6 O( r# i! `# j' h. m9 z4 ^: q8 P0 _. _& e* L
'sql = "select * from test"+ \6 e. g# J% ? a7 p
& H1 F1 z3 |3 ~* Y rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集
- y" _1 M9 X# J9 S: Y0 b. D9 K
/ }) q/ D. f/ j0 }; a5 _: I4 I: p If rs_maxcut.EOF = False Then2 w# B( k* C7 u) ^' X o" q: B
& O) C7 r/ d, k) k9 u
Do While rs_maxcut.EOF = False% T/ D" f: r6 V" `
i = i + 16 e& @% j# r+ V" F4 D, X
0 m) X4 ?) z& k2 V# F '不要去修改 第一行 或者 第一列的内容 因为他们属于标题
0 J% t8 D- G* N8 R9 N, V' [$ }( N4 ?' n' v5 y) V/ j
If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列
* z) u: `' a7 I7 Y0 m) F q' o9 P7 m8 I+ @
If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列
+ a5 \* }$ h# P3 e( I
+ C1 Y6 K+ b) a4 P3 d9 I9 Z rs_maxcut.MoveNext
/ ~! d$ v1 X- r' p3 F2 v/ n
3 F6 D; m/ V% q6 |+ g6 |% m) c Loop5 e* Y! G6 v! ^% v
+ G% I: ^$ F+ E4 |% N. }( G
rs_maxcut.Update; f% b4 q; L; E! D& b$ s
rs_maxcut.Close
0 y& a7 ?/ E) i( O: e
) O) B% R' q2 z) v End If
# `. K; N, Q$ C& u) V) N B
8 T: \/ X: c) Q3 T% X3 rEnd Sub
" R+ k: I3 C- S
7 W3 ~9 d6 E! e" h. \1 a
/ G$ O+ x- W& W D4 y( O( p" g7 L7 A" h. J
1 X# [* q y2 n, c6 |8 x, K( Z# |" Q
|
|