|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
c# c++ vb 是可以互相调用的
. x- b, h$ A s' n0 Z0 w
; r1 z9 Q- M, b1 e0 T o1 m$ Ovb操作access数据库 的方法! @, u, X7 M- t0 I
$ m9 }* `: x3 H* V, x. l; J) M首先要安装 Office2003sp2 # t& N+ i! P g. O! o
- U, n3 ?" J0 e" M0 d2 q. e列子:读写数据库(.mdb)
9 C- J3 a) _: V
: Z7 T: ^6 e4 j; s1.创建 mdb$ e% p8 I' |2 \& k7 Z6 W" M# A
开始->所有程序->Office2003->Access 2003 新建一个空数据库 保存位置C:\report.mdb
3 R, k- ^$ a( _% U6 U3 W创建一个表格 并重新命名为test (操作和Excel类似)
+ D9 L$ n3 B/ b& m
3 T g% |7 [, H1 M注意 表格名称 和源代码要对应
: O( v- P @7 Z
0 C4 Z/ T1 d4 Y9 k% b6 b0 A9 ?+ G' [ f# g+ G9 A5 p
2.注册数据源(代码中已经注册)和写代码3 L3 p' R& S: f0 l1 x
3 j+ z4 j' L7 l- ~' U! p" A3 e
3 I \" K% e: D1 ?# I) Y. S7 a在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
# x+ ]9 J2 l: a! u! O我们必须点击菜单中的【工程】-【部件】,
" Y, A$ m; F& u- k在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和" i( k& s/ _, X4 M! v8 U
“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,
0 e0 S: U$ A% E* c8 D9 d最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
; A( ^1 i5 I3 E3 y/ ]: J7 M% R# n% q7 @# a
/ k- o0 X: Q. H; k- @ x* z
添加4个文本控件 Text1 和 Text2 和 Text3 和 Text4 8 o4 s& G+ I7 ^8 m \6 S4 u6 B8 d
添加一个按钮 ID修改成 “保存”
$ x/ j% T0 T' ]+ |$ [添加一个 List1
" \0 m2 U/ x" i8 e, w* P2 }( U# [$ O8 w9 V% M
代码如下* g! R9 p# @, o7 w9 w: O) ]/ L
4 y! c0 D2 f- f* Z0 S3 [
. @& z' G( P$ n) a2 J: VPublic conn As New ADODB.Connection '标记连接对象- |5 f5 o/ X% x3 d5 ?$ _6 V
Dim sql As String& m0 F$ [* M4 S
Dim rs_maxcut As New ADODB.Recordset
/ H8 |3 e9 J# G0 q# r! CDim str As String6 c0 t/ `7 H! e# M' \* Q0 k9 \
Dim aa As Double, bb As Double" i# f$ L! r' W; {0 ?# X5 X
Dim mbd As String v( v2 M. @ v. A. g+ [1 R
Dim 总页数 As Integer, 行数 As Integer, 列数 As Integer, M2 k1 h$ ~8 V- F
Dim 内容(999, 999) As Double
% V/ n! t: _( D! D
) R8 P* R5 Y( v0 H k6 X( ]Public Function cnn() As String
X* X; B8 D% B8 d+ d1 k3 n1 e cnn = " rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & " ersist Security Info=True;Jet OLEDB atabase Password=123"
2 u; G& h& Q6 g% xEnd Function
0 g; @4 w. k( m, R% E/ b9 E F) _' y; r
Private Sub 保存_Click(); R+ k. O3 a5 j& l
0 h4 S9 Y9 b1 k* ~6 u
writeDatabase
3 ]$ Y$ ^5 ^8 y! X5 t: t. I End
: C! o+ z, Z8 o# l' EEnd Sub; D2 s# F1 }9 `- f4 J4 j
5 t- z: i) }9 P; c
Private Sub Form_Load(). T3 F9 j& {$ _% ]3 e$ Q
3 j- h8 K. u' I/ [9 K r
mbd = "D:\UG_OPEN\ini\数据库.mdb". w& E" P v7 A/ j$ j: U$ W8 S4 Z
9 m/ S/ Z2 w! }# J5 o
conn.Open cnn '连接数据库
$ F7 G, n9 c* F6 d% w9 \- V$ k readdatabase' Y/ Y. Y0 z0 U8 M% S( l# W
Me.Text1.Text = "行数" & 行数( [' N5 g1 `: b# X
Me.Text2.Text = "列数" & 列数
0 c+ ]7 D" w( N# e% A% }+ N1 KMe.Text3.Text = aa
1 x' ]5 b) x+ Y7 |Me.Text4.Text = bb
5 e+ L% F5 j3 a) ^- N, bEnd Sub# a% P3 e& x! {8 f$ L: D* C
! e3 G* ?% g% C$ n) M) O/ R# ]Public Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)
4 i+ @! D. m/ ^1 H' U Dim i As Long
& F+ U9 @9 l+ K7 y5 G n% u1 K sql = "select * from test"' j8 U% j+ r, S
rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集' a/ d( P3 l$ G# K" r9 F6 V
, ]6 ]" d, x* g
& y% W4 P' m% z
总页数 = rs_maxcut.PageCount '页大小rs_maxcut.PageSize
! {3 p0 L0 g! z- B: D" d行数 = rs_maxcut.RecordCount '行数 (排除标题)8 W' t, U5 j& F$ L5 Q
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)
$ d+ f4 k0 w ^
( n( _/ ?! S) u If rs_maxcut.EOF = False Then
& e8 m$ {% B, O" H7 N% j i = 0
$ c3 Y: L( n( ?8 A6 z, l& O Do While rs_maxcut.EOF = False
9 V3 ?% S; \1 X: L6 G2 U i = i + 1
: H% P' u# [/ M3 {
2 {4 h) L. i8 H) P ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标
3 C: K, ]3 j5 A+ _9 @, U! X# i4 z- O a. G, J/ J) |
'第一行 或者 第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的% V; Y* Q7 @) h" E! P
9 G2 r) d- I4 J6 s
& ] {/ d0 C# a% t If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
4 T) U4 p7 y7 {! j) Q, Y If i = 2 Then bb = rs_maxcut.Fields(1).Value '除去标题后的,第1行第2列, K1 ^" D( X$ g ]
@, h* q& n3 A q, m# F
'读所有内容到数组
# Z# N+ l, y- X* X; {% i) ?5 @- W For j = 1 To 列数
6 `; r; p5 Y& J( z1 L0 b! @ 内容(i, j) = rs_maxcut.Fields(j).Value3 k: {4 Z% ]1 ]+ v
Next8 r9 T; w; i( p8 V/ Y
# |- W ~+ w3 m rs_maxcut.MoveNext '下一行
7 H9 w" ^% R4 E& q; f# z Loop
4 |! s) W3 v2 ]1 q' A; b* L5 w& ^# I rs_maxcut.Close '关闭+ D* V' ?) X* a( [4 N
& O6 T" A, Z5 q+ I( r1 a. i- L7 q
5 R! ^' @9 ^1 c5 P3 d* }. _ List1.Clear$ H3 h4 F9 s- `9 o! M
For i = 1 To 行数
, ?9 }$ x8 g/ J& P/ b For j = 1 To 列数5 J+ T0 a) g$ K, c2 m C: ]) `# f7 M
If j = 1 Then
7 q8 [1 r8 C: S4 k str = 内容(i, j)( V' h% s1 V! j) Z0 P0 G% \
Else
! z8 [, u' l5 X. S) M) r str = str & " , " & 内容(i, j)
) b4 a$ Q" ` \0 q2 c* P( I End If6 Y5 r6 X0 F; n6 A; C5 p! X
Next: p/ G! g: i1 O( \3 e' H
List1.AddItem str! P% T2 t& D+ ~) g L8 ^/ B
Next1 T8 E z5 Q6 O4 o6 L
. r @+ H; ~+ K& u) i
End If
( B" Q. C+ u+ [/ S
- v1 Q/ J* { @: Z+ E
/ F" J5 s/ {1 z5 G* Q0 u; `End Sub/ E1 r8 z$ P2 a' p/ P' t
3 b, {: |4 H. [" K# FPublic Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)
5 D0 L& B2 `! D* C, w$ |/ j On Error Resume Next
4 K5 g4 [7 J. q0 B) V# `* o Dim i As Long& q% B( M3 [# V! l' f' Y
i = 0# J% c* t( g |8 N
9 h h7 `. v4 u5 s1 k- Gconn.Open cnn '连接数据库2 g9 {% E9 `: ^5 w( c+ E* U, V4 A( p
1 s" C, N3 V. Z. K/ P0 ]
'sql = "select * from test"
) T- _6 ?) G4 t6 b3 e( J" C7 m2 W7 S' d: l( @
rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集
: S9 I% [( G: p( y" u$ o" e4 ?9 E6 c
If rs_maxcut.EOF = False Then
$ k' g8 x) c* b5 |! A+ O
- h7 f9 ]+ p$ q/ W: M! `6 h Do While rs_maxcut.EOF = False. a# e* D4 D; V! w/ z1 |, p. |
i = i + 1
: A% ]% i" Z$ F2 I" J% t8 c0 p: B1 M' y$ D2 O- F. c$ g' F# n* d6 N
'不要去修改 第一行 或者 第一列的内容 因为他们属于标题
- ?$ p) ?& ~6 l! y. ?& Z5 C m: w: M0 w4 H( N$ j
If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列2 w0 \, T% t5 V, G& p* C
% D2 G( @3 E2 ^ P1 j
If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列
3 [% O( M m+ m0 D# |+ |4 N+ v4 s C8 X- w T
rs_maxcut.MoveNext
# _ p- d) ?" x4 G3 S* [
- u; E* d4 z' [; l c Loop! z' x: R) c8 Y, \
5 Q7 \% R% g1 b- T6 S; y rs_maxcut.Update) Y; u3 B' W C2 z3 f+ d
rs_maxcut.Close5 i# s, `& P* H' ~ V$ q% I
) i* O7 G& v# d! h& ^
End If
& c9 a6 \ A; ~- x- v% X7 @5 Q1 j# i* L4 O2 r. ]6 A2 H9 D; B3 q
End Sub! Z' g- _( ?, F, C( I6 [" t; t
! u" M% W* E6 z
# ^; _8 |+ F0 g; y8 G7 N
2 a8 E& p/ n$ ^! l+ \
, g8 l. a1 p& t7 o1 U4 r- R |
|