|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
c# c++ vb 是可以互相调用的
c9 C# O8 |' H. r j2 P
8 K2 A) |* c1 b/ n$ M Hvb操作access数据库 的方法
0 n* \/ Z. y, H- U& {4 Y2 O. g! f, _
首先要安装 Office2003sp2
) l! r$ [% {! c- X. N6 g* x1 o
列子:读写数据库(.mdb)3 R# [( ?, f! z% @, T4 z7 c
* A1 q7 n* s: x1.创建 mdb
3 a3 d; w% E5 G' @1 z开始->所有程序->Office2003->Access 2003 新建一个空数据库 保存位置C:\report.mdb * W$ f# k# u2 O @+ q# [
创建一个表格 并重新命名为test (操作和Excel类似)
o! {9 f; q+ H! ~5 A
2 d% F# o6 L& E6 R; _注意 表格名称 和源代码要对应
$ k1 K! k! J. Q. o: c7 i! u9 s7 X# O0 B% k' I
( i0 ^3 G* Q7 E4 w7 H+ u3 U& `2.注册数据源(代码中已经注册)和写代码
C% \% p/ B) x& T) L& S: w% e3 }6 z* m
, a) H! x. P* Y1 \' w* j- i) ~
在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
! A/ U; n1 P9 ~( b) D我们必须点击菜单中的【工程】-【部件】," ?; P8 A6 u9 R4 o: [8 m9 I2 P! a4 n
在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和: t3 N" J& c6 r$ u# M
“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,* S A" u4 I6 K: E! N
最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
6 W6 O% J5 o* u) t7 X% ?2 D( |
' B2 |- v8 Z8 @: o* ?% d! N. G1 C- G. v b. a5 [
添加4个文本控件 Text1 和 Text2 和 Text3 和 Text4
, N: \4 q) O7 W5 v% W$ \添加一个按钮 ID修改成 “保存”
8 [7 H: X# D, l2 [添加一个 List1
) r* l, q$ [0 N4 s/ E' V4 l2 E( B
代码如下. `3 E% m8 x, H7 ]+ F& I2 \( a, B
5 g' o, K. t* C8 a7 F! Y/ f+ ^+ i. N" Y) c4 ~
Public conn As New ADODB.Connection '标记连接对象2 {! Q' b5 C( J8 U: Z& J; J2 W5 K
Dim sql As String
- L/ m& B' m- ` ~( \Dim rs_maxcut As New ADODB.Recordset. g/ }7 s( g9 p0 n
Dim str As String7 ]' N+ G% q$ m# o/ Y
Dim aa As Double, bb As Double4 N* Z3 X( ]# A# ?4 `5 C+ @
Dim mbd As String$ {# R( v% b) c2 k& T: N( b( Q' M
Dim 总页数 As Integer, 行数 As Integer, 列数 As Integer7 N, s! V; V& s4 ~ j. d
Dim 内容(999, 999) As Double1 w% i' [; G" m6 B- C A" _
% |0 l7 M: i5 C, m& IPublic Function cnn() As String, T3 r: X- l- P
cnn = " rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & " ersist Security Info=True;Jet OLEDB atabase Password=123"' t7 k! j: E' V+ Q+ a8 d& ?
End Function
" ~/ \$ F$ |. j, v; x! L) ?" J! r; L% F+ v4 t5 L: g5 M2 z# j
Private Sub 保存_Click()
" s/ w0 j* I3 p) _6 \7 V! Y i1 L' H( G$ y
writeDatabase
+ n4 O6 K& i8 x- y End
" k- W! b9 u, p, ?; QEnd Sub
$ W9 ~( r: K5 z8 V0 p+ Z! e( ]1 _1 S+ `' B" y4 p0 n: d
Private Sub Form_Load()( F8 `, x: d z5 _8 P
?9 A5 j3 f9 A+ z1 a* s. ^1 [ mbd = "D:\UG_OPEN\ini\数据库.mdb"
d, J8 i. v" S/ e h/ S7 E( K
+ j+ O$ o$ A# M7 X conn.Open cnn '连接数据库
0 ~& D9 J" t _* N- t5 ` readdatabase0 n( D; p- i& C6 K- Z4 O) Z
Me.Text1.Text = "行数" & 行数
. v( ]9 j! g1 G! [ i Me.Text2.Text = "列数" & 列数
# k- I' i: [: ?- `5 NMe.Text3.Text = aa% U' J* ?+ W9 V Y8 T2 j" y1 }8 r
Me.Text4.Text = bb& l9 A, F+ I' o. z3 b Y5 C
End Sub9 j) |/ ~) _0 Y, b n# v
' W e- }, o* }" s# @$ U
Public Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法) [% g. `$ `& B4 X9 x# F
Dim i As Long/ n X- i9 [+ o# P A
sql = "select * from test"2 a, i2 b# {, P1 |' Y& c
rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集
8 _3 l6 x; y9 f5 `3 Q) K u' W5 N6 i# \5 h$ `7 P
/ t V2 S0 j$ J1 |
总页数 = rs_maxcut.PageCount '页大小rs_maxcut.PageSize
9 n6 Y( G1 Q. v, [2 x# T8 ]行数 = rs_maxcut.RecordCount '行数 (排除标题)% y9 ]; ^. T- {4 H$ V8 {
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)
3 q0 d& J4 S5 T) P
( G5 I% u+ R5 |7 j- b2 n If rs_maxcut.EOF = False Then! I0 b8 n2 F$ ^' [) x
i = 08 I. V& C2 M8 S7 }2 M+ L
Do While rs_maxcut.EOF = False
3 c' R4 U& P! M6 ^$ c' B i = i + 16 X( s& [# z1 H {
. ], W5 K* [$ r4 J ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标- m- c* f X% U' M
6 w: s; x P2 f% N
'第一行 或者 第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的. g5 K& Z& p: [4 e, E
3 _/ f T) v# V7 I+ u+ w& e( c
* s7 I6 M) B4 ^3 a4 R d% [! g: E
If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
; _- V- m* d7 N' |6 c! F! S9 S& ^ If i = 2 Then bb = rs_maxcut.Fields(1).Value '除去标题后的,第1行第2列( ]# P" [5 L# f7 @. |9 m- ~/ h
; f4 d: n3 Y. q! F' f0 _ '读所有内容到数组8 W' r) @$ h, j
For j = 1 To 列数1 q1 o2 H8 Y! q" q- y0 P
内容(i, j) = rs_maxcut.Fields(j).Value$ X0 z3 B8 @7 X: o7 |9 A
Next
) Z+ y3 T9 D1 T( y! a( |/ n! v+ S, J
rs_maxcut.MoveNext '下一行) y$ C- k, w. R8 i! `
Loop
1 o0 W& r3 X% L& T H rs_maxcut.Close '关闭
% s; p: P8 I( {, `! {6 Q7 O+ b, Q( E+ D
8 O1 e# R# B$ S5 P, H: z7 j0 h5 i& e
List1.Clear
0 z+ a, |$ {0 _8 ]: L For i = 1 To 行数9 j$ i$ H9 L6 T1 k/ L
For j = 1 To 列数( Q4 X; L2 d" J9 n6 f, ^
If j = 1 Then
2 U, j+ x& v( B# g5 ?) K% W3 k str = 内容(i, j)
. I/ ^$ O5 N( s/ C! f- i Else
# m3 ^, f9 p) }5 }+ _ str = str & " , " & 内容(i, j)
9 Q0 O9 ]( e4 H5 b1 J End If9 Y6 V5 [7 m0 I) v% Z: y
Next6 t M6 Z! S, e/ f5 E. `5 C& Q6 ~
List1.AddItem str y; \* i9 P' ]' ]$ a
Next0 \4 _7 l9 p" ?) f2 B2 x# i
9 u+ C1 e0 j2 ~; \. \; w- I
End If
- ?. ^ M4 H' v ?( I& a, a' H- x
2 S5 z4 M7 p% D: j% _4 b0 q# b" s& U- h1 s' ^: H0 W. n: }, j# x
End Sub' t) n; P( M1 Z6 _) E$ j$ c% V: `
7 Y; }* G2 u- h. h, Z2 \
Public Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)# N7 I9 ^0 M- }5 R
On Error Resume Next; U% n/ n0 P+ d5 T8 y9 |
Dim i As Long
. {# v- U: u" _6 {& B# t i = 0
7 L3 l" [/ }; l8 N6 ?$ a7 ?) D
8 Y! c% r ~) Iconn.Open cnn '连接数据库
% J% H i0 q2 }' V; J7 B
# C' K |+ d$ a3 G'sql = "select * from test"
1 i2 q' V3 O- Y( U$ l- R' t8 n' r7 J0 r5 k# B
rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集* k) q4 q" H2 i0 Q" o" X5 W
0 v* \- O4 j* S0 [
If rs_maxcut.EOF = False Then
9 ~! J0 i- R! W' I2 ?! D) h( y1 O) W/ e4 C( p
Do While rs_maxcut.EOF = False# ^: p# I1 t1 G1 x1 R4 ]1 Y
i = i + 1
) E( E" o0 G2 c% b( c5 p* [: Q+ m3 u6 @6 w0 G7 x, @
'不要去修改 第一行 或者 第一列的内容 因为他们属于标题
3 t" h: G6 p# }9 B4 R$ D- a/ ]+ O' W1 q
If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列) o- ^ @& f7 o# s* h/ W$ y+ @! m
$ @! r9 A1 i' G) y) y
If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列+ m, C+ F' ?8 C, o4 H* h% h- ?2 b
/ S3 f/ p9 R$ a/ E
rs_maxcut.MoveNext% p% Z5 S/ p. L: u# b& q4 L% Z
9 ]$ @0 _; G* ?7 s! Y Loop
( H1 R9 J8 A0 Y' v M# t4 {3 ^" p# s3 D4 I4 ]) g9 Y- w- a
rs_maxcut.Update' q9 o7 A. o/ j+ C2 k" ?5 z% h- h
rs_maxcut.Close
" b4 ^ ?2 b) g! c2 b: n: n% `; G# x9 t- @3 l2 r
End If+ E! b6 ]1 u" t1 d) C
+ j. o5 ?+ n0 W* }- b9 a- ?1 eEnd Sub7 u$ Q3 t* M+ D+ M: p
! X) O2 f$ b9 O
0 f# M) C ?% J9 Z- v* {9 D6 U' h& A U( q+ ]
1 K* C6 u2 R" T
|
|