|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
c# c++ vb 是可以互相调用的. i3 E9 j9 S9 w# |5 a; g
: W: p+ b: p# S$ s& O3 w
vb操作access数据库 的方法
1 G; c& d. N& ^4 S5 |: @# k* I
- [8 x! q7 f9 t/ W首先要安装 Office2003sp2
' {) m0 g0 R4 U) P
2 f. C$ b/ P% \8 O K列子:读写数据库(.mdb)
) c( ?6 b( \5 j4 B! o: {9 o: z9 J5 H& r! R
1.创建 mdb
- i! W& }3 r' ~ Z; p: g# g! f& m* m开始->所有程序->Office2003->Access 2003 新建一个空数据库 保存位置C:\report.mdb & @* Z; H' f% M" ?
创建一个表格 并重新命名为test (操作和Excel类似)
3 B3 D" _/ |, v) M( x- z/ }8 B3 O
注意 表格名称 和源代码要对应
& B5 I0 L; _: y2 [- l2 }' y% f. W$ U$ _; N4 \, Q* `6 b
# G; c; O6 `1 Q' a6 V$ W2.注册数据源(代码中已经注册)和写代码8 _; [- F: T0 M* A% V2 {
l# ^, i# ]; k/ x- r4 E% q) [& F! b
在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
: o2 y2 {( |( ^! H0 ?, q$ m/ g我们必须点击菜单中的【工程】-【部件】,0 o7 \# {" l# P" V' b* L) D
在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和
* ^" w$ C* L+ H$ n8 I) B7 n5 v“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”, v! j e' [% \$ h
最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
5 c+ c6 J, Y/ o( N+ ]
' p1 Q# o9 |# B$ f. P
7 {' ~' M) a4 L. e+ ?; U8 M X7 Y5 I6 _添加4个文本控件 Text1 和 Text2 和 Text3 和 Text4
) G/ o% Q H. L7 s3 n9 O8 N添加一个按钮 ID修改成 “保存”
) z" ] r: g2 j( v% k添加一个 List1" M+ D" o0 F0 N# g+ X
( D8 I: q! f* n) }
代码如下
6 W+ N: ]) e+ v8 _6 l" `9 u1 B% J' {# e+ b
* N8 {+ X9 s' X( J' Y+ z+ F% y) t/ qPublic conn As New ADODB.Connection '标记连接对象9 g% Q% c% q) g, q9 Z5 E6 W
Dim sql As String8 ?* H* u- }* x: E& A* r4 m v2 B( f
Dim rs_maxcut As New ADODB.Recordset1 o6 P0 e1 h# U
Dim str As String
6 Q2 t4 D- B; J3 UDim aa As Double, bb As Double
2 G1 f1 F& y9 O( fDim mbd As String
2 e( N; n; Y# ~: vDim 总页数 As Integer, 行数 As Integer, 列数 As Integer
0 j: `' b4 H9 p3 E: HDim 内容(999, 999) As Double
a+ W6 W) e! o; i/ J k I0 S# g% ?: l# u X. K% n& m
Public Function cnn() As String
$ x- K) P6 e1 _ cnn = " rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & " ersist Security Info=True;Jet OLEDB atabase Password=123"1 [4 @) w& @( k
End Function
: X1 ]# E8 R' u4 [$ d" V
/ J3 I7 O+ Y- `Private Sub 保存_Click()
8 R( Z+ G" c$ \5 L2 k/ R) |7 \, \) j+ F, D- R
writeDatabase
* D: C: _, @$ f End- f" C$ p7 ~! R+ y
End Sub$ K6 N; F) g/ {! w2 o! e2 e% `
8 I+ a' @0 x" [% t. B4 f7 N" X
Private Sub Form_Load()/ Z" M; ~0 c; P$ ]- E9 u X
+ L1 K2 k* p' G2 x
mbd = "D:\UG_OPEN\ini\数据库.mdb"+ V8 Z3 O* t4 A0 [6 s* o0 Y# Z
9 u; A- b" l( k' O
conn.Open cnn '连接数据库- ^9 _/ E K# y0 s
readdatabase
$ S* a- }3 Y( u( Y; t4 } Me.Text1.Text = "行数" & 行数
2 }/ v, M( d: J- i7 |) C, f Me.Text2.Text = "列数" & 列数2 B" ^) Q- o* m, P2 Q* C) r
Me.Text3.Text = aa. S5 s8 G' M+ Q- m
Me.Text4.Text = bb
$ [5 c* o5 k% P) n H- b' U5 `End Sub f1 v% w% x7 t6 C& ?5 Q) D
3 t0 l: q! G0 _) M; ]1 J0 J' z1 cPublic Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)" ^& |$ K* y% N5 p
Dim i As Long
/ J4 I: C! m% ^4 R; @ sql = "select * from test"
2 c7 E9 E, M Y. j, A rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集6 {. }9 o) ]5 P" r
+ A" u- y" a7 }9 X: n( Z
( C1 j7 g+ i# w/ ]
总页数 = rs_maxcut.PageCount '页大小rs_maxcut.PageSize
% v) ]/ S# ?9 g4 }行数 = rs_maxcut.RecordCount '行数 (排除标题)8 {# k1 i( f/ n! t
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)7 A% l- I( _" }' x. ~
. V! s6 a; \9 Y! d/ l4 F If rs_maxcut.EOF = False Then
- f0 ^3 S" C2 U i = 0
2 _9 E9 j& E* x. J Do While rs_maxcut.EOF = False& g7 N l& t) |, Q3 g( t3 J
i = i + 1
7 u1 J( Z" R# V4 c. r4 S% h. M, x; h
' P" i. z( B; `$ m5 a! p1 [ ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标
! K: f1 Q+ l0 V8 T; A1 @ V" v! s; p$ w* C, l) Z
'第一行 或者 第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的
' Y9 q6 _9 F( H# P( T& v9 H4 Y) _( y$ g- a, R7 S3 B; G$ f
: E' k8 |: J- C, Q If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列3 ^2 t. U4 @, o+ U5 Z: H3 e
If i = 2 Then bb = rs_maxcut.Fields(1).Value '除去标题后的,第1行第2列
! w7 z' l. ^2 y* z, z! c' h* q' ?# ?; x- w
'读所有内容到数组 m7 y1 S7 e# ~" |7 N0 e
For j = 1 To 列数; O" @# ~6 K c9 C" ?
内容(i, j) = rs_maxcut.Fields(j).Value
1 C' o8 c! c1 Q9 J- H Next# T4 G0 n2 f2 u) E. y
M" P( E. i" d2 E4 B9 z rs_maxcut.MoveNext '下一行
! y8 X: x- e# Z! S4 Z Loop
0 P6 r2 ]% E) O0 s& _ rs_maxcut.Close '关闭
+ P% w( y' E1 ?+ O! W/ V* O/ h) K+ T* o
; {8 a) W; @2 t! \7 A3 F
List1.Clear; J. d) H2 U! v) P" b: N
For i = 1 To 行数
+ U3 Q7 Y/ Y- C' H For j = 1 To 列数
* z/ s" q: l" ]# p2 B+ c If j = 1 Then
; L9 ^' d9 X; f" ?1 M# l str = 内容(i, j)$ J$ M5 I! Z) @) g2 I
Else
: |5 |; Q: e5 d$ F9 O+ F str = str & " , " & 内容(i, j)
2 x# w; a' O( I: L4 r# a End If# j8 G, m- j2 M7 y6 B7 Q
Next
D7 n! @9 f/ {& g! G7 O) t" g List1.AddItem str
/ b% Q3 J" R8 j Next4 H. X ^3 v& K7 r: d+ [8 F9 @* J
/ F, w8 D4 N Z3 s- h0 }8 M0 j8 N
End If$ }* e2 n$ ?) ~ |0 w
5 H3 w& U+ g6 O
6 r& |0 [2 P" C" x! N+ EEnd Sub) r W: a5 y( y( K; n- T; R# Z
0 o. G& F, S( F4 yPublic Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)/ i) s3 P. o9 M7 E W8 Y% `
On Error Resume Next
8 u" t! p$ R( r3 b0 | Dim i As Long, ~$ V3 @( @4 j9 @. `
i = 08 l; W$ U& l8 Z% I/ {4 C" V4 D
, j- f l: O8 G( M- |- L Bconn.Open cnn '连接数据库( F1 [- k* |. K5 a
0 a1 }5 A e+ Y6 a( z N( c
'sql = "select * from test"" N" \3 t# k; ?+ C& p- W
9 m) n9 j0 O+ |7 h3 o
rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集
2 m6 J9 x! ]- Y g7 y% }1 R" n# M3 i1 R5 U" P
If rs_maxcut.EOF = False Then
: s/ a! b; E7 D. C6 ^; i; S3 v9 y0 N2 V4 H( @
Do While rs_maxcut.EOF = False
/ z4 Q( r6 I7 D0 G, J" P i = i + 1
5 h* i$ |2 i; U8 P4 }2 E0 P0 p) f3 \9 D% R
'不要去修改 第一行 或者 第一列的内容 因为他们属于标题
3 @8 z3 K5 V% b, V+ ^' ^4 P1 y* E; E2 x) B
If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列
0 \0 L/ b' L/ N! y1 R+ ~- |/ P4 C3 m( `. M9 H1 T$ C. R; |# n
If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列
5 k+ M- r$ Y$ F) j' r/ l
8 ~% R: v+ Q A y rs_maxcut.MoveNext
C1 o% f0 j6 o* D. g$ X4 n% h( \; N) o" s
Loop
$ V2 k {- I2 t$ {' Y, O* k3 g' R1 Y; X4 g; ~* j6 j
rs_maxcut.Update
4 g4 S1 o R# s7 U rs_maxcut.Close- T. }6 o# M R& R1 w
, `1 H3 A% `0 k! S: W) F
End If
2 b6 Y2 n/ h. F1 U" K, z9 `" p) h2 r( h# W
End Sub
2 g1 T9 s9 a' o" K3 {' i" Z3 w+ r- v3 Z
; A- H( r+ u4 U' C. ]+ p6 {" o
+ S, b, r$ J9 U- {" Z' B
: G! k' \$ p$ I |
|