|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
c# c++ vb 是可以互相调用的8 t A! E- I9 P9 n! ]) t7 R3 D: F
4 v3 O5 F6 e0 u' N0 i2 d1 M
vb操作access数据库 的方法9 S1 z, G% y! X9 L6 q
4 N' v1 l% o9 t: m6 \$ U+ O首先要安装 Office2003sp2 0 O5 ?( w9 B) v6 D! K
2 c& e' U ?. e% L3 c. K
列子:读写数据库(.mdb)* h4 k% A6 E' Y6 x
$ X) I9 ?: y% j1.创建 mdb
4 {' x) d1 s( z6 p2 ~7 ^, V) [( G开始->所有程序->Office2003->Access 2003 新建一个空数据库 保存位置C:\report.mdb + S2 [+ G- K$ E# [) U
创建一个表格 并重新命名为test (操作和Excel类似)
3 w8 R4 |+ o' Z0 `- x: K$ `" I3 X2 C! U$ I5 p8 N+ R- `( K8 E" _. F/ ?& m
注意 表格名称 和源代码要对应
* b$ Q* ~; ^. k l& ~0 [6 R, J/ }% R; L0 r
/ ]+ h: m m# Y4 J7 D2.注册数据源(代码中已经注册)和写代码
& Q/ r7 u, J4 e" q/ R: o% |% o
9 K" H( C8 S% E# I
. o& R) H4 h( X& {$ x在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
# c( K# Y. W# Z我们必须点击菜单中的【工程】-【部件】,
$ r* L3 j2 P+ w+ J6 l$ y$ C. H在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和
( {8 j e; P6 g" C+ w, `3 o* g“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,
! ^9 o2 V# ~; H3 ]% W+ |" q最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了, n% i3 w# ~; L) k. O7 y8 O+ M- ]2 @
' w& C7 N6 V$ ~% u# b, c( D
l9 s1 E4 H0 S0 U添加4个文本控件 Text1 和 Text2 和 Text3 和 Text4 " z0 Q( H( i1 k1 B4 J$ n: m
添加一个按钮 ID修改成 “保存”
9 j9 A' _" m# P8 |, b添加一个 List1* U* S' n& B' z6 X( h/ E4 t* x, V
0 ?, L6 h: l+ m
代码如下1 x0 I9 X( L) k
! m1 \% z8 O3 S+ k
( v, t- a x! y B4 x x0 k8 X
Public conn As New ADODB.Connection '标记连接对象
* j; t8 _, A% _% {Dim sql As String+ t( [' F( P. k
Dim rs_maxcut As New ADODB.Recordset
6 M- }8 {* h5 gDim str As String- G/ q) J8 w B5 Y# q6 }1 B) m
Dim aa As Double, bb As Double( l+ H0 B ], J, V/ j
Dim mbd As String
5 m7 j2 `( ]5 L6 \1 X* |Dim 总页数 As Integer, 行数 As Integer, 列数 As Integer$ _3 t& P$ z V4 z" K" ?% q! b
Dim 内容(999, 999) As Double( d) I, S- y" U- A z
8 d$ e- ?$ |% b. M" w
Public Function cnn() As String
: i4 [7 b- k& P cnn = " rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & " ersist Security Info=True;Jet OLEDB atabase Password=123"
3 }4 C& Z5 A' ^% F. O- _End Function8 E3 w n- ^5 Q) M* y- t0 ~$ B! D9 F6 l
; b4 o) D: B! p- j v: j0 kPrivate Sub 保存_Click()" I& J, e, z s4 S$ X0 w
# q2 h7 J7 w& I7 m! Z+ Y' b1 h4 O writeDatabase( _8 d( k) e e2 M
End
( v& o0 o/ o; V; F6 X: p9 eEnd Sub) W! y. c" B6 l3 e: B
! U" o& g/ b% y- K9 D4 nPrivate Sub Form_Load()
4 b+ l- |/ Q1 T' i0 I9 k* Z, a9 K' _4 @6 p$ Q- Q6 }. @
mbd = "D:\UG_OPEN\ini\数据库.mdb"* \1 @8 @, j* K+ w4 P8 O
4 B& G; R* L1 ]$ E- T4 _/ d
conn.Open cnn '连接数据库
. J5 W5 j) S$ _# Z: z readdatabase6 y* I% ?' {0 }1 Y4 Y; @
Me.Text1.Text = "行数" & 行数
" ]. z7 j; T3 O9 x! `' G Me.Text2.Text = "列数" & 列数
+ D6 g, s2 N" E+ K8 EMe.Text3.Text = aa
$ M+ ^ s9 i- L1 [, jMe.Text4.Text = bb
! b' K; `3 o' v7 K. O1 w, a8 rEnd Sub
/ P- i% b# ~3 f& S! x+ h @' y4 c
; N4 J2 C/ Z$ f7 B4 |: f' xPublic Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)
/ ~6 f G& g' s+ p Dim i As Long
% |4 |$ ]3 E4 {9 A sql = "select * from test"
* o2 Q/ P6 l/ R) f2 A rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集
) |2 H( ^1 Q# \
4 L/ a( H, m" r% ]7 w1 ~
) D' b* R. J$ \$ d+ O总页数 = rs_maxcut.PageCount '页大小rs_maxcut.PageSize
2 M1 f$ C" L( M+ O6 X; G行数 = rs_maxcut.RecordCount '行数 (排除标题)0 N1 w6 z) B6 G% o. J u0 M
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)3 \2 Z. G/ M+ @% Z, t% p
( h. n3 ?2 K* Y3 H6 I3 s
If rs_maxcut.EOF = False Then
6 I/ j7 }5 F7 W0 a) I1 u# ]& p/ i; V5 A! @ i = 0% m/ _0 M6 h. u' Y$ F. W1 U
Do While rs_maxcut.EOF = False3 V. H" O8 r: ~" [2 V
i = i + 1' d, m2 U' D8 q2 E# L0 L+ G
, V& h$ a8 x, w1 Y ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标2 @2 X" k# @2 s* E
9 c' |& U6 m, e9 J* l2 r9 s! W$ Q '第一行 或者 第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的
# t% `1 Q2 b; o3 i$ }( _2 \8 p9 }( Q$ z! Z+ K) g8 q, B$ g
, n$ b, D/ q* @ If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列9 w* A5 d: t7 z8 ?6 P0 ], {% B
If i = 2 Then bb = rs_maxcut.Fields(1).Value '除去标题后的,第1行第2列
* Z* Q& B% d3 h; d% X2 h7 m
2 u% `4 L6 F# ^( U '读所有内容到数组: m4 g' J/ o& P
For j = 1 To 列数
8 B& I2 d$ v4 R 内容(i, j) = rs_maxcut.Fields(j).Value
0 F; r2 x% T: [/ ^# u* ?) @- \ Next
, B6 ?% q; c9 b: V! C h1 t- p3 D$ }# p% V+ [
rs_maxcut.MoveNext '下一行, b& Q/ J) |* t/ ~4 t, B9 {7 f- _
Loop5 t1 Y: h' J Z# Q5 O. X
rs_maxcut.Close '关闭; `5 R2 O* [# t5 k0 p
# N0 O, S: O- o% E. R1 e! O- [$ `6 c
List1.Clear
5 A0 l$ t1 \* V, \9 \$ ]( D For i = 1 To 行数( Z: {- ~- m5 k2 a& }
For j = 1 To 列数# x4 F2 f$ v$ {' S) u/ ?
If j = 1 Then
4 M' z" m; F) x6 \% C) H' h3 Q str = 内容(i, j)
+ Q& }% d, Q: ~, j7 o* e* T. g3 Z! n Else+ ?& b$ f# z; V1 |8 a
str = str & " , " & 内容(i, j)) N/ J6 z2 F3 Q- X' Z( ]
End If, F2 w' i/ s7 U6 G6 p2 I
Next
- `3 Q T3 O# r; V! Q+ N List1.AddItem str
3 | q9 J2 R& \4 ~ Next2 h, ?' J. w8 W- b
0 x5 ?$ S0 a4 q
End If
6 E C4 a! \9 \1 R2 Q& ]7 U/ D; D( Q7 {" S2 L
6 X# l/ o" f0 _% ~1 t: q5 x2 S- @
End Sub
5 b7 q! w7 c" [$ t
$ u1 B& L$ `) v) J5 W3 JPublic Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)! v% N# o' l7 Z! I- b, ]/ `6 z
On Error Resume Next0 N& L7 G0 G; j3 Q5 t6 d: [0 ]- ^& d
Dim i As Long6 i5 Z; o9 C- y& p. A
i = 0
% u* N# C N0 R" N: j s, j( ]8 c* Q
conn.Open cnn '连接数据库* N6 I1 t8 j* L+ _3 s$ t' S2 }
" U: V5 M& X# I+ T'sql = "select * from test". x0 Q5 V% @6 {* R( ~# x
$ @# M; ~# @# j6 b" V1 E2 u
rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集
0 d; o" x1 E' o. p8 C1 h0 \
1 B" P9 F& l# D j; m8 |5 F5 |( I) h+ P0 g If rs_maxcut.EOF = False Then
6 w# W, z. u# f( c; F7 q( I$ a+ ]4 q" }$ l- w
Do While rs_maxcut.EOF = False8 ~9 L4 S7 ~8 d- n; P
i = i + 12 I9 q7 j4 A! i! i! Y
/ L- K6 B' k& i: A: ~ '不要去修改 第一行 或者 第一列的内容 因为他们属于标题: Y/ M) W" u0 v8 l$ w
7 q7 I# ~$ k# d6 i If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列+ b- E5 ]! } [8 d; ]( o
8 C( n6 D% l! S- R# Z1 k( e If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列
$ |3 f* u9 C& [! [* h! M! e0 f+ C( p
rs_maxcut.MoveNext
7 }* y; I) h+ {
0 k% n; y* v( r" `2 z- N Loop
6 l, D4 d* R$ L, C8 m) j' V- Q( b6 a) m6 i# q/ \
rs_maxcut.Update2 n8 X0 o3 {2 Z) W/ L$ d
rs_maxcut.Close7 [7 j) _8 }$ s. V/ Y6 f# Y3 Y
& _' k% ?; O% K8 v
End If7 R5 l' E- z9 z1 b, ?7 Z d
7 I+ h, i: y: z, QEnd Sub; \) |& [ F6 i. c8 O: c- p# r
, B# t) t& u$ e8 u! `
7 d9 Y" d0 Y, C4 O0 o: U
2 g/ O8 f* d) `: ?' D. Z/ y0 y4 N# z, @! ?/ }1 B+ Q! n
|
|