|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
c# c++ vb 是可以互相调用的6 R3 @3 H6 A& ~4 W7 d; X& W; X
; S4 k2 t. Y0 W3 }2 L8 q; s6 d+ E Zvb操作access数据库 的方法
4 G* C1 w# v, I6 T! _- e1 H
0 D" b) ~- P- [首先要安装 Office2003sp2 % s7 [( E; y" o& ?, I
( d$ S. M! W" a8 o. f
列子:读写数据库(.mdb)
$ Y7 W T* i+ r7 z
) X0 m( ~* L# `% o* H# C9 G1.创建 mdb
& _) M* H& _& m' K开始->所有程序->Office2003->Access 2003 新建一个空数据库 保存位置C:\report.mdb
1 o6 s% [$ y; E4 A创建一个表格 并重新命名为test (操作和Excel类似)
+ Y" r- |0 o+ Z
) A# Z! W& r8 D" ~, I注意 表格名称 和源代码要对应5 P1 `- R- s6 `: G7 `( c
# [1 J* R! z! E4 _* q* d) X$ `: U+ E9 G
2.注册数据源(代码中已经注册)和写代码
9 f; k) j: [' T& p" N/ B0 N9 T \# ?
. O* q- k- j& f& w- L8 Y; K
在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
5 p) b& S9 i' g) }! A z我们必须点击菜单中的【工程】-【部件】,
* a/ z9 v4 Q9 w7 f在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和
4 H* y& I9 A1 e+ A3 T1 ]: r9 |“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,( {2 @! Z5 M. F9 A0 ~5 K$ h @9 |
最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了9 l- A7 x% h+ E% G
7 }# r, y5 U& E6 }7 a- m" `4 c
4 R: W1 L, E6 g8 ?( `% @添加4个文本控件 Text1 和 Text2 和 Text3 和 Text4
( e# z) i0 H' T3 E) U: ~添加一个按钮 ID修改成 “保存”
* q8 O( b/ g8 F& t& d添加一个 List1' ]+ f+ x) [; ~% s1 ]
; a6 @& p+ Y. Y4 r) K
代码如下
7 X# W" T, |7 @; i4 ~# d+ F5 i( M
2 A. ]* x9 I f3 r6 O% L) fPublic conn As New ADODB.Connection '标记连接对象5 t. ?$ h5 V# I! M _- N0 ]2 `
Dim sql As String1 x+ P: c2 E; g+ ^! F, o2 s
Dim rs_maxcut As New ADODB.Recordset& Q( Z. d' M+ ~% R% ]4 k& ]
Dim str As String( d2 T5 ^. P' I$ [% B
Dim aa As Double, bb As Double9 r9 F& z; C6 h" U4 i5 }; ^/ k
Dim mbd As String/ N8 X" x: n( Y) B$ e& B# W' _ g
Dim 总页数 As Integer, 行数 As Integer, 列数 As Integer
+ d* Z A' P+ U6 [4 L( |' d; _Dim 内容(999, 999) As Double
, d9 {: R8 Z4 H0 i+ L( T- x# \4 n2 w, l5 K- N
Public Function cnn() As String
* {) B; m8 |0 u) v0 P cnn = " rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & " ersist Security Info=True;Jet OLEDB atabase Password=123"
/ ?, I1 y( ~7 x/ G0 d6 UEnd Function6 U1 Z ~ c+ Q6 k7 }
' f' ^1 w* E5 }, D
Private Sub 保存_Click()
% [$ L$ F& O3 c* R, I: V0 d2 s& } ^6 P: S
writeDatabase
( q0 F% P4 t: q5 n2 N4 d1 ?7 ~+ Y+ y End! X# J- w6 c3 K( b6 o+ @
End Sub4 L) @9 _2 Z8 `# M! p2 J
, E3 y( h" D6 |- S+ s+ k
Private Sub Form_Load()4 I" d5 }( \$ b# k+ Z% E% L
# _ h) K% S: J' @5 Y- K+ g mbd = "D:\UG_OPEN\ini\数据库.mdb"( W$ }; Z. i! S! e
: W- U+ M. z0 H3 p+ F: N conn.Open cnn '连接数据库
& X% V, c3 z- p( n/ Q readdatabase
x& K2 Q0 u: @1 i: U Me.Text1.Text = "行数" & 行数
{6 q* H. F0 q: X$ g Me.Text2.Text = "列数" & 列数
2 S6 j5 I% a. u+ U, e. UMe.Text3.Text = aa2 P; Y9 }, }8 \8 s+ ]; v5 E, ~
Me.Text4.Text = bb; }0 M2 x1 a' {2 y
End Sub
, r5 Y2 d y, d9 E) j3 G& s- P0 M: c+ O/ C% g$ j
Public Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法): ?9 i) G1 N( _! Q) d
Dim i As Long
' g2 t9 j- i; g, Z1 s3 R' Z8 P* ^ d sql = "select * from test"
$ I: P* x- ^" ]# A8 b rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集
, a! q1 @0 u( c: [+ l) Y2 S# ^, n( b8 Y
/ f2 m0 C' ~4 w7 p W }4 n) T/ N/ j% G; C3 B
总页数 = rs_maxcut.PageCount '页大小rs_maxcut.PageSize5 [% ?1 n6 Y* q6 c
行数 = rs_maxcut.RecordCount '行数 (排除标题)8 u* ?2 U5 @2 `% j# V# |
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)
; C( L0 E' `4 V5 D# M9 U3 v$ l/ A" Q
If rs_maxcut.EOF = False Then" N* m" }' a4 H. @
i = 07 m3 D7 T# G B; M
Do While rs_maxcut.EOF = False, T' }' i! l! B! ]& Q
i = i + 1
3 ]2 z0 w- a: J. i* J4 ?$ E) b2 i2 \4 E/ q
' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标
9 {0 u& U" f3 k" R) S1 l' p! ^
4 s* F1 S j1 t& ?2 r '第一行 或者 第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的$ x6 L6 {: X7 J6 t
) O! c* ~) A! b
. k" C; H7 _# \% L If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列& t1 [) t8 m4 ]. C' r
If i = 2 Then bb = rs_maxcut.Fields(1).Value '除去标题后的,第1行第2列
6 {3 v3 p7 _& c, A
% c! |7 F6 k* X5 f, I* U( Q% p '读所有内容到数组
7 O/ o- L0 @: f; I# o3 Q. M For j = 1 To 列数1 T2 [% L4 E2 L2 ~+ ]
内容(i, j) = rs_maxcut.Fields(j).Value. I9 Q+ n6 I7 Y3 a! h5 s# }
Next# \& _& m5 L. u
+ L6 n& h. Q! m1 J! ?# J rs_maxcut.MoveNext '下一行& I5 X# z& n1 Y" Q+ j) c/ ~( D5 n
Loop% g# o! H* Y* _& ^' L8 \6 U- M4 O' C
rs_maxcut.Close '关闭
1 M) u% |( s" K9 j C: g- A t; g: j7 o3 q \
6 e) a8 }" f: V# E List1.Clear0 O+ [; z p4 k8 H. v3 ^7 ]4 J
For i = 1 To 行数
0 A9 N# l9 ^- ^8 |$ N For j = 1 To 列数; z. s) [7 V& h2 o0 ~7 X
If j = 1 Then( a% I$ K1 Q5 h/ x: E9 l: L( Q
str = 内容(i, j)$ U* r( i& S, p, P4 f4 H
Else
" ]1 Q* t, H& ^$ U) f* b& E; T str = str & " , " & 内容(i, j)7 m% Y% V3 |$ \' r$ F+ |
End If
! T/ z y. c4 s: E Next
+ z& p) f) K6 H& y List1.AddItem str
0 C2 c0 s' R7 r( I/ Y3 l4 H9 n Next! w2 {* Z: T! J% `" [
1 j2 ?; H8 Z2 @4 c# c4 c3 q
End If! P) q z( J5 ?* F) F
1 v2 V- V( }4 C6 B# k0 J) w" u: I2 Z. e) G$ q- I; n0 T8 i
End Sub! p; @2 Z$ k E% \. ~
- n3 D G& Y8 b6 g" A
Public Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)
6 i( z( Y( `5 U T& K On Error Resume Next
- ], l( W3 W: ?& n% u7 e5 I Dim i As Long
3 r, A- E& _% h/ \( ~ i = 08 M4 u9 h9 i$ i, T* E# F
9 @7 M; a- q" Q5 a' |conn.Open cnn '连接数据库- v- E9 z/ n' v3 @; P! {! I8 A
: D) J- M) Y5 A: A'sql = "select * from test"8 m, V. [, |8 J4 {5 p/ W3 \; _) g
% n B \* a# F) p6 p: C. o
rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集 K7 N/ }. n5 H" G6 e: A$ s7 ]4 s
. L1 I/ {9 D# P7 @ w
If rs_maxcut.EOF = False Then/ R$ V5 H6 Q" g2 z7 o
) V! p% C5 ]" n& z2 u* [- e5 K Do While rs_maxcut.EOF = False9 N8 z) {6 M, @& H& U. H' D
i = i + 1
1 e# F: x% T2 A' m+ [( d2 @: r4 N" f% J) g
'不要去修改 第一行 或者 第一列的内容 因为他们属于标题7 F$ k3 \1 P3 I) ^% W) Z
3 }( b8 {, ^- _% S- e7 Z$ q If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列% L* |1 H% T6 Z+ F" c6 {
0 \3 h7 a! ~- x; u7 Z( A; b: s | If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列
1 W+ W( k+ s4 n h8 N; ^
4 D; I7 @2 R9 ~6 [4 j, @ rs_maxcut.MoveNext6 b- j% n( c) S1 m( Q6 @) g% ]
7 r4 u: G% [: b. f
Loop3 e5 c* L( k. f
" s4 O1 a' r+ v Z
rs_maxcut.Update
6 T- j# S1 ~; e' P5 m: f% J: o rs_maxcut.Close# R5 F* ]" h3 O+ T0 i
3 L+ [9 x2 A1 K6 V% Y4 U- S1 T End If9 C: q) G8 w% ^( G) C
; E% D K2 P8 r8 ]* |# NEnd Sub
; Y: Q, W" p- W9 k- M$ v5 d
9 D' {9 S: c4 p5 b5 _* v. |, m
" ]& d4 X: c" A. N9 Z1 v D1 I& i6 m5 o- J: U
% E/ k: `6 l8 X7 _
|
|