|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
c# c++ vb 是可以互相调用的+ e( R- c+ M. d! P8 Z9 H. j1 [) [
/ k4 s, h# x1 s* f4 A
vb操作access数据库 的方法. \1 j' x1 J3 i' J! w9 U% Q
, @1 ?. b; t5 U2 C; J
首先要安装 Office2003sp2
& I: s5 q1 N% [) c; h4 v! K* L$ d0 K- _
列子:读写数据库(.mdb)# Y; A( q1 V. r! m
$ f' |" t: M1 v/ v" {( q
1.创建 mdb
$ I0 U( n% x8 P开始->所有程序->Office2003->Access 2003 新建一个空数据库 保存位置C:\report.mdb " F- g }$ w8 ~$ V! Z4 H7 L: \
创建一个表格 并重新命名为test (操作和Excel类似)( e' r# }* t3 ?
. R: t! E) R2 k4 m
注意 表格名称 和源代码要对应0 _3 y* G# X; C) E) G4 u
. z! ^4 c- D9 n4 I
# Y0 N% }1 b& }3 ^2.注册数据源(代码中已经注册)和写代码
/ G( w/ i' G: B a9 U
- F0 ], D6 ~1 T! v" U" p! v1 A5 ~2 N4 ?! N; F
在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
0 {' e1 D1 h$ a0 ~. S9 n我们必须点击菜单中的【工程】-【部件】,
\5 L7 ~4 p; |. p9 S在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和0 x( Y5 h+ E4 p' p4 L x
“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,
, a" K; Y3 d6 h3 R! s最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了, L5 p( P4 p! q2 n5 m2 q/ G8 o F
5 h4 k; V; O4 R1 y
% q; K0 t o2 F" S, C/ _0 [添加4个文本控件 Text1 和 Text2 和 Text3 和 Text4
2 Y+ A2 M' ^( l添加一个按钮 ID修改成 “保存”
9 o$ q+ p: V5 ]3 C; C添加一个 List1
: h( g% U9 O5 d; k3 i; h' G n0 V& B+ e6 j. v% L
代码如下) Z- T) e! B4 E
8 `/ [( V4 X) G$ |) a
" G5 E1 P8 n# p% e9 WPublic conn As New ADODB.Connection '标记连接对象! M; }4 k/ k! {0 \
Dim sql As String- X8 I/ [4 ?: V# h5 ?
Dim rs_maxcut As New ADODB.Recordset1 J! h! f8 s9 j3 C
Dim str As String0 K. y4 L) D$ I. |: p* p$ Z
Dim aa As Double, bb As Double" V1 H: {% s1 C+ M& Y
Dim mbd As String
! K/ ]7 r" O0 T, p% {Dim 总页数 As Integer, 行数 As Integer, 列数 As Integer& }7 q" @. g! q& H7 j2 ^8 a+ [
Dim 内容(999, 999) As Double% u( L! J% a6 d! ?
/ g) Y9 U0 @9 x' `Public Function cnn() As String9 i1 R1 T0 B& M$ a9 R
cnn = " rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & " ersist Security Info=True;Jet OLEDB atabase Password=123"5 X% d! [( [7 H. F4 N: ^$ V
End Function; M/ b$ y3 b! p! }3 M; F5 K( G: X! \0 D
/ V2 v7 w5 ^3 x: v2 T' z% QPrivate Sub 保存_Click()
6 ^% C6 i5 B/ b/ [6 u1 G! `* m2 \8 n# Y
writeDatabase
7 ]$ ~( \2 G+ S& c( I End( ?, b7 G s* _) T! W" s" w
End Sub
( X5 o" O/ T6 g7 ^ ~7 l) a# O3 y- x
9 C( Z: s7 x% z6 M) t2 r9 n5 GPrivate Sub Form_Load()
8 H+ c1 g) j2 E: o1 N3 W# I; t3 J* ]' [/ C2 ?- C
mbd = "D:\UG_OPEN\ini\数据库.mdb"# Q4 \8 y3 V; \3 {, z
% p7 s% N, v: f7 j3 o* i H) s
conn.Open cnn '连接数据库
& c- x- z4 z5 P readdatabase
_( m( J, C& }4 k0 m" }9 V. Q- v* P$ D; s Me.Text1.Text = "行数" & 行数
9 t: C& e* K5 R$ n7 f( _- x( D7 ^; U; h Me.Text2.Text = "列数" & 列数
: S$ k# ?1 v% _. o$ y/ kMe.Text3.Text = aa6 d, R( Q, P& ]$ m
Me.Text4.Text = bb
$ `) v& X' |) eEnd Sub) _- I* I. U- N2 a
" b; {. c. o$ w1 b- O) y/ C
Public Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)2 `* g2 K0 R% W: D! h
Dim i As Long
1 u6 l9 ^9 h- i- w' r sql = "select * from test"
7 S, O* X( F! ^# K! q rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集
, j0 T2 s+ l+ E6 d4 {6 T* J! g# o+ E# C. o& }
8 h. b# `. i0 }4 O) B总页数 = rs_maxcut.PageCount '页大小rs_maxcut.PageSize
$ @; m! u+ l% m; C: f行数 = rs_maxcut.RecordCount '行数 (排除标题)/ i/ B" `. U) B2 s5 m- V7 i
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)
( M; N% `6 D+ o6 t. Q. v9 g1 `% w: ?7 E. y# o% i1 _8 m
If rs_maxcut.EOF = False Then- H g2 x" A1 d' }- D1 _ i
i = 0
# X- n C4 P6 v' s6 | Do While rs_maxcut.EOF = False
" k" D% I" ~1 P. a ^2 o i = i + 1
; y W) h; E/ [
5 D4 L/ \# h+ Y% s* }' i ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标
; i5 I% n4 h7 x# R. t; f
* l" {* i; M9 \0 h5 q# ~: k '第一行 或者 第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的
- T1 D6 B' Y0 L: U; A0 V. Q; ~ a% j! X
- ?, a, L [ B/ m6 T If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
( `4 ]# ~! I8 o If i = 2 Then bb = rs_maxcut.Fields(1).Value '除去标题后的,第1行第2列
( H5 \! k0 f# D- P0 B8 p8 q- i( o& o0 h, R) i( a6 K
'读所有内容到数组
2 j) r! G/ {4 Z& b5 W; q+ F( M7 ^: K For j = 1 To 列数
( b( U4 G3 v1 G 内容(i, j) = rs_maxcut.Fields(j).Value- c" I% _1 b5 Y. G) z+ L
Next5 f* N1 w6 M( y0 n* F
, U7 W G. u; L$ w& l6 Q# T
rs_maxcut.MoveNext '下一行; K5 }6 y. q! W q e3 [
Loop
7 s$ s5 f/ s8 v0 Q+ n8 d rs_maxcut.Close '关闭
7 m+ |( D( r+ m. }+ U# l8 L6 u/ b% M, l1 M7 E- d7 B
' u; P% ^7 B5 _: [9 R List1.Clear: o7 `: p& m# [( t5 |5 U
For i = 1 To 行数7 L0 T3 P7 J6 L5 B, L4 W& s* |5 b
For j = 1 To 列数1 a" ^8 U: R' d+ G0 O7 d! i( S
If j = 1 Then, }$ S# J1 `+ q }( z
str = 内容(i, j): O; s) p' L/ a4 R
Else
2 f% v- d5 R3 o5 }7 h, F( j str = str & " , " & 内容(i, j)
- y3 I# f x9 k End If
$ X6 l/ G' j4 c Next
/ {* p4 r* A- p; \' l( {8 y2 T5 h List1.AddItem str$ I; z& W. V0 p( g
Next a' C+ F( V/ G* m" e
( L4 ~8 F% S- J) m: D* P; t End If0 r# {* \* m7 f: H- H* Y
/ O% `) ~9 b p( V2 V0 m7 G' s: @. p6 p! T( p3 n
End Sub E& L$ v1 t; x0 W8 q6 c: k
7 G- r8 x5 g4 |
Public Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)
( Y6 Y& s0 w3 b+ Q+ p/ p On Error Resume Next4 [. c* z" ^+ c* k
Dim i As Long
) c7 A0 @& J/ _7 b! o8 O i = 04 m9 |7 K, R" t6 s# Z# p' [9 i
: P5 A5 C# z* c% U, f; Wconn.Open cnn '连接数据库4 i% j. I2 C/ V- f0 a
" J1 e0 _7 V( b# v) x6 f
'sql = "select * from test"
& t: \% @/ v* }+ H8 w
1 J/ Z: M6 R; I; K rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集
5 a' ]: q1 g; g4 y! @5 U' Q& c% `
4 [, n% h4 C' `% L If rs_maxcut.EOF = False Then
6 w; M' Q4 n: Y' W H- u. v3 r
4 b/ D$ K9 U# T1 e+ \$ l* J, } Do While rs_maxcut.EOF = False/ p" K x# B- U! J+ _
i = i + 1; u' g) s" h; t3 h8 B
4 b( B6 t% V+ \( ? '不要去修改 第一行 或者 第一列的内容 因为他们属于标题* H9 W* a6 j' s1 V- }
9 u; |5 ?1 i! F( { If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列! H- }( ^; `" X' k. `( I& ^3 \
1 a" h7 V" T' Q" E6 u# H4 y. L
If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列
, I% s% G, @3 \* v5 ^5 y7 F; B! M& I0 h# V
rs_maxcut.MoveNext3 z6 p9 N8 r4 t! R% J
0 g0 {% `6 \+ M' f8 e Loop$ T& l2 c/ c3 S# X% M2 K# D
7 `! e, O) ^- \2 G( ]5 J/ D rs_maxcut.Update x! H8 c o& p y: ]+ |& e
rs_maxcut.Close
H. V/ ?3 Y) }! ~
: R1 g( d5 U' T3 b9 K End If
% M9 h, z3 ]$ S& |* `! _0 h! j! \0 s; z7 [# |6 c3 R
End Sub
# x: A g! H e6 f3 q/ [$ m. D4 B- Y9 E" \7 U' J
7 X Q% m# B( b
; H$ |% {- K& c2 Y% c# h) M; Z. F& [- R; Z3 u3 f
|
|