|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
c# c++ vb 是可以互相调用的6 [, l) N! D" z* H# G$ C
4 _7 c# x" P( C" f. |& X% E
vb操作access数据库 的方法2 Y' _3 K$ R/ o) W$ _
* z, }7 Y# _( L% f6 T3 h4 X首先要安装 Office2003sp2
1 A) x! X+ u8 M: a% ^
0 U$ d1 A: I! l) Y$ B列子:读写数据库(.mdb)
: s2 F- O9 d5 C2 R" ~$ [# k+ y' Q& S7 Y e6 \
1.创建 mdb
+ f8 T v% T2 C9 O7 Q! b: b; D2 |开始->所有程序->Office2003->Access 2003 新建一个空数据库 保存位置C:\report.mdb $ g) ?1 Z7 u6 S
创建一个表格 并重新命名为test (操作和Excel类似)8 R; [! J/ _ Q& K3 y& H9 o
3 K# e" c+ a$ F. A+ p: c/ [注意 表格名称 和源代码要对应% l9 V& r/ d3 M- I
' t, A! D1 U7 U( n
% F- P9 D6 S5 y2.注册数据源(代码中已经注册)和写代码
/ W% W& t. o+ N& u% q; x4 m6 ?
( H" x0 N/ t( h; Z2 e- r9 J( Z% G! H
在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,: v- X: ~9 P8 N0 L' ~
我们必须点击菜单中的【工程】-【部件】,
! x5 N$ e8 i" A* o% T3 j" ` Q在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和$ k& r1 I9 K7 y5 C' }' t
“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,
4 ~+ s" ]7 d# r: z6 y" H最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
0 z1 N/ V$ a: p6 I- }$ |2 e; ?' L {5 S
: K# W0 d2 Y2 Q7 ]! x9 D7 A
添加4个文本控件 Text1 和 Text2 和 Text3 和 Text4
+ w) I* B! y1 T# v0 c1 \添加一个按钮 ID修改成 “保存”
% s8 |& v. d+ `$ ~' @# `添加一个 List1
0 x, Z5 d6 c* r Z' b& p
, y+ ]& c4 ^: R4 f7 N9 y7 x代码如下
5 l5 V* Z: F+ o$ A; P" S% I1 D5 c9 x' z+ S: \1 q# c; P
: d, D7 Y6 V( {) s: X
Public conn As New ADODB.Connection '标记连接对象. H' \. U7 Z% t. b
Dim sql As String( m7 \# ?+ f5 R& m( [! L' a7 S
Dim rs_maxcut As New ADODB.Recordset
. V: _8 T; ?8 b- |8 A& uDim str As String. ]: g' Q' C1 h! T3 T% q' h
Dim aa As Double, bb As Double9 b+ y& T# O3 z- Y* }$ ~8 x
Dim mbd As String& c; ]8 Z; y+ Z7 g8 R( G
Dim 总页数 As Integer, 行数 As Integer, 列数 As Integer! [5 p8 i( m0 G; W8 P
Dim 内容(999, 999) As Double* h! p- f/ ~# e/ W6 H
" |+ O$ m* M6 D' t) v
Public Function cnn() As String: M' { Y6 I4 c( J5 Y' |. n& d
cnn = " rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & " ersist Security Info=True;Jet OLEDB atabase Password=123"9 z7 Y4 g) C' U! ~( v5 Q
End Function
* X; f$ v1 ?. o& V( [3 m: t7 @% [9 K7 g. i2 i8 E. F" w1 U, [- d
Private Sub 保存_Click()! _; h! C4 j- L; X- Y# Z) L
O4 |, e5 U. Z' d8 A writeDatabase4 u% X& g9 h- x- p6 ~9 ]: M. I
End
& f* k' ^: Q0 n/ _End Sub
% K* [) {/ `/ x' Y& o& I
4 w- ]0 I7 J" O! fPrivate Sub Form_Load()+ `7 \" y/ H C4 I0 `
6 V; |+ i, ]! Y) v0 R3 F E9 [, S* ~
mbd = "D:\UG_OPEN\ini\数据库.mdb"
2 W2 T* H( Y' V( c9 g l* @; {9 S3 t
conn.Open cnn '连接数据库& I& [, [# M" M s9 `
readdatabase
8 A- T9 f* C# w. ]; z9 | Me.Text1.Text = "行数" & 行数
5 J7 b) _& F% F$ E* z% L Me.Text2.Text = "列数" & 列数1 Y J6 z7 T4 M( ]6 c: b% t
Me.Text3.Text = aa
0 x8 n; N( w+ t) H8 @4 X, IMe.Text4.Text = bb
' P: H9 l) }& `6 SEnd Sub
% B- d1 b/ o ^# m" @; `' }) n ~( L, G+ b# E7 O4 h
Public Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)2 W1 v/ q; A, ~4 E' _* \& c9 _
Dim i As Long
c7 `' z; D5 Z' |- |7 {) A1 f, ~ sql = "select * from test"8 R x9 y; r5 _; |1 h% M2 s4 t o
rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集* \& F/ S1 c& [) c" M% L C$ J* @
) u3 ?2 s0 l2 n a
( ^, K. |0 \7 i- X2 J& `总页数 = rs_maxcut.PageCount '页大小rs_maxcut.PageSize
, w% w5 p8 q4 j; N# u行数 = rs_maxcut.RecordCount '行数 (排除标题)* ?9 k. W$ g8 W9 s' v" v
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)
. @% s6 T6 \' ~- P" ~/ Y7 D
! E6 i- ]3 I" P* S: Z% O/ F If rs_maxcut.EOF = False Then* o5 P8 ^2 u' T4 D8 G
i = 08 c7 W5 X5 O$ K7 H5 a9 Y# w
Do While rs_maxcut.EOF = False
$ q: O7 l8 a" B) s# t i = i + 17 K: r' v5 t+ O! C$ c6 s
- h* L' |3 | g# m- w. F% a ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标4 }( `7 n: S: r% X* c: {5 R
' @9 W! |" F* C- P& f0 B. n9 K
'第一行 或者 第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的3 E. W+ F# f4 |) w5 A# _
- a; k! r7 F# T& Q4 n5 e, s
' r: N8 ^6 o3 h3 m6 j9 H/ T5 D; g
If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列" {5 B1 e3 E' p
If i = 2 Then bb = rs_maxcut.Fields(1).Value '除去标题后的,第1行第2列
; @7 c6 C6 L6 `0 U5 k1 w l! D; \
' J. x/ E1 T5 r" F( |: D n! V '读所有内容到数组5 c# E# k* K: D' }
For j = 1 To 列数
u) N/ ~( |3 ^9 ?; k) U ] 内容(i, j) = rs_maxcut.Fields(j).Value6 d9 M/ Y, b+ U6 `- ^4 o
Next
; D" }" e9 ~ e* [% P# a4 u# A& y* w% ?; F' n6 J: B
rs_maxcut.MoveNext '下一行* S- \7 Y1 {. ?. a' r0 G y
Loop/ K A9 t# o5 ^' X3 D
rs_maxcut.Close '关闭3 ~# S& R1 ^; f
) K/ P9 @! x7 r7 p0 }" C1 A: a: O
List1.Clear
; h! S$ U9 H$ p+ }9 e* o For i = 1 To 行数; C' }9 J" ^# m( y
For j = 1 To 列数
, ~. T3 L7 d9 C( d& Y9 y If j = 1 Then
: Z+ g4 p( s! ]. c9 ~) L+ A str = 内容(i, j)
) w! H- A& j# R0 ^! n1 \0 e" \ Else
& c2 `" u- ?# P. a( V. v1 d9 t str = str & " , " & 内容(i, j)+ O* }8 T! V" ~4 ^" v
End If
$ p8 y0 _' o, e4 ~+ E, m Next3 e% I, W* _9 I$ l; f2 l
List1.AddItem str" E% e6 N& A% ^. F9 U
Next1 t) }' T5 I! F5 n1 C
9 t" r( R/ W4 l) f* ]( Z( C: `) f
End If
& Q. H' n1 }1 }4 m9 E( {. a, Y5 J5 h9 v* f: V
# F0 j( u! `3 C r+ w+ i
End Sub, w6 F3 ~ k0 G+ y$ n4 E
. U) v# c( W. y7 p0 i! j$ D$ R3 e
Public Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)
/ W1 Z5 o/ r6 D# h+ v0 i1 A/ Y: [ On Error Resume Next4 u0 ?4 F. d6 u/ j
Dim i As Long l; r; e D% n% y5 m7 m P
i = 0
4 [ E# F5 I$ F& u4 N- q( J; s- f& Z7 Q3 C- J! R$ ?
conn.Open cnn '连接数据库( t" E4 \% `# K& g7 j z. Q
% f( {5 r _) l! G# e( ~% R
'sql = "select * from test"3 `* ]! ]! h* f+ R; U0 ~
+ i4 Q; z: g) d. S: G rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集
" \5 z$ G# P4 y! m5 c( u; L/ Q- I( N! X, n
If rs_maxcut.EOF = False Then# i+ m% {8 K9 y9 w
8 Y; h0 ^) N; T# Q8 J. j
Do While rs_maxcut.EOF = False" }' O8 j* U: c+ a y8 x4 M
i = i + 13 }6 M a0 v# d1 @$ d! A2 [( ]2 _" m
% @+ S$ K2 S* s9 M: s) y% M# i1 t! N
'不要去修改 第一行 或者 第一列的内容 因为他们属于标题
( e" j% Y) x; J1 Z$ A4 d% E* h/ P# R \* X
If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列
) M* p/ a D# S, ?2 ]% G4 L
+ ^) W2 }4 o2 l& A If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列
/ Q* w, Y" C4 t( f8 n( T6 V5 S* J6 P# _8 [2 B% g) Z
rs_maxcut.MoveNext
+ O. x7 n' s$ D- {# |1 Z
U) N" u/ j" \6 F4 X3 o% o Loop4 Z M4 x4 _4 @2 Y$ d9 ^: n
' V: m( W! O$ C& n8 [$ z% H rs_maxcut.Update; ?- p) R! n4 s F
rs_maxcut.Close3 s' |5 Q1 ]: C
5 x* i( ~ D& G( z8 `
End If; ~: n! P8 Y$ T% p) k
- j- w7 ?8 |" p& N5 i7 N5 }0 A
End Sub, d9 ?6 k7 E4 X% @' j" h, a
& `1 R" R' H/ H o
. I. A* ?$ ?2 g' V+ [% r, ~# Z0 X4 w, [- |
4 P" K4 P, O' [6 K8 r0 @* U$ k5 r |
|