|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
c# c++ vb 是可以互相调用的
. \6 g8 ?+ A) e8 _ z) p7 Q4 t+ N8 x
vb操作access数据库 的方法 P+ a3 p" ~; N; }! Z/ J
1 O" _0 L# K+ R) e% o首先要安装 Office2003sp2 4 L9 M6 f5 ?8 b
: B2 @, ~9 R4 W9 O列子:读写数据库(.mdb)
, @7 a0 Q% U4 y' m# q* @! T% X1 K3 h" J; X# H5 }# S
1.创建 mdb
, P9 U0 G6 A/ l开始->所有程序->Office2003->Access 2003 新建一个空数据库 保存位置C:\report.mdb . N4 [" D6 l4 o: N
创建一个表格 并重新命名为test (操作和Excel类似) P5 m, V3 V* ~: U# a- x/ t) V
* g2 \; x& w# G注意 表格名称 和源代码要对应5 q* w& e1 }" y' v
- X( ^) X! K9 o5 R
; k. L N/ [- r; X9 Z) x6 e+ b2.注册数据源(代码中已经注册)和写代码* f) C7 U8 o1 H5 k2 S! s! ]6 h
4 ]$ C( j2 x' U& u. k% o3 ]# A5 {( _& ~( ~- w
在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
$ N0 G4 F+ l8 t) ?1 W/ P8 T我们必须点击菜单中的【工程】-【部件】,' [7 n4 J1 j, u' g p$ W
在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和
7 Y0 u- u( w7 a, c8 V“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,- s) P! k- G" T6 u0 J# K
最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了4 Y; c6 Z3 p4 G5 q( k, k
9 T y% b' I+ H9 g
! Y' T& _- D/ e0 k& L+ m/ x添加4个文本控件 Text1 和 Text2 和 Text3 和 Text4
^. Y' U Y$ ?* b. {$ \: r. F添加一个按钮 ID修改成 “保存” ' A3 C8 p6 ~4 K- _& U
添加一个 List1
3 X$ r- r, Q! u7 e$ [7 e6 Z c |9 V! m y0 {
代码如下9 x0 B: O$ \% @# Y; v) H) O! [
) z) \! Z9 m5 V& A! i& \$ a5 C! r" C: o) Q6 o4 Z7 `& g/ w8 s3 S
Public conn As New ADODB.Connection '标记连接对象
7 J& q! X* j/ \Dim sql As String6 i y% c+ Q, G, p7 q5 D/ ~+ C
Dim rs_maxcut As New ADODB.Recordset' u4 d" _" x7 |4 N; o* C
Dim str As String0 m) s- Y; M" O- C% R: L
Dim aa As Double, bb As Double
, ^# c8 p1 n; }% g8 BDim mbd As String# i- x0 {2 p$ v! k& o8 I4 ~6 x' I
Dim 总页数 As Integer, 行数 As Integer, 列数 As Integer
* }0 G5 P5 n. z( G5 cDim 内容(999, 999) As Double
( I) p4 e1 A9 t7 s! w, P0 V3 x$ c; D0 V+ s" l
Public Function cnn() As String
4 n4 c3 J$ d# L1 f cnn = " rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & " ersist Security Info=True;Jet OLEDB atabase Password=123"
, s& i0 P. S- ]& W) jEnd Function; e4 O! T, I2 q! P3 j( `. G! I
2 N$ w0 G4 e2 A. O6 r0 APrivate Sub 保存_Click()4 S3 I# b" g# B" {7 X) t4 `
1 V- N0 t$ b7 k7 S, K! H2 Y0 d
writeDatabase
- P% w( L; }0 I$ e! L2 h End+ C: d Z9 s* g) c1 @( o
End Sub
7 p+ q m7 V/ N: H- _9 H
0 z2 h0 A0 C. KPrivate Sub Form_Load()
* m$ {$ {: C- r+ a7 D
" C7 E( R( n4 c+ ?! N, i# d mbd = "D:\UG_OPEN\ini\数据库.mdb"
3 a, Y5 n" e( _: i# v, ~/ J: a; i7 o0 V: W, N
conn.Open cnn '连接数据库
5 b1 ?; u' M3 G readdatabase
- K# \0 M9 U& g% O/ V Me.Text1.Text = "行数" & 行数
, E8 M0 I9 r1 X6 N3 ? Me.Text2.Text = "列数" & 列数
{- T* Z7 V. @% x8 XMe.Text3.Text = aa
# W4 l: X" n5 l$ m1 ^9 C: TMe.Text4.Text = bb
0 D0 i. O, J; I$ V8 C2 Z* nEnd Sub
/ o" u$ q0 }# o& {
) h$ i7 }" n5 C V% l, _6 @5 HPublic Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)
9 D% V6 w# {0 y" {* O Dim i As Long$ F6 Z7 A' A1 d# Q# }' ^7 F# h
sql = "select * from test"0 W/ q8 C2 b; A* l; q
rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集4 c2 `2 Y6 W" i' U) h' _5 J" {" O
( n( B+ T$ A; m2 F
0 d |/ T, K [% d% W( P总页数 = rs_maxcut.PageCount '页大小rs_maxcut.PageSize' m/ i* }# T% y; F: t% _
行数 = rs_maxcut.RecordCount '行数 (排除标题)& M- [- P* t7 t2 |
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)
& H$ ~5 @/ L: A# A3 J$ O: j- }( ^. x" A' s6 h& o0 H
If rs_maxcut.EOF = False Then
7 l; X& Q2 d2 B/ A& P9 w i = 0
1 ]) Q0 d; U/ { Do While rs_maxcut.EOF = False
/ Z5 C' v! ^$ F2 E" N) u i = i + 1* m. W5 S y9 R3 {3 ~% b% B4 k
8 U/ @- o2 |9 A$ Y; {0 | _6 e
' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标
3 U7 T7 ?7 r5 n: A- w0 N& W* J$ q) J. ]3 Z4 u
'第一行 或者 第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的
( C* X: `: p* ]8 I# i! }
$ W( E1 |: }2 y9 v: G1 M: Z" x) \* c4 i
If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
3 y' @( o9 S0 x If i = 2 Then bb = rs_maxcut.Fields(1).Value '除去标题后的,第1行第2列4 P3 x. c8 I# J
( f. O D& a9 S '读所有内容到数组# D F% d, _: B j
For j = 1 To 列数: z' _4 D- }; l" F2 y
内容(i, j) = rs_maxcut.Fields(j).Value
. x0 D8 G. [, b: L- \* ~ D Next2 H. t: `8 M: [% L4 ]( q; m0 J
( S" U# |! L7 Z6 s0 t- d5 |/ B6 Y rs_maxcut.MoveNext '下一行& ?! ]: p0 C v! ]3 [% h
Loop
$ k6 O% K' o) N( s0 G4 J5 y rs_maxcut.Close '关闭
8 L3 L' I' x- l2 \% {" b, I
: k" Q; w& y8 w) `
- A6 o: a$ ~+ [( }6 W List1.Clear: @, h6 O; f3 Z D6 Y9 ?9 _
For i = 1 To 行数# C' [1 `, u) \. @7 G3 Z, A# r# ~
For j = 1 To 列数& Y8 x0 K/ m, b6 p. t
If j = 1 Then
/ ~: y5 H: `! T& X* k str = 内容(i, j)
- V3 z( y+ L# _* x" ]- c Else" Y% s$ [3 k% b; l a, L
str = str & " , " & 内容(i, j): B# J1 L8 T7 z2 Z- E/ S
End If
% K$ @/ u1 V5 v* S' i+ [- s! A Next5 U1 Y4 `2 D# L
List1.AddItem str$ p2 R% u' T! {- e
Next
/ a D2 u+ P1 \+ Z, M
5 W# m9 ]6 f1 r0 u+ P End If0 j7 I, g* ^. {! b- x7 Y
) k+ v$ A X6 x
2 {, e+ u" q# M& l6 PEnd Sub" b" }9 j2 T" u7 f/ ]$ Y8 q1 u
1 B( Y0 A1 p/ j9 Z! u0 N! Y5 ^: YPublic Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)
U& H, I& w) h+ H On Error Resume Next
* C/ x" `5 |. R1 {. _ Dim i As Long
3 ~$ p) Z& l; `" Q2 Q" h i = 0
1 _3 q9 b: p1 k
+ o3 s+ R- M3 H" C, Y. y+ S% Bconn.Open cnn '连接数据库
: L& X1 E8 \. Z% \6 {$ |( j+ M S. U \: c- |
'sql = "select * from test"
7 V( e% m. v; F0 C8 A, V, a/ Q. u, L, R4 _/ f& M$ J' O
rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集4 t8 Y) F0 O0 n/ b- P7 ?, i8 n
" |! M( y' \) W9 K' v
If rs_maxcut.EOF = False Then* ?: X' e! h9 R1 Q
- r& I7 _1 p' v8 c, U. Y6 [' n& v Do While rs_maxcut.EOF = False8 X5 G; i- |' i E
i = i + 1# i0 [& Y, A5 ]/ |( G
- C0 g; {& W6 {$ i
'不要去修改 第一行 或者 第一列的内容 因为他们属于标题: r) I0 A* I- B9 c; }& m
! y5 b! p0 o3 `3 ?) Y If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列( ?. a5 V. N# `" `
" `, w7 [) x' u2 C If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列& ^: Z% q8 H8 L& g
2 S* ~ u$ t$ K% s& o rs_maxcut.MoveNext
9 L7 _* s$ q: Y5 f/ }4 t# C$ D5 _. z, N( O- C/ ]8 t. c: g
Loop
|0 a3 T6 E1 P$ v+ X/ h) j! A# k. i
rs_maxcut.Update
0 g* J4 K5 r3 ?& o% A# k rs_maxcut.Close! v3 U+ O/ j* m! Z) z. i
* B7 Q7 X5 b3 p" a6 Z: w* Q
End If0 O& y% \( E2 R: \7 }
% M& ^! t; u% y/ G0 ]+ JEnd Sub; z" Y7 Y7 D! e' Z; v2 A. l
1 m2 O3 D- e6 I- p- z2 }
! j$ W w; H' q& N: S S6 E0 s" T( B1 h. R
, M {; I3 T* w$ B1 W% I |
|