|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
c# c++ vb 是可以互相调用的
- m* J) ^6 c% ^- g) @# @3 c
' r! x8 P) S! m( q5 H, wvb操作access数据库 的方法3 B( |1 L2 O* e' r0 T4 T# k
4 K0 R& _" u6 @. N& e
首先要安装 Office2003sp2
! i9 V& m: U' e# r1 ]2 L4 |4 c5 m4 v, }# E
列子:读写数据库(.mdb)4 D! o& h4 l1 T" z5 O
( n9 @4 |5 b& u
1.创建 mdb
d$ L; p4 u( \( q开始->所有程序->Office2003->Access 2003 新建一个空数据库 保存位置C:\report.mdb ! J- ?+ r$ K- U6 o' h
创建一个表格 并重新命名为test (操作和Excel类似)% X% f7 N! r4 k5 |6 r
' V) i, C. c( e# b9 j注意 表格名称 和源代码要对应- b# ?! q4 `' L' A
; c5 ^% C( E( h! k$ _# u
* Q& ^! Z' c* l# a* o2.注册数据源(代码中已经注册)和写代码
" h1 [' R7 M, ?( } K! d1 ^% \6 c X4 J+ s2 I+ u; E% u
, ]. f: B+ h; ~ t- C在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
V0 C3 I! U) n) k7 H/ z. f我们必须点击菜单中的【工程】-【部件】,) j6 i- ~6 b, V7 l
在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和
5 L9 }* v- o' _* y2 W4 u, H“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,
, x' X7 Z m; ]4 o+ W3 A最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
4 o+ s+ [! `/ H
4 w+ q' Y! I6 _1 t
( l6 S; p J$ ?3 q4 K* a# ?添加4个文本控件 Text1 和 Text2 和 Text3 和 Text4
1 Y, t+ w* y) b7 f添加一个按钮 ID修改成 “保存”
; c9 y m3 b3 W, I, Q" @6 w添加一个 List1
! C# U/ o9 v' B. w% {5 A/ M0 q. F P4 `9 {! k1 u I
代码如下
+ @; t! F% P" `
" ~( e* v! Z. W; D2 ]. h/ s( _/ E4 ^4 d5 M- t2 ]
Public conn As New ADODB.Connection '标记连接对象
$ K6 d" N; c# U* dDim sql As String
1 m6 {" \: o* }8 _Dim rs_maxcut As New ADODB.Recordset
! n: w9 o$ N( F) y$ q% G% oDim str As String2 H1 A5 z6 l0 i# Y9 G/ S
Dim aa As Double, bb As Double
& D! H. g- S7 a mDim mbd As String( Y; c7 J% q& c3 f
Dim 总页数 As Integer, 行数 As Integer, 列数 As Integer
7 Q* Q0 N# T" ^% x9 |Dim 内容(999, 999) As Double y) R+ G( n. J1 {/ O
! ^ j; @" v! Q7 f
Public Function cnn() As String
( V" ?7 M: \ |* ^4 F cnn = "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & "ersist Security Info=True;Jet OLEDBatabase Password=123"( l# E# n% T) y) T
End Function% w9 s' |3 a2 G5 |& i1 T
4 `! b% j! N' S! E: h& g+ VPrivate Sub 保存_Click(). s; o* h. S2 C* b+ o1 ?5 g
6 I2 a: J- A F- g4 V: N writeDatabase% `3 }) _7 M+ B0 o1 v3 P c
End2 j- ]' Y8 a$ _! d# A. E
End Sub
2 @" M5 B, q+ ?; x* }* s1 U8 W) \' K; K/ ^
Private Sub Form_Load()
0 G. i s- D' d" b) T
7 s7 q1 G6 Q) F mbd = "D:\UG_OPEN\ini\数据库.mdb"
4 i+ x8 Z7 `7 c$ ?
) ?* p$ f7 E* u- d conn.Open cnn '连接数据库$ Y& {4 n+ P$ e5 H5 y; F$ A; N
readdatabase
2 I |, C# G) D e1 M v Me.Text1.Text = "行数" & 行数
) W: Y' ?6 b- y* K+ l! W( _ Me.Text2.Text = "列数" & 列数8 _4 j! A/ L9 _/ C h+ j, M
Me.Text3.Text = aa
8 n( V' }: ^1 l9 ?Me.Text4.Text = bb
~5 s! I2 B, Q# s) U2 L: X( eEnd Sub
; F+ N% j3 u5 ?5 P& Z4 h* B
. J% ?# K% ^9 V* I& zPublic Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)
3 A0 k( t4 B# L2 |1 H7 w6 G0 n8 S Dim i As Long
3 Q* |, s1 k) m% Z5 O" C+ S& B sql = "select * from test" Y6 O B. D. p1 X% I& n$ I5 z
rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集
' P% K( n1 `# x8 v3 R" k
! J# a" D; D! N( ]
1 D/ w6 g1 w1 _ Y总页数 = rs_maxcut.PageCount '页大小rs_maxcut.PageSize1 [1 [3 \) k" [
行数 = rs_maxcut.RecordCount '行数 (排除标题)0 e1 x1 d" _3 X% R( [
列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)0 S7 C, b% L" L' r" l9 U
% I( C% _; t$ g' O* A8 a$ c If rs_maxcut.EOF = False Then
% f; p8 |- _0 A7 m" I) @ i = 0
8 i# ]! a, Z5 I Do While rs_maxcut.EOF = False
$ o8 U* ~1 z( h& q1 c i = i + 1# B9 c$ R: @ M* ~( s. b, j# x
9 n0 C! h( o2 h0 [) [/ Q: u ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标3 n( A: b: l. f0 q
/ v' R4 `$ P) u( n! G0 b1 v7 v) h
'第一行 或者 第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的 e8 m$ u+ ~% |7 Y
; k, M u9 \- [8 T0 B" @( @3 {$ h/ {0 ~! m
If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
* J/ e r1 u" Y, k3 K" t If i = 2 Then bb = rs_maxcut.Fields(1).Value '除去标题后的,第1行第2列
. @6 c$ u7 F: M% H. K4 z
1 p$ R# r/ `! C '读所有内容到数组
" m0 p3 d, h' l: {. q" x For j = 1 To 列数8 d9 x2 I+ G' i' V
内容(i, j) = rs_maxcut.Fields(j).Value
% E! o8 x5 z7 |9 \0 s, p Next
) o/ f- u/ Y/ g# \
0 x% { {" C: t) g) \ rs_maxcut.MoveNext '下一行
) l1 W5 W& H' h7 ~+ Q Loop4 {1 g0 ~9 H4 I! l2 O4 B/ x3 N1 @
rs_maxcut.Close '关闭
4 y) D; f+ c7 B! m) V9 J c: g
9 Z, c& e2 W9 b5 I z: B' s2 _" b) h( Z8 w+ u/ Y8 d }6 V
List1.Clear
0 q7 z; ]/ R$ G* n6 x, K4 I9 r9 W For i = 1 To 行数9 ?1 t; I- U& ~/ Z/ q; d& n
For j = 1 To 列数8 f/ M5 { R/ m. K# w7 n5 C
If j = 1 Then' |2 [) _2 y# E5 ?
str = 内容(i, j)
+ j) c4 g) N6 h" q$ o Else5 P# J" _/ h8 y+ g4 r3 K' ^: m
str = str & " , " & 内容(i, j)" z" Q* V% g" m' L6 ~" f2 o# x
End If
6 D- ~. F- A8 G3 ~" o; d Next
* f* Y: D# l0 O' ]* a List1.AddItem str
9 o# h @& p0 [% b( L* `/ c! M$ N4 G0 A Next0 V5 q5 w: i2 x/ U% `4 F$ D
3 e9 z* }' Q4 t& ^$ ]& a1 ?8 c
End If
J& p; p! f# D7 ^3 H3 T8 k# r# [( g" t+ m. l t% t5 ^3 E# T8 D
4 e* a/ d& I7 f* Y3 G7 U
End Sub
9 |3 x5 T! u8 \& Z! z4 k3 Q5 x8 I; _+ T3 X- O# v
Public Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)$ w2 ]! w O7 c0 h2 M
On Error Resume Next# Q4 w! R; J# c4 X- a5 |
Dim i As Long
$ |2 W; G1 F/ _1 g; j i = 0
( p. I) O/ `7 j; V
/ W3 l" ^$ m m& Econn.Open cnn '连接数据库
. h+ k- _9 s8 _( }8 H* q% T4 q5 y3 v
'sql = "select * from test"$ B2 U% Y3 m* M2 t
6 l3 j8 Q' T, K- g+ {6 a- ~/ L2 N" s0 X rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集: w% J* B/ F4 f! Y# N9 z P
4 T+ |# V U. {) S4 O If rs_maxcut.EOF = False Then
- }: T4 Y) g% N: C6 {% a
2 p/ r6 _, G/ }- V9 E- M Do While rs_maxcut.EOF = False
! W H/ g: T/ g0 P3 `- C" I i = i + 11 R) d" Q* W8 c8 o& B4 z% t
, @! V/ `7 W9 M/ q) p '不要去修改 第一行 或者 第一列的内容 因为他们属于标题
3 U$ ?7 {! N# d& n6 t( T; x5 F6 S% V$ M2 u1 q& N+ B6 G, x) {
If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列
5 Q7 |: v- o* k/ m5 r; c4 i* l# H- `7 T. R* y
If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列
9 Y2 U- x2 O. h! r3 ?1 `( ?+ H
3 R8 N0 J V4 _! V rs_maxcut.MoveNext& q* ^; ~* d- W. N: _
+ [# O, W/ B0 R' H( t8 a Loop& p4 Z' k6 K, [& s9 T0 s6 N$ `
1 w2 {; [( ?* B8 M K/ `" R+ e* d
rs_maxcut.Update: T3 B2 E2 R% `
rs_maxcut.Close
2 b: b0 v9 z# |" w. |0 E- Q% d2 N2 h0 e @/ W/ i9 S1 y& U0 \0 e& ?
End If' S! j4 Z! R, {3 U" Q; n/ }" U# @
$ m& u l( @; _$ o5 h' w2 I' c( n' {End Sub/ D* r) C9 Q% k9 F
% R' T j% e, U" S
1 t4 v+ D5 Y8 Q. y5 Y" N; q- z* M
4 R' S1 d/ M3 ^5 v: j8 A
( N6 ^5 q. `( ]" d2 N9 g$ B
|
|