999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Data控件及對dbf表的編程

2014-09-01 07:44:02張參軍
新媒體研究 2014年11期
關鍵詞:方法

張參軍

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

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

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

1Data連接的建立

1.1 直接連接

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

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

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

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

Data.RecordSource = "ys200"'表名稱

Data.RecordsetType = 0 '記錄集類型

1.2 通過變量連接

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

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

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

Data.RecordSource = ybming '重建表連接

Data1.RecordsetType = 0

2Data連接的斷開與切換

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

3表的復制與索引的建立

使用復制函數Filecopy復制表和索引文件,得到的復制表和原表結構相同,得到的索引文件也不會發生變化,仍保持和復制表的對應關系。如果使用sql語句復制,得到的索引文件和表文件不對應,必須重建索引。如果復制Data目前引用的表,需要先做表連接的切換,釋放當前表的引用,獲取復制權限。

3.1 Filecopy復制

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

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

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

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

3.2 sql復制

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

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

Dim dbs As Database'定義庫對象

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

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

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

dbs.Execute sql '執行復制

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

dbs.Execute sql'創建字段"名次"的索引

創建必要字段的索引后,同名索引文件bb.cdx隨即產生。

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

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

添加代碼:Data.Recordset.Addnew

修改代碼:Data.Recordset.Edit

更新代碼:Data.Recordset.Update

刷新代碼:Data.Refresh

5表記錄的刪除

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

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

Dim dbs As Database '定義庫對象

Dim sql As String '定義執行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'產生結構相同的表ls.dbf,同時添加剩余記錄

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

…… '重定向Data到其他數據源,為刪除做準備

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

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

sql = "select*intoaa.dbffromls.dbf"

dbs.Execute sql '由ls.dbf重新產生aa.dbf

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

…… '重建Data到aa的連接

endprint

6表記錄的查詢

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

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字符變量并初始化,然后執行sql語句實現查詢

Dim dbs As Database '定義庫對象

Dim sql As String '定義執行sql的字符變量sql

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

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

dbs.Execute sql

6.2.2 通過變量查詢

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

字符型的情況:

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

數值型的情況

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

6.2.3 sql復合條件查詢

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

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

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

7表記錄的排序

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

假設條件同六中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控件,結合其他記錄集方法,能滿足日常的數據處理需求,特別是Data控件和數據綁定控件的結合,呈現給用戶的是更直觀的管理效果。Data控件使用中有一定的局限性,這受制于VB平臺本身對數據處理的能力,比如記錄的刪除。VB的ADO數據控件有較好的操作靈活性,使用方法基本同Data控件。使用Data控件,借助VB對dbf表操作,是窺探和學習數據管理編程的一個窗口和方法。

參考文獻

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

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

[3]黃振軒、宋衛海、林立松.vb程序設計與數據庫[M].電子工業出版社,2007.

endprint

猜你喜歡
方法
中醫特有的急救方法
中老年保健(2021年9期)2021-08-24 03:52:04
高中數學教學改革的方法
河北畫報(2021年2期)2021-05-25 02:07:46
化學反應多變幻 “虛擬”方法幫大忙
變快的方法
兒童繪本(2020年5期)2020-04-07 17:46:30
學習方法
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
最有效的簡單方法
山東青年(2016年1期)2016-02-28 14:25:23
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 欧美特黄一免在线观看| 又大又硬又爽免费视频| 五月天久久综合| 精品三级网站| 午夜激情婷婷| 亚洲精品天堂在线观看| 欧洲熟妇精品视频| 国产在线98福利播放视频免费| 国产精品视屏| 亚洲国产高清精品线久久| 久久99热66这里只有精品一| 国产精品亚欧美一区二区三区| 亚洲Aⅴ无码专区在线观看q| 欧美激情,国产精品| 无码免费的亚洲视频| 一级黄色网站在线免费看| 伊人成人在线| 久夜色精品国产噜噜| 亚洲日本一本dvd高清| 国产成人h在线观看网站站| 国产成人盗摄精品| 91色爱欧美精品www| 免费啪啪网址| 国模私拍一区二区| 色吊丝av中文字幕| 国产国拍精品视频免费看| 日韩精品久久无码中文字幕色欲| 亚洲成a人片| 午夜精品久久久久久久99热下载| 92午夜福利影院一区二区三区| 伊人AV天堂| 91亚洲视频下载| 新SSS无码手机在线观看| 99热最新网址| h视频在线播放| 国产亚洲欧美在线人成aaaa| 亚洲不卡影院| 91成人试看福利体验区| 精品久久人人爽人人玩人人妻| 天天综合色天天综合网| 亚洲精品波多野结衣| 久久精品人人做人人| 久草视频一区| 国产成人永久免费视频| 国产特级毛片aaaaaa| 尤物午夜福利视频| 亚洲三级视频在线观看| 欧美亚洲香蕉| 亚洲系列无码专区偷窥无码| 日本三级欧美三级| 欧美成人a∨视频免费观看| 本亚洲精品网站| 五月婷婷综合色| 色精品视频| 免费av一区二区三区在线| 亚欧美国产综合| 国产亚洲精品在天天在线麻豆| 亚洲中文精品人人永久免费| 88av在线| 亚洲国产成人久久精品软件 | 人妻无码中文字幕一区二区三区| 久久这里只有精品23| 精品少妇人妻无码久久| 91免费国产高清观看| 日本国产精品| 中文字幕无码电影| 国产成人精品视频一区视频二区| 日韩中文无码av超清 | 亚洲精品国偷自产在线91正片| 色窝窝免费一区二区三区 | 久久精品亚洲热综合一区二区| 成·人免费午夜无码视频在线观看| 国产精品精品视频| 亚洲天堂网视频| 国产男女免费完整版视频| 国产欧美视频综合二区| 无码在线激情片| 性网站在线观看| 全色黄大色大片免费久久老太| 亚洲日韩高清在线亚洲专区| a毛片基地免费大全| 波多野结衣AV无码久久一区|