国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Data控件及對dbf表的編程

2014-09-01 07:44:02張參軍
新媒體研究 2014年11期
關(guān)鍵詞:控件示例語句

張參軍

摘要Basic是早期編程的入門語言,結(jié)構(gòu)緊湊,易上手。隨著可視化平臺VB的推出,增加和鞏固了用戶群。VB對小型數(shù)據(jù)庫編程,有一定的優(yōu)勢,同時可以使用的控件很多,Data控件就是其中之一。Data控件連接數(shù)據(jù)庫,可以實現(xiàn)大量的數(shù)據(jù)管理功能。Foxpro是早期記錄集處理編程語言,隨著VF平臺的推出,dbf數(shù)據(jù)格式的應(yīng)用日益廣泛。Data控件及其dbf表的操作,需要處理的問題及其思路,在此做一個簡單的闡述,希望能給日常編程帶來幫助(假設(shè)Data控件名是Data)。

關(guān)鍵詞Data控件;連接;切換;刪除;更改;索引;復制;查詢

中圖分類號:TP3 文獻標識碼:A 文章編號:1671-7597(2014)11-0131-02

1Data連接的建立

1.1 直接連接

指定要連接的表的路徑、類型、表名稱。VB支持的數(shù)據(jù)類型較多:access、foxpro、dBase、Excel、Lotus等,支持最好的是access表。記錄集類型有三種:0對應(yīng)table,就是表;1對應(yīng)dynaset,2對應(yīng)snapshot。

示例:連接安裝路徑下ku目錄中ys200.dbf表

Data.Connect = "FoxPro 2.0"'表的類型

Data.DatabaseName = App.Path & "" & "ku" '表的路徑

Data.RecordSource = "ys200"'表名稱

Data.RecordsetType = 0 '記錄集類型

1.2 通過變量連接

經(jīng)常需要暫時斷開當前的表連接,將Data指向另一個表進行操作。操作結(jié)束后,再通過變量實現(xiàn)Data與原表的連接。下面示例原表名稱提取到變量ybming中,以及Data控件與ybming變量中保存的原表名的連接。

ybming = Data1.RecordSource '提取原表名稱到變量

Data.DatabaseName = App.Path & "ku" '重定位表路徑

Data.RecordSource = ybming '重建表連接

Data1.RecordsetType = 0

2Data連接的斷開與切換

Data控件沒有提供斷開表連接的方法,應(yīng)用中使用表的切換(重定向)的方法實現(xiàn)斷開的目的,比如讓Data連接到一個目前不會引用的表上,示例略過。

3表的復制與索引的建立

使用復制函數(shù)Filecopy復制表和索引文件,得到的復制表和原表結(jié)構(gòu)相同,得到的索引文件也不會發(fā)生變化,仍保持和復制表的對應(yīng)關(guān)系。如果使用sql語句復制,得到的索引文件和表文件不對應(yīng),必須重建索引。如果復制Data目前引用的表,需要先做表連接的切換,釋放當前表的引用,獲取復制權(quán)限。

3.1 Filecopy復制

Filecopy函數(shù)使用廣泛,在此不做說明,使用參看下面的示例。

示例:復制c盤下aa表(未引用)及其索引文件到c盤下bb表

FileCopy"c:aa.dbf", "c:b.dbf" '復制dbf文件

FileCopy"c:aa.cdx", "c:b.cdx" '復制索引文件

3.2 sql復制

要執(zhí)行sql語句,先[引用]Microsoft DAO2.5/3.51 Compatibility Library,然后定義、初始化Database庫對象,借助庫對象提供的方法,實現(xiàn)復制。

示例:復制c盤下ku目錄中表aa.dbf、索引aa.cdx文件為對應(yīng)的bb文件

Dim dbs As Database'定義庫對象

Dim sql As String '定義執(zhí)行sql語句的字符變量sql

Set dbs = OpenDatabase("c:ku", False, False, "FoxPro 2.0")

sql = "select*intobb.dbffrom aa.dbf"'初始化aa

dbs.Execute sql '執(zhí)行復制

sql = "create index 名次 on bb.dbf(名次)" '初始化aa

dbs.Execute sql'創(chuàng)建字段"名次"的索引

