|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
c# c++ vb 是可以互相调用的( ] ?9 I( m' Y& u3 \& W
( @( g t/ P+ H- S2 I* ?8 z: U
vb操作access数据库 的方法2 M7 M5 G0 W" T2 V
+ F9 e/ P) i" L: e4 Y6 m% l首先要安装 Office2003sp2 ) s! i$ j+ L$ k/ D
" `( @- I0 I9 J7 }7 N
列子:读写数据库(.mdb)
0 f0 X) X1 y3 z% g
! n& \% { d; K* P1.创建 mdb9 _0 {% I8 w( h, _. |
开始->所有程序->Office2003->Access 2003 新建一个空数据库 保存位置C:\report.mdb
2 [- j# ^$ t; w* z5 R$ Q7 N创建一个表格 并重新命名为test (操作和Excel类似)0 t0 Q k! v- w% I( O
. d ^# u4 T% K: [3 \注意 表格名称 和源代码要对应- Y8 q5 v `# k. F/ U6 v1 i" A+ c
6 w* V, |0 V% [: b4 `) b( ~" W
! X* P0 a2 ~2 g; j3 P I! S2.注册数据源(代码中已经注册)和写代码
* a- W- c* f* v# I9 {$ @: F+ G9 @- W* W' X1 \) O/ `
) K; q( e9 v5 [: o+ U, A) T在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
) Q5 ^# W* o7 ~3 w6 ^0 }* m6 W我们必须点击菜单中的【工程】-【部件】,. R$ b0 N' p# ~. R" \2 ~/ i
在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和$ v; e# L0 I0 F% E- t J r0 x( U2 i
“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,
|( I" }% B$ v9 ]3 Q最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
! k' X; i5 R6 S" g, `2 L6 p4 B8 g
5 D( C8 f& W0 f
添加4个文本控件 Text1 和 Text2 和 Text3 和 Text4 ( O, @+ W7 F% d; r
添加一个按钮 ID修改成 “保存” + W/ V- s: L" b
添加一个 List18 E, Z% f; w5 z; W
4 N( w1 G4 H9 A: u
代码如下
+ _; ]) i% z" u Q9 n3 g
* j" w; K# T' w9 @& { h# d8 v5 [9 J) p7 W |7 E3 q: `/ V
Public conn As New ADODB.Connection '标记连接对象
3 Y, D: X6 `9 ~+ Q3 VDim sql As String
! c' l) F9 G7 {9 KDim rs_maxcut As New ADODB.Recordset
& L% I o+ j- s- |# E. zDim str As String
m! a. a$ z z g% E8 BDim aa As Double, bb As Double/ Y, x+ F) _7 k1 [' O
Dim mbd As String
/ ?- W( r2 Z, QDim 总页数 As Integer, 行数 As Integer, 列数 As Integer
) H) N0 T; M: s1 iDim 内容(999, 999) As Double
, `+ f, A; m0 o( j# e9 ]
( R* p2 O2 v B' \- A7 R6 D8 u3 FPublic Function cnn() As String
, M/ T! O: R$ e& n+ z4 {( ^ cnn = " rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & " ersist Security Info=True;Jet OLEDB atabase Password=123"
6 G4 ~3 r5 F- q; @End Function& V+ m% P, L4 W$ K" N4 f+ T1 y
: p# L& d5 x: E/ r3 U8 @Private Sub 保存_Click(): s7 p! O* |0 }% w/ \2 S. u
; Z1 s; ]* g$ I: J9 O" R. g* P writeDatabase
# f" O4 A+ ^2 r+ [& C2 O# m End
( L# X; {& S, C5 H. X2 J2 IEnd Sub
% @! X4 r7 _: ~% N9 ~' S8 a* s T l% ^+ R* }) E: W/ \
Private Sub Form_Load()
* |+ R: h+ M( y8 X1 {9 y+ c1 L( D2 X; ]! ~* r4 X: P1 u( `4 |+ T( x, }, H
mbd = "D:\UG_OPEN\ini\数据库.mdb". ?8 @0 I' b1 z: I
+ L2 e& L O `7 y" I- G! t
conn.Open cnn '连接数据库6 T; r, l& ], @* K! B0 ~9 }% a
readdatabase
2 s1 @/ L6 U. M' L3 \9 s& C Me.Text1.Text = "行数" & 行数
) b' Q" ^/ {/ p1 h" R8 c9 N Me.Text2.Text = "列数" & 列数- N5 K/ n! ^ f* Y2 K. ?2 Q
Me.Text3.Text = aa
7 ^, Y* l b( V, D' T, NMe.Text4.Text = bb8 Q6 x1 F' r& C. f X; h
End Sub0 n% G. _+ h* z! ^/ Y2 H. @, Q( x' ~
2 c" {8 I( f8 T! V, mPublic Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)# @# }1 `$ G% o8 ]7 B9 K$ I
Dim i As Long
7 [0 W) W4 i6 j: D c sql = "select * from test"
P+ I5 y5 Z4 s' u) v7 W rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集- j* h% l& V& V. c) G
6 W1 ]4 u/ }9 ~4 l3 T; S) N% o5 }1 L& }
总页数 = rs_maxcut.PageCount '页大小rs_maxcut.PageSize. e* F$ k" l1 U" }
行数 = rs_maxcut.RecordCount '行数 (排除标题), f- _3 X5 E7 b+ ^, ^6 v" ^
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)
6 M2 z0 S# N) {) l+ F. `* y1 O
' Y+ e0 L' q V If rs_maxcut.EOF = False Then) q1 s$ w4 m0 f& O3 @; v7 d1 j4 W3 \
i = 0
& T3 S& E) Z1 i1 h6 [0 X' V0 a Do While rs_maxcut.EOF = False" ?) R+ z, s; u t" B
i = i + 19 H1 P, O: E1 W2 ^; [5 ]9 e
% o {/ S4 C* b( i# D ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标* }6 U/ u% ~. w5 a/ `7 Y
4 B) n$ E* F6 @! ^2 ]+ y: c+ _; } '第一行 或者 第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的/ o& @0 ?" ^; @/ F
( n) r* {( t: m) t( ?( ^: x4 H% E. q2 U' |1 G+ b* x7 @) J/ B
If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
8 v* V9 F- M+ J If i = 2 Then bb = rs_maxcut.Fields(1).Value '除去标题后的,第1行第2列
- U" m2 x+ n2 I+ t4 @( i0 ^/ o- N( U- W2 q6 ~% l" @
'读所有内容到数组0 O2 s; @; N( L
For j = 1 To 列数
, J. b1 q5 S/ V5 w9 C' h$ D 内容(i, j) = rs_maxcut.Fields(j).Value
$ c9 J v4 V, Y( |, \/ } Next
) W0 W/ S* D7 y/ c
8 h) u$ B- u' p. q rs_maxcut.MoveNext '下一行9 `) u5 F7 G; q4 L# B
Loop/ ^4 T$ v5 Q( X: p6 K4 t
rs_maxcut.Close '关闭. f' z- M0 [4 f$ [/ z
: |& b( a K7 X8 C2 B; A6 L5 J: V+ z5 Z/ N8 l5 o' j4 B6 p' L3 t. B
List1.Clear
' S5 |: s$ _6 e- Z, ?8 G For i = 1 To 行数/ q. P F( A; j- k, V5 N
For j = 1 To 列数6 H/ @7 T F }1 n+ b. b# |# u
If j = 1 Then
, M& Z( H, E* t. I- d. G1 F) g- G str = 内容(i, j). u; x! q8 x& B0 s0 D. U' X3 Y* g
Else* T- ?8 ` Z! o4 t' I
str = str & " , " & 内容(i, j)6 M- N E/ q/ L5 s3 k3 ^ V4 r D
End If3 ~& I; ~7 y" ~3 B: j
Next3 `4 e6 B. z7 X( g# Q8 p
List1.AddItem str. ?3 I0 w0 l& q# V* x
Next$ k: n, E2 i1 ]3 V) U7 l
6 J# X1 L' ~- U, {8 H" p
End If) `8 l& b" a0 }$ ~0 |( O4 N1 y
) K$ h- s8 w* P. n! h& \" I4 Q8 K
$ G4 z n5 g; e) y5 {* S
End Sub
* o8 y" ?2 ]4 Q1 d0 h3 y3 G
* w/ O# x- k( F2 Z0 tPublic Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)4 M8 }* E& H7 ~1 x- m, ^
On Error Resume Next) @( S6 y& X% L; `7 K7 L
Dim i As Long* x; E3 U/ w* K ]8 s3 |$ T; S
i = 0
! R" d7 }7 \/ |; M
# \+ B* t/ }; j. [& a! @# ?. yconn.Open cnn '连接数据库
4 k4 C+ ~8 w) O5 L0 b; n. V9 t0 P% k" l7 Z
'sql = "select * from test"
6 N8 F7 S- |, q8 b
. m: w! A8 W: `8 E rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集
; } M( S1 A: r3 q( U
- s7 l5 t8 a7 Y% f- n" ?1 s# [* [ If rs_maxcut.EOF = False Then M1 N" M C; Q
3 p4 f! ~9 T" k9 ^8 q; l2 l
Do While rs_maxcut.EOF = False
K, a6 {! D; ~# G+ t8 h: V i = i + 1
6 r' H q1 r" d/ n" a' T: V& ?# R3 b; J- p( p
'不要去修改 第一行 或者 第一列的内容 因为他们属于标题
. n$ O( `. f3 }9 W+ u1 b. k% _% T. S) w; J9 W# `1 ]% _
If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列
/ a3 l/ {0 _ a! j6 Z4 N8 T) W! Z- U$ I7 t: a
If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列
, e6 k7 [. Y& j
. u$ I; `# N+ n2 T j; y rs_maxcut.MoveNext
' A! {( S) |) _! X6 V
; F; k; ]: k4 y3 w0 [; B2 J Loop
* }6 m8 _ w; @* t) q: A% D" H
3 T8 f ^# ^( g rs_maxcut.Update
( t* _/ i- T9 @6 B rs_maxcut.Close+ j: t5 \& s* X. g# {. C
) K3 p& Z) p3 ^6 E' b: V; u5 V End If
% e! |5 Q3 {1 K# p& k8 v o6 l1 P s9 A# _+ v4 T& b* r4 @! o/ p
End Sub
& _# b: O4 \6 p+ L, ? d; ]- A, h0 Y A8 l, k4 H3 ]& n
$ |. |3 d, V( u- l0 n& x
3 W/ p# O; f% y
F) b, s: p7 s3 f( N n |
|