|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
c# c++ vb 是可以互相调用的
" t1 z1 v& t$ @ i# x! G. O
$ m2 p! f2 y) b, d1 e6 C' evb操作access数据库 的方法; E4 e' S/ M; X8 L
6 U9 e* ~5 ~# H首先要安装 Office2003sp2 + e, D) t# n, W7 |: F$ P8 Y7 H
$ f' l- l; f I& b# E' l列子:读写数据库(.mdb)
- W% J' {5 S3 D) c! q2 N# Z3 U' z' l( j2 ?& x+ r2 b
1.创建 mdb5 T, B% T- e- X0 }1 C& z( T
开始->所有程序->Office2003->Access 2003 新建一个空数据库 保存位置C:\report.mdb
, P$ n' j/ @$ M6 t# x" Y0 f4 L创建一个表格 并重新命名为test (操作和Excel类似)
1 J0 {0 Y" ], h( P
# Y& \+ l U. q) }6 c X O注意 表格名称 和源代码要对应$ s3 o8 p2 b# D, v
# L% [5 t1 Q1 N/ x6 t
& I4 b1 @9 z; x4 g0 e! _- s& C2.注册数据源(代码中已经注册)和写代码4 r1 g6 z4 H8 C: X
; _- F" x. _7 P) o; k+ N
$ ~5 Q% N! b) Q# X' a: s6 p9 B, Z5 `在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,) `+ @5 c+ J% {- j: f
我们必须点击菜单中的【工程】-【部件】,3 U3 o+ m- Y4 ]! Z' D$ R7 n" ]
在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和
% e# E- c5 U( m# Q; [* R0 d0 | M$ z“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,* c- d; `- R- h- ^( F6 n! z5 E
最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
! g" z l8 Z7 _6 _2 p/ G- \6 Z7 i. i' m( j @) S3 U
3 x6 l+ M0 x2 ~% ~/ j. N
添加4个文本控件 Text1 和 Text2 和 Text3 和 Text4 1 A4 @3 I, e2 q9 v* a2 D
添加一个按钮 ID修改成 “保存”
% R# b/ l) ^! }9 y添加一个 List10 e. h8 R) S5 `2 A8 c% h
/ M& ]& R$ V9 x0 M4 P+ X% E4 U
代码如下
, A% s( [5 {2 E" I
9 T) {0 G, ?6 w
: `' n3 t, e5 q4 iPublic conn As New ADODB.Connection '标记连接对象, R( n: P$ n/ ^0 O8 j D
Dim sql As String
: g6 {* D* u* N J2 h PDim rs_maxcut As New ADODB.Recordset, w& a4 K7 K7 H8 T$ i$ [, J
Dim str As String
0 o( {) E: P& I* w3 jDim aa As Double, bb As Double
$ r# ?( W' U+ K+ vDim mbd As String
, d% F4 X, V/ E! E! ~/ F: ]9 _/ EDim 总页数 As Integer, 行数 As Integer, 列数 As Integer
5 n. j- w- ]% ^Dim 内容(999, 999) As Double& B4 q, g# {5 m5 I
9 P0 [7 n9 E; r4 @Public Function cnn() As String4 o2 d7 `+ U9 g9 t
cnn = " rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & " ersist Security Info=True;Jet OLEDB atabase Password=123"0 o* F8 F& N/ w3 V8 P; }
End Function
2 [$ ~' s4 q& u$ V' K4 t* Y
& }& j- V7 w J8 n, f7 O6 kPrivate Sub 保存_Click()
% g6 s2 _, ^6 a2 A7 m8 h
6 K9 n! j, r; O, A& ? writeDatabase$ {+ _( {/ z0 } z
End0 d1 X% p0 z8 l9 ^
End Sub
$ w% C$ Y# \, `' L
, _ s6 _, T& S3 T" j; W' {) EPrivate Sub Form_Load()0 n" A" Z, z$ j+ L+ F E4 T3 l0 Q
* {# g' Q+ ^# b/ D5 }' e1 F mbd = "D:\UG_OPEN\ini\数据库.mdb"9 S, ~1 O4 k4 C& V
: I- [& P- w2 a: W: H! c
conn.Open cnn '连接数据库, b" I) A `" H$ @
readdatabase9 U/ q: s; y6 n: D7 W
Me.Text1.Text = "行数" & 行数) g! ]# ^; r: o' o5 z6 c( d; K# ]
Me.Text2.Text = "列数" & 列数
' E+ p8 \1 r9 I5 `, XMe.Text3.Text = aa) n* H+ E5 W6 ~ u' D0 j: F" T
Me.Text4.Text = bb* L1 u2 ]' D8 o& `) h4 K5 T
End Sub
d0 t' W4 H7 K# n) z
! L% b% W: |8 n4 w; e& tPublic Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)# J$ N1 b: Y& p" Z* Z4 n0 }4 I4 Z8 N
Dim i As Long! d( D2 U( z. h( u Q7 R
sql = "select * from test"
+ O% Y1 z o5 V9 y# C) }% v. B rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集
% z* ~* o; L0 Y, B2 {% S
+ H# p* O- `' E
% C' m8 \% E; d+ u3 F3 W8 A总页数 = rs_maxcut.PageCount '页大小rs_maxcut.PageSize5 j4 W6 H3 J! @. s' h- w; F
行数 = rs_maxcut.RecordCount '行数 (排除标题)6 J' o: X" }8 l6 Q* v3 s4 M4 [5 w
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)
. A. C% E9 T1 F5 c+ k5 b) R3 {2 }/ h/ E9 o
3 ]; p5 E' y+ |) V If rs_maxcut.EOF = False Then
3 m( G# P, m: X% l) |$ ]2 c, K i = 0; \0 ~: m5 y+ }2 z; L1 T
Do While rs_maxcut.EOF = False7 m5 J* j) I; o0 Q3 N
i = i + 1
; ~$ `2 z: {: G: N! h k0 [) {: j& L: X3 D1 w, F; S
' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标% C9 C$ c# i& i. c- _4 x
; s* B: @' l+ E$ j' [0 m& N' U" r '第一行 或者 第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的
+ G4 ^. y1 u, N( e
* p& I$ W/ x( g8 n+ I: e" e+ k T3 P5 @6 |2 [/ U. [
If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列' W: s5 \% G6 s! s
If i = 2 Then bb = rs_maxcut.Fields(1).Value '除去标题后的,第1行第2列9 O8 q) D% w; I/ Z( ~
& N- j5 _! X, ~* K! g% i* r: J '读所有内容到数组8 c, ~9 L( r: ~2 o+ m
For j = 1 To 列数
0 g% [" @8 j7 X. r! x% r# o" ]8 a 内容(i, j) = rs_maxcut.Fields(j).Value4 ?$ b; N: K7 v5 q4 ^: N6 C) f
Next
7 r4 H9 L E! x2 a/ n2 U7 v$ }& P- J& \ G& `# p Q( E% w" ^# ^
rs_maxcut.MoveNext '下一行. R/ I2 ?' L9 F/ t9 w* ^( c( ?0 ?! `+ o
Loop) A) m( d& v8 B, Y3 L
rs_maxcut.Close '关闭
8 H/ E1 C: Z: t" a) C( c8 \5 m
0 g; J }. k# X4 L' J4 I) S
' L& {6 g- C5 x1 P+ j List1.Clear1 ]/ e: |: s+ }" j: X) b Z7 i
For i = 1 To 行数4 J. ^( j: \, p/ |3 I8 ]# N
For j = 1 To 列数
& r8 y' H3 U; N: x: b If j = 1 Then
* g- c7 |% r; r+ {4 [ str = 内容(i, j)
( L/ v# I& s# ^# d- U Else: W7 m" F1 ]. r: g6 q% e
str = str & " , " & 内容(i, j)
" i( f- ~3 h5 l$ P% y End If
5 ]) O& N1 T- i4 E Next! R Q0 M% S6 C' W$ D% c7 T/ K
List1.AddItem str% Y: |( v l, X; Y, d& ~: g) H
Next
# l/ ?6 j5 R7 V# s Y0 H
" D* }4 X l, Y6 A: S End If/ {1 ~7 \1 Q. _& M: E8 F
/ l6 K& v* P5 I
- U! |* [1 ` s
End Sub
# W2 g7 u" g4 f" W/ x7 [6 G
# E& S2 J! S" [( E" h" p1 zPublic Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)5 X# [4 b7 c6 K! ?# W- H2 a
On Error Resume Next
; ^: J6 c/ Y9 l0 I+ M+ ^+ e' j Dim i As Long1 x2 r6 z" b3 L) y
i = 0, B1 Q0 |% f, N9 j
H7 ?9 b6 |7 x0 [ H$ f# R
conn.Open cnn '连接数据库/ F% M6 _$ V4 p/ o* U2 B9 W
! b- J: b/ Y$ `. u$ t'sql = "select * from test"
* m* p j0 X2 H2 z F
$ m3 \& M6 M! q0 K2 X rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集
* z- I/ z5 s" ~. Z
% V$ }8 L% E @" c6 h+ A If rs_maxcut.EOF = False Then
* P2 k6 H1 x+ s8 [. b+ |' q' `; ?+ Y, H9 ] t
Do While rs_maxcut.EOF = False) ^+ b5 ?/ `; {3 D9 q
i = i + 1
' G/ p* V! t6 j+ s! T
! H7 P! F+ G* E '不要去修改 第一行 或者 第一列的内容 因为他们属于标题% r" M" ?2 \, u. ]1 T
n, T7 u; I/ @4 M% ~
If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列 j3 L5 {" ]* o+ D8 H0 ]% p
: O; n# O8 V5 I
If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列
( `9 J" D! k9 o# `5 U
( r$ Q9 f2 A8 a& f rs_maxcut.MoveNext. ?8 O, T' V+ B& d6 \2 J; R
' k2 n) F5 b4 q
Loop& y! c' S3 W7 Z( l6 w
: Y8 g( R* \7 z5 l& F
rs_maxcut.Update
9 o) K3 W: d" p/ @ rs_maxcut.Close
4 z: `5 @3 q' a8 F" [$ t1 l" X% c2 `. ^4 c& k' Z) ~
End If
# `, E5 ~8 l: S, F, [
% W) T g; a2 f% s- N3 CEnd Sub8 S5 J8 }7 a# h: _+ D0 d+ G: s
& x4 f# L; m+ [! K& M
) f: ]0 [# l2 n4 V
+ v- F% \5 `" V; |5 |& L! ?3 B% T
7 i) c. H% z/ D) {0 B7 e |
|