創(chuàng)建必要字段的索引后,同名索引文件bb.cdx隨即產(chǎn)生。

4表記錄的添加、修改、更新與刷新

Data控件提供了記錄集方法,可以追加、修改表記錄,然后使用更新方法,使記錄變動從內(nèi)存轉(zhuǎn)移到記錄,產(chǎn)生實際效果。使用更新方法,必須在使用添加、編輯方法的前提下,否則系統(tǒng)拒絕執(zhí)行更新操作。刷新方法,重取表中記錄和數(shù)據(jù)綁定控件對應(yīng),同時定位第一條記錄為當前記錄。

添加代碼:Data.Recordset.Addnew

修改代碼:Data.Recordset.Edit

更新代碼:Data.Recordset.Update

刷新代碼:Data.Refresh

5表記錄的刪除

Vb中沒有提供徹底刪除記錄的方法,用Data控件記錄集方法delete,只是給符合條件的記錄打上了刪除標記。要徹底刪除記錄:先使用sql的select語句建立和當前表結(jié)構(gòu)一致的臨時表;然后用記錄集方法delete從原表刪除記錄;再使用sql的insert語句將原表剩余記錄追加到臨時表;釋放并刪除原表;重命名臨時表為原表,完成刪除操作。示例刪除c盤ku目錄下aa表中性別為"女"的記錄:

ybming = Data1.RecordSource '提取原表名稱到變量

Dim dbs As Database '定義庫對象

Dim sql As String '定義執(zhí)行sql的字符變量

Set dbs = OpenDatabase("c:ku", False, False, "FoxPro 2.0")

sql = "delete*fromaa.dbfwhere 性別='女' "

dbs.Execute sql'從aa.dbf中清除性別為"女"的記錄

sql = "select*intols.dbffromaa.dbf"

dbs.Execute sql'產(chǎn)生結(jié)構(gòu)相同的表ls.dbf,同時添加剩余記錄

……'建立ls表索引的代碼

…… '重定向Data到其他數(shù)據(jù)源,為刪除做準備

Kill "c:aa.dbf"'刪除aa.dbf

Kill"c:aa.cdx" '刪除aa的索引文件

sql = "select*intoaa.dbffromls.dbf"

dbs.Execute sql '由ls.dbf重新產(chǎn)生aa.dbf

…… '建立aa表索引的代碼

…… '重建Data到aa的連接

endprint

6表記錄的查詢

查詢使用的記錄集方法有find、seek兩種,找到后自動定位符合條件的第一條記錄為當前記錄;不能復合查詢;find查詢沒有seek查詢速度快。seek方法主要對表操作,查找前必須指定當前的索引字段。sql語句功能強大,可以復合查詢,找到后也定位符合條件的第一條記錄為當前記錄,但是查找字段必須為索引字段,無需專門指定。復合查詢要注意查詢字段、查詢對象的類型,以及查詢條件等是否放在變量中。多表聯(lián)動查詢,可參考相關(guān)資料,在此略過。

6.1 seek查詢(find查詢略過)

示例:查詢aa中性別為”女”的記錄

Data.Recordset.Index =”性別” ‘指定當前索引字段

Data.Recordset.Seek“=”,”女” ‘seek查詢

(Data.Recordset.Seek“=”,xb ‘seek查詢,查詢對象在變量xb中的情況)

6.2 sql單一條件查詢

6.2.1 直接查詢

示例:查詢aa中性別為"女"的記錄

定義庫對象、sql字符變量并初始化,然后執(zhí)行sql語句實現(xiàn)查詢

Dim dbs As Database '定義庫對象

Dim sql As String '定義執(zhí)行sql的字符變量sql

Set dbs = OpenDatabase("c:ku", False, False, "FoxPro 2.0")

sql= "select*intols.dbffromaa.dbfwhere 性別='女' "

dbs.Execute sql

6.2.2 通過變量查詢

查詢的對象放在變量中,這時注意,查詢的對應(yīng)字段是字符型還是數(shù)值型,則對應(yīng)的sql語句對變量的引用方法不同。假設(shè)變量名是aa,當前表名放在變量ybming中,兩種引用方法示例如下(查找性別為"女"的記錄):

字符型的情況:

