|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
c# c++ vb 是可以互相调用的
. m# G$ ]; d- y7 W& M/ z, B8 _$ K! t" X) W9 }" u9 j% I, Q( o- J
vb操作access数据库 的方法
, n' X) c9 ?5 N2 Z, u# N+ \
" p4 X- w/ C$ E% M5 R首先要安装 Office2003sp2 7 b, N* W( R3 I+ `5 x* l
7 P6 |5 D" t5 @% m# V5 s8 C, f7 T% D列子:读写数据库(.mdb)" Z6 K R" s7 a, i# @: e, V
* ~% g/ u4 H9 Y; M1.创建 mdb( u+ \" Y" H* l
开始->所有程序->Office2003->Access 2003 新建一个空数据库 保存位置C:\report.mdb 0 P1 i( G7 F9 X* A. Q$ I6 S
创建一个表格 并重新命名为test (操作和Excel类似)) X2 ^1 O) T( G9 J4 `! I+ Z+ c
/ m% {. m' O. n2 s" S, p注意 表格名称 和源代码要对应
4 e! I0 _& q* r$ u8 y+ b! w6 w& B6 t
; F$ D3 v9 U* D+ J# s# ~0 |3 i8 n. C* w1 }5 m% v
2.注册数据源(代码中已经注册)和写代码; k8 W: I/ f% ^3 |: X" S2 m
2 \. n* a" I9 X- ?( s7 V% c% _) j! P/ j- f' ^' q% ~9 Y1 j/ @. n
在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
- D* ?* b6 d# B$ H" o! R我们必须点击菜单中的【工程】-【部件】,
5 G3 ?& O( F5 B$ F0 c' H在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和
, N& p7 Y5 ~$ ^) C# D“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,. W4 I/ O% r) c6 D* S+ O3 m
最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了# p- L) Y! s: E0 n. \ E! H5 D/ k
! I0 \8 \& p% N! l% b
& m# e+ j$ A+ T% r0 D
添加4个文本控件 Text1 和 Text2 和 Text3 和 Text4 2 M2 d8 F }0 V4 |
添加一个按钮 ID修改成 “保存” ' ^, J6 Y& ^' Y. E8 v
添加一个 List1
5 B; X$ ~1 w" v7 ], V* M9 X5 E
% |0 d4 U6 S; }% ^" G代码如下 O: Z9 U& L- ^( ]+ \) w! B/ M
/ J) B' q$ M* O" x' T! K- l
9 {+ v+ y# m( F: ]) ?2 q
Public conn As New ADODB.Connection '标记连接对象+ k9 f9 f3 _9 g. W# h
Dim sql As String
% I! P4 ?$ [7 z9 D c, J+ L* aDim rs_maxcut As New ADODB.Recordset ?! ]: R3 `8 U0 O5 w6 L' o$ p( A
Dim str As String& z+ X# C( A5 Z" \3 w1 ?1 E# H
Dim aa As Double, bb As Double
' S5 g$ `0 J9 c1 E, q3 GDim mbd As String
: ~- A" u$ q' }; a1 a8 M) d7 C8 ^Dim 总页数 As Integer, 行数 As Integer, 列数 As Integer. |5 s" w' G" M$ [$ G o: N" y
Dim 内容(999, 999) As Double
8 d2 @( X, G8 |
; {& ]( i K1 ]# s: |: M. k3 PPublic Function cnn() As String
) L; p3 ?( w3 e9 A, s cnn = " rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & " ersist Security Info=True;Jet OLEDB atabase Password=123"
' s* ^! t3 j. Q+ [: ^, `End Function
7 f9 @7 y g, ~& e% u; M' y2 P# C, j8 i3 I2 d# W
Private Sub 保存_Click(), _" T5 r" p7 x9 Q/ J
! a9 ?0 ^3 A9 ~4 z. F4 i writeDatabase7 B+ w- V4 g) @" l" o7 ?
End
2 U/ ^7 h! o, E$ V9 W3 O- ~) s% pEnd Sub( e$ L9 T, R( d- F
: T- J; U/ k' P J
Private Sub Form_Load()$ ~$ v: y/ U d1 A: c4 I
0 `! d7 d* J( l' p& S. a& ^ mbd = "D:\UG_OPEN\ini\数据库.mdb"
$ Z, z# P w# N s* Y
M9 c9 r, W4 S4 P# T ^3 f conn.Open cnn '连接数据库5 t! p; A. C' d3 C" l. z( M6 y
readdatabase2 X. _: |. @7 d& I, L% T/ y
Me.Text1.Text = "行数" & 行数5 m% h0 @+ j, ]( {% m6 @ u
Me.Text2.Text = "列数" & 列数
/ f; t( {* h1 ?6 W4 lMe.Text3.Text = aa
5 s2 V6 O7 z) _+ NMe.Text4.Text = bb' E& b4 C/ l1 N, \ s5 R8 w% B4 z
End Sub+ Q# ]* M! c6 \, t3 U/ A) d+ c
L- a5 ]! R2 T* f; u5 ?
Public Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)
- l4 M8 B2 k; v; X. I' z Dim i As Long
. h' |0 c7 O6 S# e; ], _ sql = "select * from test"
8 r$ C# U' e. z/ |" @9 w3 q rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集
2 W, {7 K$ i3 H/ S6 k$ n4 M5 v- X" j' q6 w# s
( P( q: b# k) T5 ~
总页数 = rs_maxcut.PageCount '页大小rs_maxcut.PageSize
( O# F" Q' |) W# [7 u行数 = rs_maxcut.RecordCount '行数 (排除标题)
: Y* K0 t1 x4 e2 K% u! s列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题) K; P5 w0 Z, f8 X( O/ x+ l9 {/ W
4 _! X6 Y2 D% @3 @
If rs_maxcut.EOF = False Then
# v0 N# y$ G$ D4 N( {, Z i = 00 ^4 M; y$ f `! v& |5 d1 \2 D) b2 v. A2 I
Do While rs_maxcut.EOF = False9 v7 F4 |; k; l! ]" V3 _
i = i + 1
. d, j, C1 X5 l' Q a( @% N( S) l" Y4 K! @6 t. v" R
' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标9 P9 M0 r3 W, x3 ]* |1 i' [
5 d2 A. r; v; @8 y% d" e: H0 X
'第一行 或者 第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的3 X+ G' }0 K! s0 b- A( d8 p. q
8 I) W/ h7 c& e0 ~$ j& ] H1 O
, q8 Q( V& \" ~3 X
If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
# w1 W) t% Q& k9 q/ C; s2 b* w If i = 2 Then bb = rs_maxcut.Fields(1).Value '除去标题后的,第1行第2列5 N( X a s. q2 E; T9 D$ v+ v
4 k* W4 i" f/ L! k% S
'读所有内容到数组
0 e0 Y7 x |" q' Z3 ? For j = 1 To 列数/ Q- p' O; h- N2 D6 O7 f
内容(i, j) = rs_maxcut.Fields(j).Value
: }/ }. [: x Q) c8 `. } Next5 V3 w# g( W1 X+ I W, S
: }% I& @1 v$ ? K
rs_maxcut.MoveNext '下一行3 K2 ]/ B% w( a3 K/ \
Loop4 ?7 f) g: E8 V/ D% m9 `0 r
rs_maxcut.Close '关闭$ w3 T f8 A3 w! r2 k
1 Y1 o* W" Q. T5 u8 g! m# T( E8 u
List1.Clear. Q. t+ p$ m. J( R. Q$ q5 \
For i = 1 To 行数
& d, R' q8 Q% M9 |* r% w+ x4 c" g For j = 1 To 列数
0 K! G, s9 _2 ?* X8 F9 C If j = 1 Then
. M& D2 b- l A3 Q str = 内容(i, j): u6 r+ Q$ F) j: C2 V6 e
Else$ Z* f" o3 s0 E' f# K
str = str & " , " & 内容(i, j)( B* k! d' Q5 }1 b! V
End If5 ^5 w' @; N, ~ ] x
Next
* [0 V: m& ^/ ~; h9 k; G List1.AddItem str
& y, |' H4 y% W! y! s) O Next3 D& X4 T" ]& \) y4 @; T
h- c4 e5 R& X/ M End If
" d8 z' o1 B: ~
0 U2 A1 W4 [" Q# H. w& ?9 O, ]1 F* N* q2 Z6 q o- b
End Sub
: O# D) n2 \5 n. o: n! ^
( Z/ h# E: Y* v, d/ LPublic Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)
- W, t9 ^# v) X* ^ On Error Resume Next
, V& L R8 F9 v; F# C Dim i As Long2 ^$ b+ ]+ K+ W. x
i = 0
2 e. q- l4 R6 P' V7 f& R# k7 f1 D$ d- T
conn.Open cnn '连接数据库1 I9 m" O: w% W
' V% N8 z+ w0 e'sql = "select * from test"
' h J! B4 o. u: f4 c
9 G& F& ^+ G4 `% B$ b# J rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集7 q5 ~8 z# i# j8 J* k b9 c
& |) g; R/ r5 M8 `" w4 K
If rs_maxcut.EOF = False Then, P& p7 v n+ f& c4 @
; R" w& B- F9 h8 M D/ h Do While rs_maxcut.EOF = False
) E; i. e* c+ @9 w! Y6 ~; n# t i = i + 1
- a' M2 {3 j% T6 b
_1 c7 k; N* o '不要去修改 第一行 或者 第一列的内容 因为他们属于标题% b/ C( E0 w5 Z
! R0 i2 H2 Y% q+ e; U If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列' s. [) x" E/ E$ c |: Z1 |) o! l/ g9 a
) j* V2 p" L6 e# E8 A# o2 X If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列
: A" |9 `2 ]1 i _
- d* z: x N2 P( k0 t" ], ` rs_maxcut.MoveNext
9 N( y, L- H8 H2 H$ n9 ?
0 d, e" R7 N7 V, g. r3 o Loop% m$ h' Q% ~ W# S2 d3 v6 r- j
- B9 K2 q( I5 l; N: Z) T, }
rs_maxcut.Update
: @; B! V+ ]" ?6 R6 ?, |; l ^& F4 X rs_maxcut.Close# ^# p6 a1 [; E5 I0 u$ T2 J- x
# f' s; h# d A; { End If$ a ]5 s& H, H* w8 G _9 I1 t% m
4 w4 v( p+ a0 f* f' f REnd Sub
+ V; w# c: \# l
0 {, r5 D @% L/ ]$ V ^
" u3 m4 i: l" M- G
_% G4 Y6 k k/ }; U
5 a$ ?" |* v" r9 ?1 t |
|