|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
c# c++ vb 是可以互相调用的
' o: r6 a' x8 S5 v+ n8 Y/ r
8 B. u0 p) M: ~/ |: j- Evb操作access数据库 的方法
( g4 s7 L) o- U, U4 q+ x; l9 u M- M$ N* k8 C
首先要安装 Office2003sp2 / q, ]. k9 a7 V. ]
) a$ K+ j% S; M, X2 C; C列子:读写数据库(.mdb)
5 m; k% @% [! I6 m/ ] Z( X' }. s r
% |4 y, z- S1 s) @; { j1.创建 mdb
6 ^/ u& r- L% E6 S; A& h开始->所有程序->Office2003->Access 2003 新建一个空数据库 保存位置C:\report.mdb
9 P4 E5 O' L, R4 D创建一个表格 并重新命名为test (操作和Excel类似)
$ M; z& ? \: V! f6 q' f7 B
5 Z+ K, w7 l g注意 表格名称 和源代码要对应6 G* S# a5 J# g( c$ T8 a5 c
* m/ U, e; i6 v8 N) n1 Y" o$ r8 t/ b3 w5 j
2.注册数据源(代码中已经注册)和写代码
z& U4 K6 W0 f# I* ^2 |
0 {3 O: }9 V0 h& M8 e
$ ]2 J7 R7 Z* r1 ~: s) L' _( B在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
; L5 r; l+ K! g$ K- a: A' c: {我们必须点击菜单中的【工程】-【部件】,
1 q- H0 w. c2 j& \9 b1 v在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和 u" v& f1 q: F
“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,( A1 r% B# p A( \! q1 F" _" [
最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了8 F) e* z- |; C- N' b/ D
& y8 [$ n1 e( ^. V8 n% U3 v( ?) y' ^: _0 M2 Z
添加4个文本控件 Text1 和 Text2 和 Text3 和 Text4 ' I o2 o+ y+ i+ j2 P0 o* ?; w c3 I8 g
添加一个按钮 ID修改成 “保存”
$ f' z9 v) w; V- q添加一个 List1
& f5 Q7 N2 _% G5 t' d: i
9 L$ Y) m2 |" ]$ W4 w% u3 k( A代码如下
: W* V c) R% L
9 D1 ~- f3 u: i H. n' s9 w5 F5 K% B9 d& t6 h
Public conn As New ADODB.Connection '标记连接对象& x" D# V' B" e+ g
Dim sql As String9 w" c. z; _6 Z, Y) p' [+ O& B8 K
Dim rs_maxcut As New ADODB.Recordset
3 ]& |; B D( Y5 m- uDim str As String
- F0 e, P7 E0 [( A8 xDim aa As Double, bb As Double
, Y9 T& e- P1 g* B, U0 [Dim mbd As String7 I4 N0 v+ M9 I7 Y: V1 `7 T
Dim 总页数 As Integer, 行数 As Integer, 列数 As Integer- q* ]# _7 h, U* I2 V* g, d# @* m
Dim 内容(999, 999) As Double
/ D8 d" x7 T0 q6 T3 `& |+ l3 _
Public Function cnn() As String. t; ^) L0 ~2 l4 p" y
cnn = " rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & " ersist Security Info=True;Jet OLEDB atabase Password=123"
, A. h) J& _6 sEnd Function
5 s7 c! |; R% W2 d% q
7 h* b: u9 m H: ^Private Sub 保存_Click()
/ n) c5 a Z0 V3 f0 i, _6 ?3 t& p5 T6 V5 K9 H' v
writeDatabase
& g$ j! U2 y) ^' B Y End
w A$ p8 d( u x" pEnd Sub
: k5 b$ { H' Y, Q3 _1 J: p
- y8 A0 ~4 w) Z6 m7 |Private Sub Form_Load()7 G& y! o3 x N* Y
3 t) [& r' x( O: R; V8 h; u0 t/ q
mbd = "D:\UG_OPEN\ini\数据库.mdb"
$ p% D& T9 v8 O1 _# J0 I+ x' j2 B, R6 p
conn.Open cnn '连接数据库
# ^( g' l- j1 F" m1 u8 X$ @ readdatabase
6 G0 }' x2 ]+ M$ B% m Me.Text1.Text = "行数" & 行数' @7 y+ r$ Y3 {
Me.Text2.Text = "列数" & 列数2 R( i4 R+ v. P3 F6 ]9 E' {
Me.Text3.Text = aa' A. v, T5 J0 j( r
Me.Text4.Text = bb- _1 y( Z# @4 Q5 C; [: P
End Sub
1 D/ \: T- d/ h) H! C2 {
/ s. M$ T( c) e' P3 y% N' T; a8 SPublic Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法): Z2 s$ D' G* Z4 w
Dim i As Long
0 B5 S; B2 Y7 J2 m sql = "select * from test"
- _3 G o1 {/ C* b% t" g* ] rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集
" D8 Q X; D9 `+ Q, ^$ p1 D1 L; o" w3 H, P6 z$ m' c
4 I5 D. q$ i- ^
总页数 = rs_maxcut.PageCount '页大小rs_maxcut.PageSize, f( o6 C5 n5 p% f! o
行数 = rs_maxcut.RecordCount '行数 (排除标题)
9 n: t! N- S/ L! ]8 T8 c列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)) j7 c+ e% t* q. Y
7 R \. k4 ^* T* o# ^ l
If rs_maxcut.EOF = False Then
9 S) W2 \6 A/ {1 N' T i = 0* U6 W* {9 f. q
Do While rs_maxcut.EOF = False
% j2 ~" _/ [4 y) y2 \ i = i + 19 t: j# l- X* K; E! K
5 [+ e' K j/ P/ O
' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标
3 Z& X" p3 }, }- H0 f
# z( z3 h1 _9 f( Z% i0 M '第一行 或者 第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的/ I, C/ c5 ?& u0 y
@1 Q1 d5 w: f j) X8 n3 Q' R
7 h E- `- Y8 v If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
5 \! r* ]1 c" i/ I( _& W8 h: G If i = 2 Then bb = rs_maxcut.Fields(1).Value '除去标题后的,第1行第2列2 a: e4 a# I) \
- I4 J* u9 o. t$ _ '读所有内容到数组 O: g; t; W- _. A1 j3 p
For j = 1 To 列数
8 v4 E5 S% e/ R0 Q! m 内容(i, j) = rs_maxcut.Fields(j).Value# l, ]* F- F1 i( C0 S
Next0 t) I8 N3 h2 [. D# E# a# S5 _
, J& G/ @9 M" I6 _ rs_maxcut.MoveNext '下一行
3 U% `# d1 M, p5 o& O6 r Loop
0 T8 L. ~5 G7 C rs_maxcut.Close '关闭2 f- K: y' G$ r; R
/ y ]1 g3 R. ]' T, D. O* _& S o8 }# ^+ N# Q
List1.Clear
( `2 P: Q3 U- U$ w6 A For i = 1 To 行数8 V9 h$ w; N0 P( X5 @" y% d: ]
For j = 1 To 列数7 R k6 Q3 U8 o+ ^2 O# f+ U% h
If j = 1 Then) E& I q& l, D+ Z l
str = 内容(i, j)0 s/ }' i. J% x$ f j; y
Else
/ ?& q& W+ {8 e" h6 H. G str = str & " , " & 内容(i, j)7 A5 T4 n7 e8 z! d6 b8 A
End If
& {5 Z0 h1 x- Z: r; z# e Next
) ]# e' F+ M$ [- E. u# m% X List1.AddItem str# H7 f/ r$ J5 I
Next q. V5 j% ]4 U" c% @4 F/ i/ _
% ~; l: x8 H$ B; V6 R, d End If) T) ?, c7 S) h T4 [/ W& x
& r$ {7 J8 u- r0 Y/ J, S
" v# ?6 L% T K6 c, u3 P" W1 z
End Sub
$ R5 Z9 P I/ [" A; l
& Q1 ~ ~0 K/ j, |' [$ _Public Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)
2 J G6 f1 p& Q/ ~1 e$ g4 S On Error Resume Next
7 i3 p l0 b$ b' c D2 n- r Dim i As Long" q; y" Y, r4 L! b
i = 0' W7 q; R" u0 V
9 K7 q3 X5 S0 N: Pconn.Open cnn '连接数据库3 `9 ]1 `$ B1 d4 ^
4 f6 t; R: F4 \) i
'sql = "select * from test"
$ l2 S0 p5 J2 p# f3 t$ b/ K/ S( T" t; T: Q1 v
rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集3 o, Q+ s' e9 ~7 H
3 d# K3 r# l* u- ]1 G0 B
If rs_maxcut.EOF = False Then+ B5 q& J' f: O/ v' ]! v
6 P$ m2 Z: p. `" X
Do While rs_maxcut.EOF = False
& t8 x# F l: Z0 r i = i + 1+ l7 ^0 k d$ R3 i" q! [' p9 v
9 D* Z5 J# q7 |+ _/ [ '不要去修改 第一行 或者 第一列的内容 因为他们属于标题
5 O) o9 Y) \6 l) ^+ v( ~( m: [1 a# ?/ p7 w
If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列
1 m- a7 c* D. I L# V/ j6 V& H6 f( s$ T: U& v. @; g( B3 l
If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列
" e5 |) [2 S8 m8 i1 `) f) w( I9 V
: w; e H7 I+ v$ W$ h rs_maxcut.MoveNext0 Y" K# Y( d e9 Q+ a
3 g4 V7 _% C1 D$ P |
Loop1 P- M) W# O( g' B. E% N v/ K& H1 l
2 V5 Y, Q c0 E0 Z9 N2 a rs_maxcut.Update$ l/ ^1 w/ P, ~0 g
rs_maxcut.Close. k" N `8 K' C' F$ R/ |' [
7 t; m: y: j- @: ^% o End If s+ H( ], D; D3 b6 y9 J% o
/ n5 i6 U. o! W5 d& d' W; w# M
End Sub
5 T/ a# s6 V$ w# @
/ _& s& L' D; _- @! s: Q! r& t% h3 q, d+ J
5 s; Q2 a" T A X: o: c( Z: Z) a+ t. L
$ m# ?$ W. y3 N& M7 y |
|