|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
c# c++ vb 是可以互相调用的: t8 B% y, a) W
9 y* L9 i( ]6 Z6 ?8 s q8 F$ avb操作access数据库 的方法. \$ _" p* E N2 Z& K) M
' N. ~9 x" W$ o K首先要安装 Office2003sp2 ' }$ G8 B' a6 I! @7 |
6 F; R4 a( D7 a2 D列子:读写数据库(.mdb)& [$ F9 s) D8 I* g: `3 H5 o
' b0 S: a# K% Q3 ?
1.创建 mdb) ?- j4 ]9 P# n: M) R6 i
开始->所有程序->Office2003->Access 2003 新建一个空数据库 保存位置C:\report.mdb - y' p/ t* U9 M4 B+ r1 m
创建一个表格 并重新命名为test (操作和Excel类似)
3 A- D3 H! f2 j/ p3 ?4 a0 _- S- N9 `0 B& C
注意 表格名称 和源代码要对应5 d$ h/ Y/ g( X$ q9 I' K
; U# S5 Z% E$ T n, w- L6 o
, g8 ?; @ C1 B: I, p2.注册数据源(代码中已经注册)和写代码
5 C3 P# [, E- D3 N: b
& `4 r, I; `. G. p$ G0 F* o5 Q( F0 D- l
在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
/ Y; V6 y6 z4 ?! h4 e5 Z我们必须点击菜单中的【工程】-【部件】,
* K8 a/ k, E3 g/ j4 h在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和
# s e* Q$ o. ^) q. |( a“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,
3 u4 v5 m6 {. s0 z4 M最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
& r# t( k1 ~, B6 e8 S
# M$ a( ?! ^! U2 S& O
- L, ^6 f2 F. ^# G& N- W- Q D) o添加4个文本控件 Text1 和 Text2 和 Text3 和 Text4
6 g; U- s* ?) M8 p0 b6 a* c: Z添加一个按钮 ID修改成 “保存”
, P2 O$ |" }' v添加一个 List1$ r! |) _% ^7 m1 [+ a) |
1 [6 O# t2 P7 `- Y' h1 N: v* v代码如下
2 n4 h% l( G8 _* ~+ _& Y! j3 ^# J, K: A) e+ R8 h0 v
o% o J6 P1 a+ [5 [7 lPublic conn As New ADODB.Connection '标记连接对象
: M8 x; x0 h! R, J4 FDim sql As String
S+ O- ]/ z' Y0 o$ _) JDim rs_maxcut As New ADODB.Recordset
, }7 e( E _5 O% D) }3 \# zDim str As String3 }* L; I) u* m2 b4 Q. u+ @
Dim aa As Double, bb As Double
( ?2 r$ b. H% O7 p: X. P! yDim mbd As String( {4 Z, {! s- D7 f
Dim 总页数 As Integer, 行数 As Integer, 列数 As Integer
% O+ A" f; z9 a$ N- ~' d/ mDim 内容(999, 999) As Double8 N9 t* L9 T1 A8 S: I
2 j0 P: b9 i4 E% N c3 `" Q
Public Function cnn() As String3 O" G( W, ^% e. r
cnn = " rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & " ersist Security Info=True;Jet OLEDB atabase Password=123"- ?0 N& D! a4 @* ? _& u
End Function
) g% G/ e/ p1 E9 V+ P. R1 G3 ]6 L* x# P* I
Private Sub 保存_Click()
3 n8 g* F4 w% U! j3 e3 d
5 I3 I9 p) w0 D6 |( Q writeDatabase
* \% m$ Z0 w+ r! w1 S End2 a9 J( n) f$ \ w% A& {7 B
End Sub
3 u1 u# R& o1 e* |% i$ W6 e
t. f% y! V( A2 a3 v7 J# nPrivate Sub Form_Load()
, E. }5 O$ I) W+ ^7 M, g" ]
- Y: n- b2 [+ ^" V! e3 J4 y8 n mbd = "D:\UG_OPEN\ini\数据库.mdb"
: ?3 Q! m$ t. y+ Z3 H; X; [3 s+ J5 L- {/ n& `3 z7 h6 _
conn.Open cnn '连接数据库) F* s! K' l6 p& [$ C& e
readdatabase
0 ?' D4 h0 r' O+ Y2 T L Me.Text1.Text = "行数" & 行数' F1 W3 |2 E9 h! h
Me.Text2.Text = "列数" & 列数
+ m: }1 o/ i; F+ x$ gMe.Text3.Text = aa
' {( ]1 g0 N$ cMe.Text4.Text = bb
+ J% f! A( I& H M# P! kEnd Sub
9 T) O7 c3 j+ A; F* s4 ~8 w+ l
- ?5 M ], \7 P* I. bPublic Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)
+ ]$ H3 y k2 K" v# i! \ Dim i As Long
- E; T8 Q' q2 S" o$ @! T sql = "select * from test"
3 f$ P2 I+ @" D ]' v" r rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集
# d4 N, q& u1 H4 Z4 m4 t
+ R* u& `( m7 W' Y4 }( v \6 ^+ I) o |. I
总页数 = rs_maxcut.PageCount '页大小rs_maxcut.PageSize2 X" g @& ]6 A: f- F0 [# n+ m7 k
行数 = rs_maxcut.RecordCount '行数 (排除标题)
D0 r8 G6 K, j5 u1 V- Z6 k; p列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)
0 f5 I+ {5 p$ F P- X$ U. z; _7 K) ?. ?6 ^, l: }" ?$ J5 I
If rs_maxcut.EOF = False Then x! f! g4 S, }* g
i = 0
/ n3 H% q0 H5 q- R/ K2 c4 ~1 @1 ` Do While rs_maxcut.EOF = False
$ {' K- J9 [0 G# Y i = i + 1
9 w7 B" [2 K# t6 c$ ]( @! _% j# V* b0 c& {4 g
' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标. a) T: }% u3 b! U1 M( C; F
& u& ]: J1 z) K) J0 H4 F2 d7 \ '第一行 或者 第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的' C' t4 z e: `5 D
" @: Q$ j2 C+ x% w4 g8 |3 Y
" ~8 O; H& t3 I2 t, l If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
7 B c2 _/ _9 ]. t* { If i = 2 Then bb = rs_maxcut.Fields(1).Value '除去标题后的,第1行第2列
2 G2 v4 l7 B# {1 @0 o& Y1 J4 B5 l: U* F/ v6 @$ {6 x* ~* P5 d4 I& ?2 [+ R. u3 C
'读所有内容到数组
* J1 B5 `0 j9 ^3 l4 H' @* h For j = 1 To 列数
5 G8 {$ @$ g8 l1 F1 ~) Y1 c 内容(i, j) = rs_maxcut.Fields(j).Value
0 Q9 u4 v: j0 z. E' B6 ?5 L Next+ h' Y3 F0 K; P( A- i1 x: R
& @$ s2 K9 y1 Q% e% k: C3 k2 v# Q rs_maxcut.MoveNext '下一行, ?. R3 o2 q. ]% N
Loop
( _* ^) R. ?7 A' D rs_maxcut.Close '关闭9 G. f. Y# d# a3 a9 Z+ o
. t- {! N3 R$ g+ B. {3 ^- I! V7 O" E+ x9 b9 x3 O
List1.Clear$ T7 K* Q+ W; ?! C7 U
For i = 1 To 行数; K2 r0 W" i4 Q* X7 |
For j = 1 To 列数6 S7 e, n/ y0 [
If j = 1 Then
8 D) X, q# j4 O/ K+ A' ` str = 内容(i, j)
8 w' W- W0 ]' }& V# `# I- c4 O! n Else
5 m6 h* U. _) u str = str & " , " & 内容(i, j)' p( q/ Y) C1 o8 R1 z7 b& P1 f) M/ }
End If' G& A" g% w: L) ^5 O
Next
* f9 k: T/ c) F& ]9 e4 p$ h List1.AddItem str
# q; Y# D' R* ^5 N" | Next
2 L1 ~1 P" Y% ~7 Z) c* G/ B5 F% F% a3 o- {# K0 c- V+ Q& s
End If- f) [# ~) C+ x2 L3 ^' Z
) o' @6 a# ]0 ?9 I4 o: w0 F" f- ~/ X$ Y# _* P4 k
End Sub
; I- u6 f. T) F# B+ ^& Q; s; @, \# Z
' I1 U R/ M% d& ^! qPublic Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)6 {$ G$ E* w/ Z' r" H
On Error Resume Next
! [2 N4 ^6 c+ p& x# L" @$ ^2 ` Dim i As Long. c5 L j1 m6 a- H2 F
i = 0
# m' j" P( C1 O- e. B) Y
8 }" v% ]/ u g$ T4 `* ~conn.Open cnn '连接数据库
* g! p5 U' D* M) V) Q
% S `$ e$ J" t) i0 U5 V'sql = "select * from test"% x3 a% r, e1 s1 U0 i& F# Q
/ }2 N7 @4 q6 u2 H/ r rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集6 L& k9 J3 z# Z2 h- j" f$ S* ?
" B5 ?9 I$ C! W; \6 T' t/ l6 K If rs_maxcut.EOF = False Then5 V/ {7 G( E) f$ C2 d1 U
0 K: U5 r/ p% s Do While rs_maxcut.EOF = False
6 H, D1 W" v% F/ @ i = i + 18 D$ o: m& S" C. `; \
" s4 c! M; R5 ~4 x$ F
'不要去修改 第一行 或者 第一列的内容 因为他们属于标题8 F( m9 q$ k( O; m
L: r' k8 H" h: `8 r: M0 ^9 X% \
If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列
' c5 B7 E, k9 ?% w* z& r U
, g0 n- m4 [9 [" X" F7 L7 l If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列
( J$ h3 k+ F; o+ ^# U( @, ^
* C1 p3 n3 D; p; `/ l2 F/ g g" ^ rs_maxcut.MoveNext; o% f) p1 N' `$ t) _) H7 S
" d# K1 p; j. T Loop% {3 d/ L" Z; w$ k( n
% @& O2 W" J; G( F5 \ rs_maxcut.Update! q7 ?9 W7 h }, i l
rs_maxcut.Close
8 ~' v+ F3 j. _) B
. W" C6 C7 {$ P f( G7 V F$ e End If6 U1 j9 U0 r: U9 [
$ ^' v4 r$ v; b! k8 t" E
End Sub2 j% m* p S1 N& d! _& C
& v% i6 u# k& i6 x
8 l7 b* g( L( s" x J6 k. M
) t- W. S( u$ x" F
# K6 Z u# ?2 M" Y: A: R |
|