|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
c# c++ vb 是可以互相调用的) L4 w- X! w3 ]
% P4 i! N! i+ tvb操作access数据库 的方法
. m& ~0 ~- j9 H, Y( ^0 R+ n+ c
! p) t9 F/ [+ _ {" _: O/ f首先要安装 Office2003sp2
9 b- G C" E" A% F0 j8 s9 x& l0 P' E1 Q$ J0 |8 U* a% E* Z
列子:读写数据库(.mdb)( Y+ M5 ?) P" E3 e4 g
( ^# K0 v: z: P$ q2 Y$ j0 i. w1.创建 mdb6 r3 `4 F: S% p4 a
开始->所有程序->Office2003->Access 2003 新建一个空数据库 保存位置C:\report.mdb
! }0 {" _; K0 X5 i2 Q创建一个表格 并重新命名为test (操作和Excel类似)
; P3 M0 @2 X1 |6 E& `( P, U9 @# i5 z$ ^, s% v
注意 表格名称 和源代码要对应
! L* o3 ?& _3 ]2 Z* H0 w7 s: x3 Z) p; h1 N: }) U
3 ` r5 C6 r/ n& R2.注册数据源(代码中已经注册)和写代码
: [0 P. x! m) H& s+ H7 d; `8 [" ~, B- O
9 O# e; q* p' J1 B6 A- R" m' T% k
在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
$ p* x4 z% L8 s5 t9 ^ D我们必须点击菜单中的【工程】-【部件】,+ _7 S2 ?+ C5 T* t- L7 w0 @9 `( W
在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和# o. L# `3 N+ @, w, P) V2 v, e% Y
“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”,
. F6 s2 c+ ]$ m: _9 u; G$ j$ M! _9 b最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
0 i; q$ g& V4 m: n! k
7 c# O& V& D ]; u
8 }# o" I% K7 B, b7 N t添加4个文本控件 Text1 和 Text2 和 Text3 和 Text4 ) }% m$ C, E* x/ e) e
添加一个按钮 ID修改成 “保存”
% \ k/ {# ]9 Q* q% ?8 h z添加一个 List1( D! M' f2 \6 P4 a7 ]
, M: e; J4 ~9 h7 a& |2 W" \代码如下
, f. v7 e( I% U6 y! _, U1 M
6 x3 h7 w! R) q! ~) r$ Y, | d* A2 ?" L
Public conn As New ADODB.Connection '标记连接对象# O Q2 V% o7 z9 _3 a1 S
Dim sql As String
# {* \0 L6 H$ \" ]" z5 q9 ^4 oDim rs_maxcut As New ADODB.Recordset8 ]/ V9 s m! v4 T7 g0 g( u$ Z+ O
Dim str As String
" u9 S- @ Z+ o: F! _! I# uDim aa As Double, bb As Double* J: R0 f Z/ h2 B' @; a
Dim mbd As String
, F( |' ~8 c# IDim 总页数 As Integer, 行数 As Integer, 列数 As Integer, r( H4 X5 A! J3 z) X! z
Dim 内容(999, 999) As Double
) d' l6 |1 t% s: r y6 J7 ^# Q" A
, S R# j9 |- x, E" fPublic Function cnn() As String
, D% t: T( H8 T6 p+ L; C" `8 F7 [ cnn = " rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & " ersist Security Info=True;Jet OLEDB atabase Password=123"
* z, o+ ^8 L/ K, VEnd Function) J- y+ X% z* g- W
& m) A- p9 ? Z. q/ TPrivate Sub 保存_Click()
7 E9 P4 Y) D: n: o( r
( A$ F% L$ t! w6 L9 b# a writeDatabase
# ~: F6 L4 R, m1 m j/ c1 q End
3 r+ }5 X$ L0 d; z5 ?. ]& O* CEnd Sub
- B; c2 X7 q/ N- A0 p0 `
( m5 X J$ g; NPrivate Sub Form_Load()
$ D; v) M" H5 S0 G6 p/ \$ h' i' o8 q
mbd = "D:\UG_OPEN\ini\数据库.mdb"
- N* u: w* l& t2 z* O# p6 l! x! z2 `) C" Y5 q. w0 i
conn.Open cnn '连接数据库* X, m+ S- B, i* z( @
readdatabase# L- K1 O5 k" I3 L9 j4 u# b `; W6 R
Me.Text1.Text = "行数" & 行数
n( A6 c( c8 X Me.Text2.Text = "列数" & 列数% O7 _7 y$ \, k9 T* g1 i X7 A3 c2 ?
Me.Text3.Text = aa& \; C7 \, v* A& F# z0 m8 p) [
Me.Text4.Text = bb
5 ?% B# N5 d# mEnd Sub
, y- w! y: i3 ?+ y% v% P; o! u! B& n0 h, _) A) ?! o3 b% v
Public Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)
+ x* H" \' X s1 C# P Dim i As Long+ [" ]+ K5 |6 z5 Z
sql = "select * from test"# E4 v- Z7 ^; O- M$ x8 k1 n+ n
rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集" O: z; N) N( C
1 d( `2 a; c, q. {3 a, G9 _
1 |6 G2 h7 _3 W6 U总页数 = rs_maxcut.PageCount '页大小rs_maxcut.PageSize& t% W9 ^8 E! M! ~6 v
行数 = rs_maxcut.RecordCount '行数 (排除标题)
( O! w: @. g o- H" l, V6 D; D列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题)3 h: k- t6 B, D
" z, [, ^7 ~- e7 f R If rs_maxcut.EOF = False Then( \$ S1 i+ q8 Y# @6 i
i = 0
; c' y, z: |/ h5 v2 L! v Do While rs_maxcut.EOF = False
/ X% h. p& d: _, {' g; R2 ? i = i + 1
6 {5 k5 m4 `0 w$ B* V. J# q
/ T f; C9 Y5 P* f; x: @ ?4 t! C ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标
# t3 j$ D- T* _2 V, W; A. k0 q, C
'第一行 或者 第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的1 L( `4 E% q. O- @( d4 H( A, j$ I
' i" r7 z( [! |6 ]3 R$ [( t) @6 @ }+ g
If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列3 g! r( L* \ I& }0 [" M+ c& H
If i = 2 Then bb = rs_maxcut.Fields(1).Value '除去标题后的,第1行第2列0 M, Q D1 t0 O/ ]5 m
& \! w' z; z6 N0 Z2 B
'读所有内容到数组
" h+ B6 S6 o) O! ] For j = 1 To 列数- d0 j0 q$ x }; E9 X- S. N
内容(i, j) = rs_maxcut.Fields(j).Value# y" s G2 W6 D. _7 [
Next
M9 X0 X$ S; T
' {& g( x3 d* }7 z- T9 d" f* _ rs_maxcut.MoveNext '下一行
! E7 k8 Q. t; z2 [" j/ m Loop
+ ]/ @+ c; @3 P$ z$ P9 B; e rs_maxcut.Close '关闭
. e1 S9 J- w+ p6 _! ]* m
m- f: {7 h' _0 c4 s: r3 i* _$ L( q4 V5 \
List1.Clear
) F0 P- {$ V3 n7 i. p( P For i = 1 To 行数3 H' v* Z0 i5 L. ]1 r
For j = 1 To 列数
. k5 e' Y6 T) K% d+ R5 L, a; p If j = 1 Then: q6 A' C3 g& X
str = 内容(i, j)
; r/ R9 x' q/ D6 n9 K Else, q+ q1 Y8 [5 y" s$ e. ]
str = str & " , " & 内容(i, j)
0 }) E) {8 r! S) Y- R: e) } End If
3 n, z6 T/ @% ~' U. k' Y Next3 K( }/ Q" g8 `9 t& i6 {" {
List1.AddItem str
0 L9 Q8 [; \5 F+ M8 F7 Z+ t Next
& \5 E. _! o0 u& G( l8 _! H+ W( v7 z
End If
. q' q6 y+ U8 O5 q3 i4 y* Q# |
( }. U) A% w f9 l \% X: W# h0 b+ o4 Z
End Sub
( p! O; D" q. x* }4 d) ?7 u! p J" K- `( e) S+ @4 R
Public Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)* \6 d( k& l( k7 p
On Error Resume Next
$ t- D" _7 i* Y Dim i As Long
9 K% G6 g) N7 J- F6 T0 O: K8 Y2 d3 X. [4 m i = 0
: D' A" [1 ?6 U" y9 o' j, ~6 |; [* c& k4 }3 H
conn.Open cnn '连接数据库
, B- W5 h% k8 p, [" p- T) A
# a7 ?& [' i5 \'sql = "select * from test"8 y4 m" e- F8 C8 ^+ w8 t4 I+ T
& E. C, o- @+ m/ J8 l# s3 u. D rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集
& A* I3 @/ G3 q
, ~ q: j' G- p* g( K: B% G If rs_maxcut.EOF = False Then
0 o% G- s* N4 H: j! u; y4 [* s8 \' i3 U
Do While rs_maxcut.EOF = False2 i/ _5 E O$ y/ v- n% {
i = i + 1& O1 H: T" V6 c( x9 {$ k3 f) _
: O4 L/ k' @! \8 |; K- n% q! L '不要去修改 第一行 或者 第一列的内容 因为他们属于标题1 _# }) x2 D3 B7 `% d* Y
9 I, f& v% f/ c; ?9 O. `) j If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列
: b' r+ f$ `' B Q8 @
7 B5 b, Q! x" j/ d( Q' }: i If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列( H9 g$ G O$ o! g+ `7 x% Q
4 p& ^5 z! l( E
rs_maxcut.MoveNext7 L* N/ F$ y4 c& C6 n5 e7 {
a2 j, K6 T) w
Loop4 s8 z0 _. e9 ~ N9 f. N
6 D0 [" k' b1 P5 I) K
rs_maxcut.Update. A/ Q) ]9 _$ J# |- i! m) i3 F
rs_maxcut.Close2 O& X7 G# I' T. h; q
. r7 c! S7 @( @" a2 l5 d End If
7 O/ [9 q7 t( e# R5 D8 |* a0 n4 i* t6 H2 ? `) I
End Sub& \2 ~' M& K- I2 x2 z: w1 U
% C0 {( u0 B3 v% ?+ G
- j' r+ g( k- b+ t3 R. b, M
0 d( R. j4 {* Z% ^# J m
5 D' B6 i0 y+ K, G# f& B |
|