|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
c# c++ vb 是可以互相调用的 n9 S( L' Y# r m
" I" L( S8 j. X# V Jvb操作access数据库 的方法
6 i5 m& G, o8 b( K% v! u8 |' ~$ |+ B. n
首先要安装 Office2003sp2
: B# f, `! d9 V2 j3 K) \& u4 I! D7 }# U( [" W
列子:读写数据库(.mdb), i% z% J% V5 u; W! X0 c/ |( ^9 F- _3 N
4 ~* U' `) _- G. s: T( d1.创建 mdb$ y3 c% G, {$ r
开始->所有程序->Office2003->Access 2003 新建一个空数据库 保存位置C:\report.mdb . N( l3 `5 ~( s: k; E
创建一个表格 并重新命名为test (操作和Excel类似)3 s. D/ q3 M2 }& C' |2 ?
& N+ b: ^. o( e/ ^ ^$ L4 O注意 表格名称 和源代码要对应# n- X( z. t: n) F `6 w# F
. V% B! H" O2 J2 c1 [* [
& a- O* w/ {' x( {& O* S
2.注册数据源(代码中已经注册)和写代码' v2 `1 S8 y; u& K1 Y- t
% y, y9 N! G8 L& R* p4 B# g! _! s% g$ U V
在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,
" V6 X: e) `1 `; X2 B3 \我们必须点击菜单中的【工程】-【部件】,9 \- P$ K+ L. s. R+ l& F
在对话框中勾选“Microsoft ADO Data Control 6.0 (SP6)”和
4 I6 x) G; T w“Microsoft Hierarchical FlexGrid Control 6.0 (SP4)”," r! S5 ^ Z# {3 c
最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了
r$ I% ^, ^8 S5 k! c4 d' }- k
& \. y0 g' \: M7 [1 g4 k2 {% @
9 Q0 |! A5 |+ }* k添加4个文本控件 Text1 和 Text2 和 Text3 和 Text4
6 q: r3 ~, R! a) o2 j4 o* \: N添加一个按钮 ID修改成 “保存”
" f( [( p# Z9 M# J1 n添加一个 List1
( t4 h* D6 F7 D1 \; B& }
% t* r( n! |" [8 r P# h1 P代码如下
3 k- E. n& E! y4 N7 {! ^" c0 l8 Y; x% t$ q6 p2 _5 K
2 L j4 m' ^4 ?, X ?
Public conn As New ADODB.Connection '标记连接对象. ~2 T0 Q X4 f7 V K
Dim sql As String
, g$ O9 F$ f" b$ m* ]% Q$ ` iDim rs_maxcut As New ADODB.Recordset' }$ K7 J* w9 k8 f. K2 r5 R
Dim str As String
5 P8 R( w2 q, sDim aa As Double, bb As Double" B1 f( s1 v: F$ c! ?& c
Dim mbd As String5 v5 i3 O' u9 g' _
Dim 总页数 As Integer, 行数 As Integer, 列数 As Integer6 L, n5 N( C( z: B" p
Dim 内容(999, 999) As Double
1 j# R" B, T6 k7 G$ h4 N
# L! R9 ]% E! N& C6 }Public Function cnn() As String+ f" T, ~% L i. i& X
cnn = "rovider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mbd & "ersist Security Info=True;Jet OLEDBatabase Password=123"! p6 R5 p8 E" i
End Function
9 D: g3 ~2 J6 }( a8 k4 s n& f J( i6 d! o) t
Private Sub 保存_Click()9 e5 ]8 C$ s: L1 ]$ D9 J' r
8 q, t" Q- W& E6 G( d writeDatabase
5 p' w2 J' |5 R1 z8 q( A- C* n" w End1 d/ U; J7 G( s8 }7 x) V
End Sub
2 i/ @& V3 t5 @2 p, p( m
+ C- t% r7 ]/ o' w, M( \5 G3 y: L; oPrivate Sub Form_Load()
0 ?# ~7 z* N3 X" Y: W4 E' ]' t& L+ l$ J& ]- D
mbd = "D:\UG_OPEN\ini\数据库.mdb"- u! y: @ J# p9 _" ?- s
: g5 {! f: i3 Y2 ?
conn.Open cnn '连接数据库/ u- e; r+ B! F8 g
readdatabase
9 U7 I7 k. g* L$ A- E. l) T3 { Me.Text1.Text = "行数" & 行数
h7 @$ F: R- Q' b6 z Me.Text2.Text = "列数" & 列数, d, ]- x. J" e) z
Me.Text3.Text = aa
, ?0 e$ U5 X/ LMe.Text4.Text = bb/ M" @; `' g, ~
End Sub
+ q8 ^ k6 o: U( \/ c; Z# o/ t4 a# x$ S- @
Public Sub readdatabase() '读数据 (读数据和保存数据实际上是一样的操作方法)
2 ]9 Z" U, C$ B Dim i As Long. u2 N: A. U+ l; A% o
sql = "select * from test"4 Z8 k, H( W- l" ^$ I
rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集
% v7 ?& f K3 I% X$ T+ k2 R1 u5 ~" ^, I. R& `& b3 D" R5 z- ]
* W; F. T4 @$ q3 \* r2 \总页数 = rs_maxcut.PageCount '页大小rs_maxcut.PageSize! N# N, q# K9 p$ X
行数 = rs_maxcut.RecordCount '行数 (排除标题)
% t- m& N. Y2 v5 T' U8 k9 c列数 = rs_maxcut.Fields.Count - 1 '列数 (排除标题) [( C9 X, B) o2 L0 v. ^/ @
D2 S3 n5 G0 K& j2 B5 X e If rs_maxcut.EOF = False Then& F7 k1 R. O4 f
i = 03 f6 ^" M) s+ ]4 j
Do While rs_maxcut.EOF = False) z9 Q! t+ V+ X4 x( K7 y
i = i + 1
( `) r7 C! E! ?: m) L
. n$ R% N" M" `% r$ u1 w ' If i = 0 Then str = rs_maxcut.Fields(0).Name & rs_maxcut.Fields(1).Name '读标
5 S& G+ o2 d# d. n. w* V" n
6 r7 y4 r$ j- o '第一行 或者 第一列的内容 他们属于标题 所以不管是行列我们都是重第二行或列开始的
' x% M$ |6 f) S! b% a. k. ^0 ~/ D `9 _' M5 Z& w# N5 J
A$ D/ _5 q: \
If i = 1 Then aa = rs_maxcut.Fields(1).Value '除去标题后的,第1行第1列
" l( E1 n& U* j$ Y If i = 2 Then bb = rs_maxcut.Fields(1).Value '除去标题后的,第1行第2列$ Q; W; w9 {# _% L: Z
7 B' `0 c* l+ M7 w
'读所有内容到数组# O( |: z0 ?. G7 b
For j = 1 To 列数$ {$ t8 u& o4 X+ a; Y
内容(i, j) = rs_maxcut.Fields(j).Value
6 H n S% R, ^/ Q' J8 w$ u Next
, {7 ?& n. \& C7 c% G' Y
# v" J3 D! T0 i+ |! \# I rs_maxcut.MoveNext '下一行4 d$ w1 f( t8 ~* u( R( r3 k5 O
Loop5 s3 |( G5 f: |
rs_maxcut.Close '关闭
; f( k% E% r. \& A$ I5 x, Y5 b2 e0 `. ]3 z" `2 v3 D# a6 k" p
+ o+ \% H, N. V7 r9 _1 e' S$ A
List1.Clear
% V7 ]! v3 }( l7 g For i = 1 To 行数+ `7 F. |! U, @% w" q8 l
For j = 1 To 列数
$ l: O8 O" d* H6 J7 \' p% ? If j = 1 Then, z/ Y8 x. x' f0 t) X, I- |1 b/ Y
str = 内容(i, j)
B3 o. H3 x! N% Y7 s, k* o Else8 A2 S2 a8 W( ]3 J, K
str = str & " , " & 内容(i, j)% B+ [. R) O" W3 o
End If
5 ~9 Q* K1 ]8 ~9 X) ~5 P8 K9 N Next7 a; A2 Y$ P7 I$ X1 N; q7 P: g
List1.AddItem str7 n( f/ j: [) ]+ V1 `& B* b! n
Next* @3 x0 I: m6 c
" r- j# Z) z) `2 P( ~
End If
5 L( s" O0 {; V9 ?( ~; @$ i( N0 [7 Y& ]: D. M2 w: `' y [
5 g; V/ E* N* G7 P$ ?( c. C y' c/ k
End Sub: L+ w* z, [: y! w. `
8 u3 z. o$ I( l; MPublic Sub writeDatabase() '保存数据(读数据和保存数据实际上是一样的操作方法)
4 z6 |* E" ]5 M5 T V' h On Error Resume Next
! D+ k- |/ w% w" ^. ~# o3 s$ H Dim i As Long
' I0 K& w1 u4 G4 R# i- H i = 0
/ G" M1 ?3 e2 j9 y) ?( j. G Z. R" |4 ?4 K: g: J5 w+ b- t, l3 R
conn.Open cnn '连接数据库
H# ?: u" O! l6 q0 @7 k) p( G$ _& ~ H
'sql = "select * from test"
4 K+ |: k( o0 S0 O8 E, h3 E A9 r" L
rs_maxcut.Open sql, conn, adOpenKeyset, adLockPessimistic '打开记录集
8 O7 N: K; B3 n; E1 t' y/ r
; W% O* g. m) B, ] If rs_maxcut.EOF = False Then+ y( K: @4 h( D* H; a! r
* G8 C0 S3 z, Y4 N- E- K
Do While rs_maxcut.EOF = False
4 }6 T9 \7 F: k. u. T i = i + 1/ N4 X# T, g3 }, c. E' Y: }# \
8 R) d3 s9 O) B6 `8 _1 A '不要去修改 第一行 或者 第一列的内容 因为他们属于标题
, V8 j# R) a4 x/ E) f h5 R4 {; O+ x
If i = 1 Then rs_maxcut.Fields(1).Value = Val(Text3.Text) '编辑第2行第1列* _' z6 ^ {& N T2 ?
0 M+ L2 Z' ?% V4 Y8 o9 F If i = 2 Then rs_maxcut.Fields(1).Value = Val(Text4.Text) '编辑第2行第2列5 W, S6 r5 t9 Y( z* O, n6 Q
& @' M" ] d8 `& ]& Q* A$ G
rs_maxcut.MoveNext
1 \7 W( ^- e U4 y: f. H
8 L* q- I% w0 t% ` Loop
8 Z) R: w+ J% R% `# D- z/ `5 y5 p" k/ B' X% n9 T
rs_maxcut.Update& W, z. f( b# W& h
rs_maxcut.Close& f! R1 |' ? q+ B
/ D) w& Q' x7 @8 t6 j- a
End If- o/ p# `/ d& m& W7 v
8 E6 b+ _$ r; U5 x
End Sub% o6 S- V3 ^. S$ p
4 }- Y$ ]( q1 ], ?. R2 ]/ c+ o' @. e3 x; E! C
6 e4 u( Y& z, O: `5 k4 q
8 r7 I, c4 [+ {2 \9 i4 J |
|