|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
c# c++ vb 是可以互相调用的" l1 e) |% j3 y0 p
2 Y, y/ u2 A# Y2 o& avb操作access数据库 的方法! ~3 [% n. a! M \& K" H6 l
7 Z `/ B+ h. M! {7 _- w首先要安装 Office2003sp2 * J) G. G" z& C& ~* e: Z
8 [- @7 D$ |9 t* N列子:读写数据库(.mdb)
+ J3 a1 i q" p. @# ]/ Z
' @7 P% \! _! e* {8 E& L! k1.创建 mdb
3 r5 ]) ]$ X W8 n, E( K开始->所有程序->Office2003->Access 2003 新建一个空数据库 保存位置C:\report.mdb
& n, B3 U, S% ~$ R创建一个表格 并重新命名为test (操作和Excel类似)
. L) Y' f8 V6 o& K4 S: p8 R1 t( V3 I
! x- b9 J: Z# y" o* C注意 表格名称 和源代码要对应* V; E) j' W1 c% r, c2 r, H
8 G! \. K; z! q W/ W; i, Z. A2 i
) Q7 a9 H; {, @) \+ T% E2.注册数据源(代码中已经注册)和写代码
# u, ^0 N% X) }' ^! F! x0 x( a: P( Y) }( G
- q) W0 D% C3 ^5 f' Y
在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,' e! H$ N4 |6 l1 `, [# a6 Z( f2 y
我们必须点击菜单中的【工程】-【部件】,
8 H) h6 Z1 `" s, L) R N" A在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和3 d S: D0 B5 G! F( Z' S1 l
“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,6 p# t1 h+ W' m" y# B! Q& t
最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
; t& d5 ^' I% H
$ w E1 x7 H0 Q a" A; t0 R
8 T# u0 J2 Y; O; n. ]6 k+ B/ n5 S添加4个文本控件 Text1 和 Text2 和 Text3 和 Text4
4 p3 l8 y0 A& c4 N2 @* m添加一个按钮 ID修改成 “保存” * T6 a0 Z3 [* B1 m+ W0 w' c
添加一个 List17 l, T6 n2 t+ q9 b0 C3 {
3 M W+ ]- z! f代码如下
( y+ X3 V0 P2 g, F4 L9 ~; f# n, `% e/ J1 C* @! k+ l
8 A: ]% V: R: I; r8 {! y
Public conn As New ADODB.Connection '标记连接对象
" W, R# [& b. V4 E: k4 W2 W( EDim sql As String
" k W( C$ k* H! G7 UDim rs_maxcut As New ADODB.Recordset
# c3 V% p4 N7 k: J; p3 aDim str As String
# x; _8 n6 A; l( k. V$ WDim aa As Double, bb As Double
: [0 y6 [7 p1 C! D7 BDim mbd As String, o! \ ~# S+ z) e
Dim 总页数 As Integer, 行数 As Integer, 列数 As Integer
, l; Z' v! B3 w- ~4 f% p3 @. _( H& BDim 内容(999, 999) As Double: U4 t4 C7 J4 |& y* [4 P& l
$ n2 X; q" [3 V. c6 x
Public Function cnn() As String
/ ~3 \2 s& K: `; O cnn = "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & "ersist Security Info=True;Jet OLEDBatabase Password=123"
7 u0 X: H, N( s1 E* P) E; }End Function
9 r& \3 K2 g6 c4 X( X$ r8 g% x* p' n) W7 p& r% A! A# u; O
Private Sub 保存_Click()
[! R& ]0 _0 ]
4 u* e9 _- ~# Q! _3 G+ @0 }; M writeDatabase
% O) J& f$ S- \8 g; C* E0 Y6 B End
2 t+ m( T& V- o: kEnd Sub" A+ l1 Q9 l U; V
2 T) j" F* J* @9 ?Private Sub Form_Load()! ^( N m0 `# M' ~( a3 ]% b! Y
" a4 h9 }( y7 b mbd = "D:\UG_OPEN\ini\数据库.mdb"
* V$ I9 X0 a6 F1 s5 @& W3 a+ a- j# q5 D5 M! b+ @2 @
conn.Open cnn '连接数据库
- |; C! W5 I& g) r readdatabase
2 }( d( t% T8 h) Z5 G Me.Text1.Text = "行数" & 行数0 w2 |# n; [. `- |" j
Me.Text2.Text = "列数" & 列数
* G1 E Q6 b- H; sMe.Text3.Text = aa x) ^0 O( A) z# Q
Me.Text4.Text = bb
2 N6 Q* f; O$ @ i% |0 SEnd Sub* E! h* ~: j: L J6 l
5 r2 @8 C3 u. g5 I
Public Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)9 G, _) C6 P& y" [- o
Dim i As Long
9 C( B7 t7 N$ Y3 G G# N# m sql = "select * from test"5 n" x/ }! d6 _0 H" A2 t+ Q; {, d: V
rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集2 x6 L- F0 j! n( A; r# ^/ \9 z
' @ I4 \; T; V6 D @3 B5 P
, g# ^9 ? ]% m( K; ^
总页数 = rs_maxcut.PageCount '页大小rs_maxcut.PageSize
& H* }. q& n s4 }行数 = rs_maxcut.RecordCount '行数 (排除标题)
! f5 ]+ d( B# D" C列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)
, U: \) M( b n1 ]9 Z9 z7 y' _, B6 x$ K0 q* {& F0 c/ Z
If rs_maxcut.EOF = False Then7 t! D& W5 o& f/ V5 `
i = 05 p" G9 G, {( l7 v
Do While rs_maxcut.EOF = False) C6 b L+ D* I' h* K3 ^
i = i + 1
" W9 V$ u* w) ~) u* z* O
: O4 ?5 z" f" f5 S3 W; o1 s. e ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标3 u, H8 b/ O2 x& u8 j
* u0 o& N/ u" j. C( g. [
'第一行 或者 第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的; [9 \/ P% E' C M# C$ \
' V) g) D S& |0 q
# M" x9 i* F3 V If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列- [4 ?1 @3 M8 d. O1 E3 k
If i = 2 Then bb = rs_maxcut.Fields(1).Value '除去标题后的,第1行第2列4 d" E; y3 x- i W
% z# c) o) W) N; x
'读所有内容到数组* Z/ ~& L+ Q( } F8 R) G- Y
For j = 1 To 列数) ^ n" N! T6 b3 B; W% T
内容(i, j) = rs_maxcut.Fields(j).Value
( Y2 U% ?0 W+ A( _+ W& x4 j* D; r Next
6 I3 \0 r; K; p1 k# @& x0 G
) e- @* Q% g) ^* `4 u! `! Y; ^- o rs_maxcut.MoveNext '下一行
$ {& n. f7 r- H Loop# [$ B# C& E: Q9 }& X0 G
rs_maxcut.Close '关闭' b6 T" e& E7 a6 Y3 t- h- I4 V
! M' C! _" s9 I3 V4 O" i q+ A
; i9 z6 f. a; S( O& D List1.Clear4 O) u6 U' f- y) T% m$ i
For i = 1 To 行数
2 O$ p& ^* P: x( { For j = 1 To 列数5 e* ^( `. ^9 e) `' X0 }
If j = 1 Then, [0 G8 X1 I! Q- O+ }4 z- J
str = 内容(i, j)! K& I5 J6 J3 d1 |+ k0 g" p4 T
Else
! |0 h& \& t4 c str = str & " , " & 内容(i, j)
" |6 q6 I7 `; I8 n" j' q8 O# f( _ End If
. Y+ v0 ]& ?* l2 i% z7 H& j Next
( D$ A: T% l) ~- W/ E* M List1.AddItem str
3 i8 n; k2 U! A# g Next5 x3 `0 C2 t7 T" j! r3 Z& i
9 C, c8 z' A, K2 F" W2 e: O End If
" T/ `8 l2 [& _# A* k" Q
# B! \/ r) E+ l+ \, M1 H8 H8 o, k! ]0 f' v& @& A2 {: d
End Sub
) n( O6 X E6 b6 P7 ~) {$ i7 N h5 U8 X; _: O3 s4 |
Public Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)
2 `. p* \% L( ^ On Error Resume Next
- H: B; s$ z Z2 R9 \. e. J Dim i As Long) J! a1 R/ t) C& O4 [7 N
i = 07 }( `- ^/ ~& H* e8 e+ H
( x, Y) E% e1 Z. S+ P& p& ]9 C4 b3 j# Z
conn.Open cnn '连接数据库
9 @# c; C8 a _
- y1 {% O0 Y, Q3 y'sql = "select * from test"( y9 x% y% M8 H6 u& s5 V
7 D( s2 A! I9 w' b rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集& t' {6 {9 u- m8 ~% {
! ?# ?. c. G3 G/ d( I. c
If rs_maxcut.EOF = False Then
( r& H* Z2 ~% w1 P& g
( u8 B6 }1 ~' v% o Do While rs_maxcut.EOF = False
4 i8 U: z ~1 @# A i = i + 10 B/ a: d! I7 r( i: q3 Q0 K$ e4 v: I
L4 \" f( J9 m+ p( U
'不要去修改 第一行 或者 第一列的内容 因为他们属于标题$ h: i, F t: z: f. |1 n9 b" I. q
! ^1 _5 W" x9 g, j; \5 `+ c; }/ m If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列: e5 e$ x+ J, N* ^6 g; t
; D$ [4 ^& _) x" V4 \, Y6 _# V
If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列
8 t& g5 s* r8 T1 z7 ^3 y" A3 v# w8 |0 @9 L
rs_maxcut.MoveNext
: f" a5 r/ b# D$ I2 n* x
3 v# F. ~4 w5 M! ` Loop$ b& U$ s3 V: r3 k) ^, l
! J% p6 F2 u: m" f) s( H
rs_maxcut.Update
$ Z* v& q1 N# k6 O rs_maxcut.Close
, ?/ V% y( v6 H( i7 @
2 L/ G) p. k* w0 Q; r! \9 } End If
. C1 V0 j* r% I
9 L N [3 i; {( f9 }End Sub
. o) m0 ~8 f9 Q9 x
2 Y/ n. Z1 x+ J# c( {. j
# d; p- W2 y$ ^- e5 i: n/ ~% V( R$ F. N5 Z/ z
' N/ H7 ^8 {$ C8 N3 c$ g* l
|
|