aa = "select*intols.dbffrom" & ybming & "where 名次= " & aa & "

數(shù)值型的情況

aa = "select*intols.dbffrom" & ybming & "where 名次= '" & aa & "' "

6.2.3 sql復合條件查詢

復合查詢要考慮查詢字段、查詢對象的類型,以及查詢字段、查詢條件、查詢對象是否在變量中,不同情況對應(yīng)的方法不同。

假設(shè)表名稱變量是ybming,字段變量是ziduan1(字符型)、ziduan2(數(shù)值型),條件變量是tiaojian1、tiaojian2,對象變量是duixiang1(字符型)、duixiang2(數(shù)值型),邏輯條件放在變量luoji中,示例如下:

aa = "select*intols.dbffrom" & ybming & "where" & ziduan1 & "" & tiaojian1 & "" & duixiang1 & " " & luoji & "" & ziduan2 & "" & tiaojian2 & " '" & duixiang2 & "'"

7表記錄的排序

排序使用sql語句的order by子句完成,默認升序排列,降序使用Desc參數(shù);排序同樣需要考慮查詢字段的類型,以及查詢字段、查詢條件、查詢對象是否在變量中,是否復合查詢,不同情況對應(yīng)的方法不同。

假設(shè)條件同六中6.2.3,按照"用時"字段排序,示例如下:

7.1 order by直接排序

aa = "select*into ls.dbffrom" & ybming & "where" & duixiang1 & "" & tiaojian1 & "" & duixiang1 & " " & luoji & "" & duixiang2 & " " & tiaojian2 & " '" & duixiang2 & "' order by 用時"

7.2 通過變量排序

排序字段“用時”放在變量yongshi中的情況

aa = "select*into ls.dbffrom" & ybming & "where" & duixiang1 & "" & tiaojian1 & "" & duixiang1 & " " & luoji & "" & duixiang2 & "" & tiaojian2 & " '" & duixiang2 & "'order by" & yongshi & ""

借助Data控件,結(jié)合其他記錄集方法,能滿足日常的數(shù)據(jù)處理需求,特別是Data控件和數(shù)據(jù)綁定控件的結(jié)合,呈現(xiàn)給用戶的是更直觀的管理效果。Data控件使用中有一定的局限性,這受制于VB平臺本身對數(shù)據(jù)處理的能力,比如記錄的刪除。VB的ADO數(shù)據(jù)控件有較好的操作靈活性,使用方法基本同Data控件。使用Data控件,借助VB對dbf表操作,是窺探和學習數(shù)據(jù)管理編程的一個窗口和方法。

參考文獻

[1]宋廣群,姚成.vb程序設(shè)計[M].中國科學技術(shù)大學出版社,2006.

[2]林卓然.VB語言程序設(shè)計[M].電子工業(yè)出版社,2009.

[3]黃振軒、宋衛(wèi)海、林立松.vb程序設(shè)計與數(shù)據(jù)庫[M].電子工業(yè)出版社,2007.

endprint

猜你喜歡
控件示例語句
大還是小
重點:語句銜接
2019年高考上海卷作文示例
常見單位符號大小寫混淆示例
山東冶金(2019年5期)2019-11-16 09:09:22
“全等三角形”錯解示例
關(guān)于.net控件數(shù)組的探討
軟件(2018年7期)2018-08-13 09:44:42
精彩語句
如何搞定語句銜接題
語文知識(2014年4期)2014-02-28 21:59:52
就這樣玩會VBA中常見的自定義控件
電腦迷(2012年24期)2012-04-29 00:44:03
作文語句實錄
大英县| 改则县| 灵山县| 清远市| 北海市| 岐山县| 始兴县| 莱州市| 广元市| 中西区| 通化市| 福建省| 乌拉特前旗| 昌平区| 潮安县| 台中县| 和林格尔县| 谷城县| 宁都县| 襄城县| 惠州市| 九龙坡区| 轮台县| 怀仁县| 浪卡子县| 双桥区| 灵川县| 泰和县| 土默特左旗| 凉城县| 平凉市| 郴州市| 井陉县| 平顶山市| 昭苏县| 乌审旗| 新田县| 万山特区| 松江区| 盐城市| 临西县|