|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
c# c++ vb 是可以互相调用的& N! J7 P- H$ c5 {; `7 U9 u. ?* w
4 N7 X! U/ P/ W% ^/ k! I
vb操作access数据库 的方法- Y1 u& u3 ] v# S1 W8 W5 Q
9 g" X$ o' n* z( ^) M5 _
首先要安装 Office2003sp2 % L2 _* Z& U; S0 l. ?8 A/ ^
7 R0 D! g' G: E, F: ^* h
列子:读写数据库(.mdb)% d: V3 R" x1 ~/ d$ D( ~
9 `5 f/ l. e- t- [
1.创建 mdb
/ ? E1 C# `/ [$ X开始->所有程序->Office2003->Access 2003 新建一个空数据库 保存位置C:\report.mdb ( l6 T7 _; X* g3 |
创建一个表格 并重新命名为test (操作和Excel类似): I3 ^3 X( z& c Z- k* j3 N
, m/ L; }( i* B$ N$ U注意 表格名称 和源代码要对应" p& d4 Q1 }6 l& G" F
v8 v" {- v. X x
6 F: I/ F1 h7 u) x2.注册数据源(代码中已经注册)和写代码
% W v- H+ P6 z( T) F5 L/ v
6 W) r6 |. l2 R, U
( g; ^% X( n% z6 x* p在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,+ U( W3 I3 T" \3 _3 @ @
我们必须点击菜单中的【工程】-【部件】,2 @! Q! Q( p/ V& y* u5 e/ m% m
在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和
+ P: Q0 a8 V' w+ L1 R% N; z“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,
5 f" G1 j( L q" p; D( Y5 s6 S- z最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
' \) C0 \" \; S2 h2 o/ X) P- G0 J) P; B$ G4 N
8 `7 h& J; d0 D. Q5 [
添加4个文本控件 Text1 和 Text2 和 Text3 和 Text4 ( O& M2 J: y! Y& ~1 ^8 b( B% b1 w
添加一个按钮 ID修改成 “保存” & A/ O$ E: `4 |
添加一个 List1
& J6 `" B- ]! `: ?- H7 ^+ j/ M
# s" N. R0 T1 g% a; }/ G( h代码如下
( y& y9 B4 m9 k7 q& _
. x2 Z1 y' [, J5 O4 s$ z& }
& D& G/ O/ v' V6 JPublic conn As New ADODB.Connection '标记连接对象% [7 j1 }$ k/ u
Dim sql As String
% P, k2 _' {) L8 d" H9 H/ e3 zDim rs_maxcut As New ADODB.Recordset7 E. o! D G! o, h' R( I6 }8 `
Dim str As String: V5 M# w& P4 p1 [
Dim aa As Double, bb As Double3 K# I+ h, \$ n/ Y
Dim mbd As String
! o- ?: H* v- {4 QDim 总页数 As Integer, 行数 As Integer, 列数 As Integer
+ W7 g0 k7 d* ~& XDim 内容(999, 999) As Double
6 _: t d8 V- b5 P5 \% p$ g# @$ ?5 V
Public Function cnn() As String
! S2 [% ]- `6 a3 x5 m7 ]; l cnn = " rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & " ersist Security Info=True;Jet OLEDB atabase Password=123"( E: q6 S6 E4 W' f+ ]# c! Z* U
End Function
6 W. y( V7 I$ M) d; W* `
3 p+ C8 i c# Y" R: I. i( I0 ^Private Sub 保存_Click()" [; B9 A0 D5 u. w3 \! u
; G3 I' Q* o; w2 t( ]/ J
writeDatabase5 l# x- y+ z# }% P, m2 l3 ~
End
) Q$ a- s {* S& n# a' uEnd Sub. ?* e6 G6 t+ @. u2 L( k; y
" K3 e! R$ A; G& x: k9 A
Private Sub Form_Load()
! [2 O+ y6 A4 M# M4 M7 [ u- Y4 P$ ], M
mbd = "D:\UG_OPEN\ini\数据库.mdb"
- k; { Z5 `% L4 L/ }& Z9 ^
$ w) N# C. ?. t8 _ x( W% q conn.Open cnn '连接数据库
% V- F! `8 w# L% L) a/ M0 y6 D readdatabase
- x+ t$ x+ q2 I& Q- r3 \5 f3 _ Me.Text1.Text = "行数" & 行数3 E+ c( z; A& [) U" q+ Z$ e
Me.Text2.Text = "列数" & 列数# k- j4 a2 j2 j( `
Me.Text3.Text = aa5 v7 i* m2 M2 t! ~& w
Me.Text4.Text = bb6 Y$ ~, Z8 @' N# [
End Sub/ r3 {+ h0 \3 q
" ^9 h# R4 ?6 ?! }( H- p% c1 G# u
Public Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)
( Q( Y- H- |0 D/ Q( w% e( E Dim i As Long
# L; v2 p' k, o( _* ? sql = "select * from test"
- n5 R, ]0 U5 q0 |3 f6 ?. W9 Z rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集
7 B" e1 g' B" H3 X/ j- j0 r+ g9 K4 @4 S. I6 y
( n |; Q1 E, ]) K/ e总页数 = rs_maxcut.PageCount '页大小rs_maxcut.PageSize) K% X( H6 u y
行数 = rs_maxcut.RecordCount '行数 (排除标题)& M! a+ w. j6 J, o
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)0 f4 b4 h4 T2 Z x. b' n
; `& z/ g; d/ o7 f! {$ c
If rs_maxcut.EOF = False Then E! e$ U7 \& x6 o0 v& f
i = 06 t. T0 h' C: }& V; ]- i, j
Do While rs_maxcut.EOF = False
( {; t3 N; I3 w" R( Y i = i + 1
& ~! J7 X6 A$ F" r }2 _: y; @, }4 m4 s* K/ l5 v8 n: O [
' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标2 v# Y# o' C$ B! y
+ R( i9 ]5 x. F* Y; W8 X- o# _
'第一行 或者 第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的
( n- h: ?4 W) l6 `! F9 E: \' m+ _# |+ f9 Z# L2 U! g/ S
% W) n+ O& G, w- A p% ~3 ?( i) y If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
# ~" s8 v' S1 l If i = 2 Then bb = rs_maxcut.Fields(1).Value '除去标题后的,第1行第2列/ b, R. j5 C1 k. c7 v- T. V8 z# ^
; H8 C4 S, d2 W
'读所有内容到数组7 O+ [4 Q) x: `- n) Y
For j = 1 To 列数# W6 o2 J) Y$ H: o" ]* t
内容(i, j) = rs_maxcut.Fields(j).Value( Y" ?. z; H, y S
Next7 Q4 C: s9 Z+ |( A% ?3 e
/ Z* ^, t+ d! T' g
rs_maxcut.MoveNext '下一行+ K3 r: a* D' z2 e$ t$ u
Loop7 s0 i( M4 |! r& H- A2 y
rs_maxcut.Close '关闭
/ @- y. J) ]( U8 F$ B- f o8 \5 i% e, I! Z9 r
( q: p1 v. r1 T5 I+ ?( Q6 z
List1.Clear
$ J0 z( t8 v2 Z: C; P For i = 1 To 行数& U; {, U8 P- _' Z' f
For j = 1 To 列数% O! j2 y/ x8 n. _7 S
If j = 1 Then. y" @% S& ~6 ?
str = 内容(i, j)
: r% M) F1 A2 O6 f. Q Else
) x) `6 s4 M1 H. V4 x str = str & " , " & 内容(i, j)+ Y- E: F- l N9 i7 y
End If9 E, Q! n2 u) s! J0 t+ h
Next: j5 w7 q1 H4 k. T
List1.AddItem str+ E) f. o i# k f0 e' w2 _
Next; g+ Q( d4 y6 Q3 h$ v$ n2 `* C- d3 E
9 Q/ A3 \/ A3 f& U3 K6 c& ~% E End If
! w* q0 q/ N6 |# y& r$ z: T! J
) B$ N: t/ R* }" s( P7 f+ V# x- z/ N+ i$ r# A
End Sub: U8 Y1 B7 B( f1 ]6 s5 W+ I5 D2 T
; Q) w, Z: X" @5 YPublic Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)
" i9 N v) ]( o2 J On Error Resume Next
/ f0 k, s) i1 X Dim i As Long
! I* ]/ f7 Y, i. o& I$ O i = 0
& w K8 @( E0 ^7 A- K( d1 B+ W$ R0 U
conn.Open cnn '连接数据库
9 D7 J' x7 j" m
* J1 J5 X! G F. f4 `) u2 t'sql = "select * from test"2 R9 X' V3 _- o. X3 a" m
U) W% w9 P5 p% n" a, E rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集
7 ?! C' \# r$ }9 u& k
. z- b: O& s" k5 Z: v If rs_maxcut.EOF = False Then
+ J- a, k. M8 g3 U5 s) r! I# c5 ~6 f8 b% w5 y
Do While rs_maxcut.EOF = False
, k, M! J; a3 j" } i = i + 19 V. o8 u+ \+ N1 c& _7 w
7 S; o3 Z9 @+ u0 p- \$ L
'不要去修改 第一行 或者 第一列的内容 因为他们属于标题
7 m9 p$ t" w* }2 X
8 n7 y0 s6 `! ^+ W If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列, i; N! `& ]+ l
# t; P# G( M( Z5 W) G7 {0 V
If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列6 b8 ~5 X0 d' l. g9 m0 v8 L
* G: b$ h" E) T1 h! b; ?/ Z8 O) M H% o rs_maxcut.MoveNext7 K4 r7 t: n( i
' [+ E0 F, ~& u% W Loop/ u5 n$ C; T6 i+ N5 n- ~
, ?' M2 Q7 H' b' o. b
rs_maxcut.Update
! T3 j: m9 p2 g) h" ^' e1 u rs_maxcut.Close
& ~% p4 }/ I$ d/ M# N' Y6 Z9 Y4 O
* R$ j/ p, X% h4 n' ~ End If
1 i2 n0 F! o# Y& v$ l3 s F9 f$ Y# ^' X% c6 _
End Sub
% S! `0 c: e" @' u W9 S: V/ ~/ W" `. u7 \" o# \; |2 g& ^. D/ }! \
' _0 F2 z& n$ K) W8 [! I- g! ], V! `7 s
0 ~" v0 y4 }1 [: }, J* C- e% ]5 w& U1 V* y
|
|