|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
c# c++ vb 是可以互相调用的 J, A! j F. j: ]5 |, A$ g
" M, i4 j/ b& v- d& i* C( U% N% g, ovb操作access数据库 的方法- v0 u: [& A: Z, K H3 _
' j% L( T: n9 N* b U' j- p& @首先要安装 Office2003sp2 5 \8 }: o8 v4 n3 p- @( h
; y# P6 I: e( D* e列子:读写数据库(.mdb)0 r% U0 K0 F0 Y8 I* P- X8 N- Q
* v! K J0 k' w5 m
1.创建 mdb
5 b7 c6 c3 S) ~1 f1 @1 r) I开始->所有程序->Office2003->Access 2003 新建一个空数据库 保存位置C:\report.mdb - }, K1 @9 f) @# Y
创建一个表格 并重新命名为test (操作和Excel类似)
/ N( A; M! n+ O$ K3 i( ~, |+ A: C( h% m$ A: T! f" Q, H
注意 表格名称 和源代码要对应
4 A( M! D6 [0 m' w/ C. `# D0 N2 Q- a1 t! L1 {/ Y2 f" \
4 e4 Q) e# f; X- p* T2.注册数据源(代码中已经注册)和写代码
: u5 O3 U5 ~' v' F3 `" p* W
+ [* B6 l8 {8 m* |
E3 }) o4 ~' Q9 J3 b在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,* j4 f7 L/ T/ Y
我们必须点击菜单中的【工程】-【部件】,
t- _) ]5 r( d" i# S+ k6 q在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和
2 L7 n( ~) E2 ~: O& P' \“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,
3 G5 [0 k" s3 ~3 Z最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
( W1 F% O; s9 Z1 E7 i) i
2 z' L2 b+ x, S3 ~
- y3 U- U4 |$ f/ X$ v/ b添加4个文本控件 Text1 和 Text2 和 Text3 和 Text4
1 k. e( Z" r4 {! i2 q. d添加一个按钮 ID修改成 “保存”
$ Q2 ]- m& `8 ?7 v1 F添加一个 List1
. T) ~) I e1 j) N' g' W$ I& V
& b+ }# ]5 ]( m代码如下
! o% q6 T5 J7 T4 U1 S- G3 j4 q. ?4 f
. q& P8 r7 O: S- }6 |- w
/ ^) c& |4 o( JPublic conn As New ADODB.Connection '标记连接对象) u. V" j6 i8 ^5 N* k0 \1 G
Dim sql As String5 z2 r7 O& }: u1 Y0 t
Dim rs_maxcut As New ADODB.Recordset
& Q8 ~; Q t) h, \, q2 UDim str As String
8 K; M( x& P TDim aa As Double, bb As Double
1 ?7 ~4 Z7 X" cDim mbd As String0 M8 W0 S x0 K+ E' {8 h
Dim 总页数 As Integer, 行数 As Integer, 列数 As Integer
9 `) b7 G0 d @Dim 内容(999, 999) As Double
J; j# G6 h# [$ E1 Q! _/ A. ^0 u' O
Public Function cnn() As String5 S/ C# W0 M# d P+ Z
cnn = " rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & " ersist Security Info=True;Jet OLEDB atabase Password=123"3 g6 m! M4 G( ]: Y
End Function9 o! v5 J* v* d' G5 A' `- q2 a
) U9 V; C9 g) e8 a9 NPrivate Sub 保存_Click(): U& m; T9 g5 q0 D/ a
2 |& m( W+ ]# W% X- j6 Y+ A
writeDatabase3 w0 c7 }6 m* z4 U& m: ?* R" i
End' {) ?1 W( @2 {* B& o2 [ z& w- t
End Sub
$ \( m' M4 h# s
# I7 U1 |6 J$ [Private Sub Form_Load()
8 h2 M% Z, m$ L, P8 |$ ]3 G, D! ~8 Q! q- Q: I7 L7 c6 f
mbd = "D:\UG_OPEN\ini\数据库.mdb"
6 R: b! K3 ^) [" J( s* A# K X& w
1 C* Y+ t. s4 _* ?- _1 [8 e conn.Open cnn '连接数据库) O- s, }1 F# f+ \' q3 ^' X- F D
readdatabase
1 x9 @+ m9 l$ q' [, Z) N Me.Text1.Text = "行数" & 行数- W% Q. v1 F8 m! _
Me.Text2.Text = "列数" & 列数4 G' ^( B1 K; i+ P
Me.Text3.Text = aa
- k# t) \# _7 ]* q; OMe.Text4.Text = bb3 ]/ | l3 V) y2 p3 G3 i- G: C U5 M
End Sub; u @2 W) e1 L
! }0 N6 C5 b% U0 _) S8 H- \; ~# zPublic Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)% ^/ I3 H: Z( X" S% E
Dim i As Long, S# |! c* H) b; I- ~9 g0 A- l& k
sql = "select * from test"
$ a! k1 Z3 i. d7 _: I! W6 [ rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集5 s, ]7 d8 r0 `- L- i+ a: ]
" O* i4 K( j0 E( }& O: ?
, P; i4 ^/ u2 @8 N
总页数 = rs_maxcut.PageCount '页大小rs_maxcut.PageSize/ z' | ^7 `8 t' m6 Q! Z
行数 = rs_maxcut.RecordCount '行数 (排除标题)% m6 J( }0 _, J% H+ s# N+ M5 c' f
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)
2 `( @/ u- }# q8 Q' ]/ x+ b" i/ y2 @0 _# C7 L0 ^
If rs_maxcut.EOF = False Then
% J+ ?) Q" b6 @) Z i = 0
! l E7 n- y* N1 W2 w8 }) J Do While rs_maxcut.EOF = False: Z( `2 k* U8 \/ b2 I* I
i = i + 19 n5 \# j5 ^5 M7 U
8 i1 ]+ T+ b+ U ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标
0 t o/ e7 \0 h. ^3 H o4 d1 N: y
: N4 K- A0 w' Q) X+ P7 n1 y '第一行 或者 第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的
! `) v* a- w! U' \1 S, \
3 v$ Y: C) }4 X
2 i* W! Y4 X0 o If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
, h5 N, |/ K* Q, m( g. c1 r If i = 2 Then bb = rs_maxcut.Fields(1).Value '除去标题后的,第1行第2列
- X- L" M) {! _5 ^" n2 q' L
5 W# X/ F! Z/ | '读所有内容到数组
+ o$ W3 J' m, w9 t5 F: Z6 x For j = 1 To 列数
6 z$ {8 g) M" L; l: P 内容(i, j) = rs_maxcut.Fields(j).Value
) e! F( l8 f4 A( P4 r. D Next
( E' \8 ~' E; T6 x3 l4 P
2 M5 ]9 W3 o) ]9 O+ b0 ` rs_maxcut.MoveNext '下一行8 ?, f: f2 `3 ~* L0 J# K, z
Loop) y6 H; R: A! J9 m9 u
rs_maxcut.Close '关闭
) T) Y& @3 ?& j2 Q7 M: m: d! ?- {3 I0 k% y6 J6 `4 z
- A, p- \3 j) e" x% u l6 j
List1.Clear* }/ o8 U1 @5 Y# A& Z1 k) \
For i = 1 To 行数
% u3 N+ |; u! q0 g P j( n For j = 1 To 列数
, _7 U2 \( Z4 l If j = 1 Then
( |/ b; Z6 g! `, V6 p str = 内容(i, j)
; X, A9 }" u: v/ Z, ^( J Else' M0 A; R. G* m# v$ ?7 L, P
str = str & " , " & 内容(i, j)1 [3 S; T8 T+ |+ A) V/ @, q
End If
! l9 O& a2 ?" ` Next+ z6 Y9 v x, y4 w0 A8 O* k
List1.AddItem str
2 n, {8 m \' _9 R+ N. D Next( c- k) p! s' X8 Z9 ^! Q) X
: {8 @" u$ g; L4 J9 X4 I
End If
6 l2 K/ H5 B2 T3 L
* Y1 {0 A3 Q6 d K( G8 y* M, k! e( |1 S
End Sub
9 E0 Q& Z; N3 W5 w6 x1 Z! @( H& I6 w7 m. Z& y
Public Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)( ^; U1 G. K8 F/ s( J
On Error Resume Next
$ I% P U% k- y7 u Dim i As Long/ X7 V# T/ } a& B: J/ P3 B$ q
i = 0
3 h# T% f- K7 L& w) d# @* U/ b- ? E6 N; }: Z8 D
conn.Open cnn '连接数据库
_ d4 z( E# Y. w
0 ^. p. ~- ~" P2 L0 C0 A2 ?'sql = "select * from test"
4 g) G: ?, v8 s5 J( W3 Y. t& T" a: }; M0 }
rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集! w; l D" m2 J) j+ \
5 U7 f- N' ~* }4 l! b ?6 \$ g5 G% q* e If rs_maxcut.EOF = False Then
) J& Y6 J( p. y
0 n& t9 B) V" }( Z! _ Do While rs_maxcut.EOF = False
) ]; ]$ V R) S; b9 V! z* ~ i = i + 15 x! X; O4 y! R- v0 Y
. C1 O1 l3 v P+ ^" r
'不要去修改 第一行 或者 第一列的内容 因为他们属于标题
7 h5 o8 D O0 I- y
- p5 B4 K' e7 t: \$ I0 f+ U9 [ If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列# W0 o5 x7 n1 W9 h. p! g0 R1 \/ c
5 a$ d0 A* ~: D1 u
If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列: |6 }; x; V8 d; O7 Q% j
: z8 p" I5 D0 K9 A8 _
rs_maxcut.MoveNext
" ^8 G0 ^6 {1 q5 W# L/ u
" e3 z. g3 [5 v; B, q' a- @& J Loop3 O: @- t# P4 ]; V: ^2 M
! m9 j" F1 v/ ^& a. z# q rs_maxcut.Update$ Q9 J( y- s$ T2 i& w: @- m( x
rs_maxcut.Close! z: x4 F/ V7 V5 |7 `( k* g- v; x5 @
8 ^( C( j1 f5 ^+ Y* I( {6 x# d9 `/ v End If e- C+ h+ N Z6 R8 o
6 u1 U4 I% S1 Y0 w& L
End Sub
# j+ I9 y7 F" [5 K6 z. P. w) b+ U* h( p* b8 w6 ^
8 F8 N5 k+ q2 I/ U* }/ q4 ^+ _
& d( K+ k$ n5 g1 W6 x
( h; }/ k5 Y) ]* B8 d |
|