vb与数据库 经验分享

操作方法

  • 01

    vb与数据库(一)DAO介绍榜首章 初识DAO啥是DAO?DAO即是Database Access Object,数据库拜访目标的英文缩写。在VB中供给了两种与Jet数据库引擎接口的办法:Data控件和数据拜访目标(DAO)。Data控件只给出有限的不需编程而能拜访现存数据库的功用,而DAO模型则是悉数操控数据库的完好编程接口。Data控件将常用的DAO功用封装在其间,它与DAO控件的联系就好象内存与CACHE之间的联系相同,所以这两种办法并不是互斥的,实践上,它们常一起运用。 DAO模型是描绘联系数据库体系布局的目标类的调集。它们供给了完结办理一个联系型数据库体系所需的悉数操作的特色和办法,这其间包含创立数据库,界说表、字段和索引,树立表间的联系,定位和查询数据库等。 Visual Basic中的数据库编程即是创立数据拜访目标,这些数据拜访目标对应于被拜访物理数据库的不相同有些,如数据库、表、字段和索引等,一起用这些目标的特色和办法来完成对数据库的操作,以便在Visual Basic窗体中运用绑定和非绑定控件来显现操作成果并接纳用户输入。 Visual Basic经过DAO和Jet引擎能够辨认三类数据库: ■ VisualBasic数据库 也即是*.MDB数据库 ■ 外部数据库 它们是运用几种盛行格局的“索引次序拜访办法(ISAM)”数据库,这些盛行格局包含Btrieve、dBASEIII、dBASEIV、Microsoft FoxPro versions2.0和2.5以及Paradox versions 3.x和4.0。在Visual Basic中能够创立和操作一切以上格局的数据库。也能够拜访文本文件数据库和Microsoft Excel或Lotus1-2-3电子表格。 ■ ODBC数据库 包含契合ODBC规范的客户/服务器数据库,如Microsoft SQL Server。要在Visual Basic中创立真实的客户/服务器运用程序,能够运用ODBC Direct直接把指令传递给服务器处置。也即是说Visual Basic还撑持其它不运用Jet数据库引擎的数据拜访办法。数据拜访目标的ODBC Direct形式答应运用相同的目标模型和语法绕过Jet引擎直接拜访ODBC数据。 由上面的叙说可知,关于编程人员来讲,你只须知道DAO的运用,对详细的数据库体系无须做深化的讨论,就可对简直任何一种数据库进行操作,“以不便应万变”, 而对数据库文件本身的物理操作,将由相应的数据库引擎把数据拜访目标上的这些操作转换为对数据库文件本身的物理操作,这些引擎来处置一切与各种数据库的接口。 第二章 DAO的布局 上一章咱们知道了DAO是啥,它能够干啥,以及简略的知道了它是怎么完成这一功用,这一章咱们讲逐渐学习DAO的布局。在将讲这一章之前,首要讲两个题外话: 面向目标编程 咱们对面向目标编程必定不生疏,但终究啥是面向目标编程,许多人一会儿也说不出个所以然来;在VB的DAO中又是怎么表现面向目标的呢,恐怕即便是运用了一段VB的网友也很难说清。这也难怪,VB本身并不是个彻底的面向目标的编程环境,它的许多如动态数组等就不是面向目标的,但在DAO中是彻底的面向目标的。其实面向目标的开始思维即是将数据和操作封装在一起,构成目标,而在DAO中正是表现了这一点,它将数据的值作为特色,数据的查询作为办法,数据值的改动作为事情,彻底封装在DAO目标中,期望诸位盟友在运用中注意,逐渐领会面向目标的编程办法。 数据库前端开发体系和后台体系 常常由兄弟说他会DELPHI,会PB,实践上用前端和后台的概念来看,他们都只是会一种前端开发工具罢了,严厉说起来并不能算会数据库的开发。咱们往往只看到前台运用的功用而无视了后台体系的运用,或许以为这两者根本即是一回事。前端后台概念用在单机上,即是VB与Access,用在网络中即是VB与SQL Sever,只会VB或DELPHI是不能称为把握数据库编程的,而且在编程中,要长于运用后台数据库供给功用,这样的程序运转起来更快,程序更精练。 题外话讲完,如今切入正题。第三章 运用Recordset目标 这一章解说Recordset目标的运用,之所以将其作为榜首个作为解说,是由于最常用的即是这个目标,运用好这个目标,VB大有些的数据库编程功用就把握了。 一、Recordset目标的创立 在DAO目标一览图中咱们能够看到Recordset目标是Database目标的子目标,那么在树立Recordset目标之前需求先树立Databsse目标,这就如同在C++中要先树立父类才干树立子类相同,这里有些读者能够会问,在Database目标上还有两层目标不需求树立吗?在VB的数据库编程,DBEngine目标是最尖端的数据库拜访目标,有点象JAVA中的超类概念,是不需求树立,其他DAO目标都是对它的承继,至于Workspace目标,VB中缺省树立了一个,若是不描绘到多个数据库环境的话(例如:在程序中一起运用ODBC和Jet),是不需求关怀的。在处置了这个疑问咱们还需求将Jet3.5动态衔接库参加工程中才干界说Recordset目标,进程如下: 1、选中“工程”菜单的“引证”,呈现如下图所示的窗口 选中画圈的有些即引证了Jet3.5的库,若是你的程序需求兼容Jet2.5的数据库则选中下图画圈有些 在做好这几步之后就能够在程序中创立Recordset目标了。 2、创立Recordset 目标变量 1)首要,有必要声明一个 Recordset 类型的变量,然后将变量设置为 OpenRecordset 办法回来的目标。 2)OpenRecordset 办法在 Database、Connection、TableDef、QueryDef 以及现已存在的 Recordset 目标中运用。     Connection 和 Database 目标的 OpenRecordset 办法的语法如下:Set variable = database.OpenRecordset (source [, type [, options, [lockedits ]]])其它一切类型的目标的 OpenRecordset 办法的语法如下:Set variable = object.OpenRecordset ([type [, options [,lockedits ]])其间: variable 参数是新的 Recordset 目标的称号。      database 参数是一个翻开的 Database 或许 Connection 目标的称号,可用该目标创立新的 Recordset 目标。object 参数是一个 TableDef、QueryDef 或许现有的 Recordset 目标,咱们用该目标创立新的 Recordset 目标。source 参数指定新的 Recordset 目标的记载来历。source 的值将变成新发作的 Recordset 目标的 Name 特色的值。用 Connection 或许 Database 目标创立新的 Recordset 目标时,source 参数能够是数据库中现有的 TableDef 或 QueryDef 目标,或许为一个有用的、回来行的 SQL 查询或句子。若是用 TableDef、QueryDef 或许现有的 Recordset 目标创立新的 Recordset 目标,那么目标本身将为新的记载集供给数据源3)type、options 和 lockedits 参数 type参数可选表 可选参数 dbOpenDynaset dbOpenSnapshot dbOpenForwardOnly dbOpenDynamic dbOpenTable参数阐明 Recordset目标表类型 Recordset目标快照类型 Recordset目标仅向前类型 Recordset目标动态类型 Recordset目标动态集类型 options参数可选表 可选参数 dbAppendOnly dbReadOnly dbSeeChanges dbDenyWrite dbDenyRead参数阐明 只能新增 只读 修正确定 制止其它用户写 制止其它用户读补白 仅对动态集 仅对Microsoft Jet 作业区 仅用于动态集类型的记载集 仅用于Recordset目标 仅用于表类型的记载集可选参数 dbForwardOnly dbSQLPassThrough dbConsistent dbInconsistent参数阐明 仅向前快照 source是SQL 共同更新 不共同更新补白 仅用于Microsoft Jet数据源 仅用于快照 仅用于动态集类型和快照类型 仅用于动态集类型和快照类型 lockedits 参数可选表 能够运用 lockedits 参数操控对记载集的确定。可用以下常数。 常数 描绘dbReadOnly 制止用户对记载集进行修正DbPessimistic 在多用户环境中,运用保管式确定来决议修正记载集的办法DbOptimisticValue 运用依据行值而非行 IDs 的优化并发。仅用于 ODBCDirect 数据源 4)Recordset目标的类型 Recordset 目标有五种类型:表、动态集、快照、动态和仅向前表类型的 Recordset 目标是指当时数据库中的本地表或许 Microsoft Jet 创立的外部数据库。在创立表类型的记载集时,数据库引擎翻开实践表,后续的数据操作都是直接对根本表进行的。只能对单个的表翻开表类型的记载集,而不能对联接或许联合查询翻开。 若是运用根本表创立的索引,就能够对表类型的 Recordset 目标进行索引。与其它类型的 Recordset 目标比较,表类型的查找与排序速度最快。定位特定的记载时,Seek 办法要快于 Find 办法。动态集类型的 Recordset 目标能够是本地的或许衔接的表,也能够是回来的行查询成果。它实践上是对一个或许几个表中的记载的一系列引证。可用动态集从多个表中获取和更新数据,其间包含衔接其它数据库中的表。动态集类型具有一种与众不相同的特色:不相同数据库的可更新联接。运用这种特性,能够对不相同类型的数据库中的表进行可更新的联接查询。动态集和它的根本表能够相互更新。若是动态会集的记载发作改动,相同的改动也将在根本表中反映出来。在翻开动态集的时分,若是其他的用户修正了根本表,那么动态会集也将反映出被修正过的记载。动态集类型是最灵敏的 recordset 类型,也是功用最强的。不过,它的查找速度与其它操作的速度不及表类型的 Recordset。快照类型的 Recordset 目标包含的数据是固定的,它反映了在发作快照的一会儿数据库的状况。从 Microsoft Jet 数据源得到的快照是不行更新的,从敞开数据库互连 (ODBC) 数据源得到的某些快照是能够更新的,这取决于后端数据库的才干。 与动态集类型和表类型的 Recordset 目标比较,快照的处置开支较少。因而,它履行查询和回来数据的速度更快,特别是在运用 ODBC 数据源时。需求注意的是,关于 .mdb 文件,在快照顶用指针表明 Memo 和 Long Binary 字段中的数据。仅向前类型的 Recordset 目标,有时被称为“向前翻滚快照”或许“仅向前快照”,供给了快照的一有些功用。它供给了最根本的 Recordset 目标功用,可是通常能够到达最快的速度。与快照相似,从 Microsoft Jet 得到的仅向前类型的 Recordset 目标是不行更新的。别的,仅向前的快照只答应在记载中向前移动,而不能向相反的方向移动。这种类型的 Recordset 目标不能被仿制,而且只撑持 Move 和 MoveNext 办法。动态类型的 Recordset 目标是从一个或几个根本表中查询到的成果集,关于回来行的查询,能够在其间增加、修正或删去记载。别的,其它用户对根本表的增加、删去和修正操作也将出如今您的记载会集。这种类型对应于 ODBC 的动态游标。5)缺省的记载集类型 DAO 能够依据记载集的数据源类型,以及翻开记载集的办法,主动地设置缺省的记载集类型。因而,通常不需求指定记载集类型。可是,能够在 OpenRecordset 办法中指定 type 参数,以撤销缺省的类型。依照翻开记载集的办法,下表中列出了可用的类型和缺省的类型。■    运用 Database 目标的 OpenRecordset 办法:    Set rstNew = dbs.OpenRecordset("Data Source")    若是 Data Source 为数据库中的本地表,那么能够用表类型、动态集、快照和动态类型的 Recordset 目标,缺省的记载集类型为表类型。若是 Data Source 为其它类型,那么只能运用动态集和快照类型的 Recordset 目标,动态集类型为缺省的类型。■    运用 TableDef 目标的 OpenRecordset 办法。    Set rstNew = tdfTableData.OpenRecordset    若是 tdfTableData 指的是 Microsoft Jet 数据库 (.mdb) 中的表,或许直接翻开的 ISAM 数据库,那么一切的五种类型都是可用的,表类型的记载集为缺省的类型。若是 tdfTableData 在 ODBC 数据库中,或许是外部数据库中的衔接表,那么只能用动态集和快照类型的 Recordset 目标,动态集类型为缺省类型。■    运用 QueryDef 目标的 OpenRecordset 办法:    Set rstNew = qdfQueryData.OpenRecordset    只能运用动态集和快照类型的 Recordset 目标,动态集类型为缺省的类型。■    运用现有的 Recordset 目标的 OpenRecordset 办法:    Set rstNew = rstExisting.OpenRecordset    只能运用动态集和快照类型的 Recordset 目标。缺省的类型为现有的记载集的类型,在上例中,即 rstExisting 的类型。 6)详细创立Recordset目标的比如 鄙人面的比如中能够用到一些还未讲到的东西,但由于运用的比较简略,信任咱们仍是能够了解。①以表为根底创立记载集用根本表创立 Recordset 目标的办法,取决于该表关于当时数据库是本地表,仍是坐落另一个数据库中的衔接表。用本地 Microsoft Jet 数据库中的表创立记载集下列程序代码运用 OpenRecordset 办法为一个表创立了表类型的 Recordset 目标:Dim dbs As Database, rstCustomers As Recordset Set dbs = OpenDatabase("Northwind.mdb")Set rstCustomers = dbs.OpenRecordset("Customers")请注意,创立表类型的记载集时无需运用 dbOpenTable 常数。若是省掉了 type 常数,DAO 将依据数据源和用来创立记载集的目标的类型,挑选最恰当的 Recordset 目标类型。当从本地表翻开记载集时,能够运用表类型的记载集,DAO 将运用它。②用其它数据库格局的衔接表创立记载集下列程序段为衔接的 Paradox 3.x 表创立了一个动态集类型的 Recordset 目标。当从非 Microsoft Jet 数据库中的衔接表翻开记载集时,表类型是不能运用的,因而,DAO 的运用功率仅次于它的动态集类型。Dim dbs As DatabaseDim tdfNonJetLinked As TableDefDim rstTableData As Recordset ' 翻开数据库并创立 TableDef。Set dbs = OpenDatabase("Northwind.mdb")Set tdfNonJetLinked = dbs.CreateTableDef("PDXAuthor") ' 衔接到名为 Author 的 Paradox 表,该表坐落数据库' C:\PDX\Publish。tdfNonJetLinked.Connect = _    "Paradox 3.X;DATABASE=C:\PDX\Publish"tdfNonJetLinked.SourceTableName = "Author" ' 衔接该表。dbs.TableDefs.Append tdfNonJetLinked ' 为该表创立动态集类型的记载集。Set rstTableData = tdfNonJetLinked.OpenRecordset()若是先翻开 Paradox 数据库,则可直接翻开 Paradox 表。 ③以查询为根底创立记载集也能够依据存储的挑选查询来创立 Recordset 目标。鄙人例中,“Current Product List”是保管在当时数据库中的一个挑选查询。Dim dbs As Database, rstProducts As Recordset Set dbs = OpenDatabase("Northwind.mdb")Set rstProducts = dbs.OpenRecordset _    ("Current Product List")若是当时并不存在存储的挑选查询,OpenRecordset 办法答应运用 SQL 字符串替代查询名。上例能够改写为以下程序段:Dim dbs As Database, rstProducts As RecordsetDim strQuerySQL As String Set dbs = OpenDatabase("Northwind.mdb")strQuerySQL = "SELECT * FROM Products " _    & "WHERE Discontinued = No " _    & "ORDER BY ProductName;"Set rstProducts = dbs.OpenRecordset(strQuerySQL)这种办法的缺陷在于,每次运转时都需求先编译查询字符串,而存储的查询只是在初次保管时编译一次,所以功能较佳。注意 若是在 Microsoft Jet 顶用 SQL 字符串或许存储的查询创立 Recordset 目标,那么,在查询回来了记载集的榜首行今后,程序才会持续运转。在查询运转的时分,最好在状况栏中显现出恰当的音讯。若是运用 ODBCDirect,能够指定 dbRunAsync,它使查询在后台履行,运用程序能够持续履行其它句子。 (二) 拜访Microsoft Jet数据库拜访其它Microsoft Jet数据库(.mdb)中的数据,包含用M1crosoft Jet的老版别建的各种数据库。 1.衔接外部 Microsoft Jet表为了在本地 Microsoft Jet数据库中衔接外部Microsoft Jet表,能够先用OpenDatabase办法翻开本地Microsoft Jet数据库,树立一个TableDef目标,并设置该目标的 Connect和SourceTableName特色,以别离指定期望衔接的外部Microsoft Jet表的途径和称号。这种办法适用于Microsoft Jet 1.x,2.x和3.x数据库。 例:编写程序衔接外部MicrosoftJet表。在窗体上画一个指令按钮,然后编写如下事情进程: Private sub Commandl_C1ick()Dim dbsJet As DatabaseDim tdfExtemalJetTable As TableDef‘翻开Microsoft Jet数据库Set dbsJet=OpenDatabase ("C:\dbdir\db1.mdb")’树立TableDef目标Set tdfExtemalJetTable=dbsJet.CreateTableDef ("LinkTable")’设置衔接信息 tdfExtemalJetTable.Connect=";DATABASE=" & "d:\dbtest\dbtest.mdb" tdfEXternalJetTable.SourceTableName="tb" ’追加TableDef目标以创立衔接 dbSJet.TableDefs.Append tdfExtemalJetTable ’显现承认信息 MSgBOx "F1nishedlinhng" & tdfEXternalJetTable.SourceTableName & ".",0 End Sub 该例衔接了外部Microsoft Jet表,然后显现一个信息框作为承认。注意,当衔接运用Microsoft Jet数据库引擎的外部数据库时,不能用源数据库类型作为衔接字符串。本例中的衔接字符串以一个分号最初,而不是以源数据库类型最初。阐明: (1)树立了对一个表的衔接之后,就能够像处置其它Access表相同来运用衔接表。可是应注意,在引证衔接表时,不要运用表的初始名,而应运用衔接该表时为其分配的名字。关于上面的比如来说,所树立的衔接表为LinkTable,能够用下面的句子翻开这个表: Set MyTable=MyDB.OPenReCordset(“LinkTable“,dbOPenTable) (2)在衔接一个外部表后,若是企图再次衔接该表,将会显现犯错信息。因而,在运转一个衔接外部表的程序时,应保证要树立的衔接表不存在,或许在处置完后免除衔接。能够用TableDefs调集的Delete办法免除衔接,例如: MvDB.TableDefs.Delete”LinkTable“2.翻开外部Microsoft Jet表能够用OpenDatabase办法直接翻开外部Microsoft Jet表,别离用途径、独占拜访值、只读值和数据源称号作为参数。 例:编写程序,翻开外部MicrOsoftJet表,并输出表的内容。在窗体上画一个指令按钮,然后编写如下的事情进程: Private Sub Command1_Click()Dim dbsExtemalJet As Database Dim rstAccounts As Recordset FontSize=12 ’翻开名为dbtest的外部MicrosoftJet数据库Set dbsExtemalJet=OpenDatabase ("d:\dbtest\dbtest.mdb",False,False,"") '翻开tb表中的Recordset Set rstAccounts=dbsExtemalJet.OpenRecordset("tb") Print Tab(2); "名字"; Tab(14); "地址"; Tab(32); "电话"; _ Tab(44); "邮政编码" Print DO Until rstAccounts.EOF Print rstAccounts.名字; " "; Print rstAccounts.地址; Print Tab(30); rstAccounts.电话; Print Tab(44); rstAccounts.邮政编码 rstAccounts.MoveNextlooprstAccounts.closedbSEXtemalJet.Close End sub 该例翻开了一个外部Microsoft Jet表,然后从该表中树立Recordset目标,并输出表中的悉数记载。Microsoft Jet Xbase IISAM驱动程序撑持下列版别的Microsoft FoxPro:2.0,2.5,2.6,3.0和DBC。当经过Microsoft Jet数据库引擎拜访FoxPro数据库时,还应当思考Microsoft Jet怎么处置FoxPro数据类型、已删去的记载、FoxPro索引和补白字段。为了在Microsoft Jet中拜访FoxPro数据库,应指定恰当的衔接信息,包含: (1)源数据库类型:能够是下列中的一个: ·FOXPro 2.0 ·FOXPro 2.5 ·FOXPro 2.6 ·FOXPro 3.0 ·FOXPro DBC (2)数据库称号:目录的完好途径,在该目录中包含各种期望拜访的FoxPro文件(关于Microsoft FoxPro DBC,该途径有必要包含.dbC文件的称号。) (3)源表称号:表的称号。在Microsoft Jet中,把FoxPro的一个数据库文件(.dbf)看作是一个表,因而,指定表称号实践上是指定.dbf文件。在运用时,应去掉扩展名.dbf;若是运用带有扩展名的完好的文件名,则须用数码符号 (#) 替代文件扩展名之前的点(.);关于Microsoft FoxPro DBC,则应运用DBC中的表名。 1.衔接FoxPro数据库 为了将FoxPro数据库衔接到Microsoft Jet数据库,能够先用OpenDatabase办法翻开本地的Microsoft Jet数据库,树立TableDef目标,并设置该目标的Connect和SourceTableName特色,然后别离指定要衔接的FoxPro数据库(表)的途径和称号。 例:编写程序,衔接FoxPro数据库。在窗体上画一个指令按钮,然后编写如下事情进程: Private Sub Command1_Click()Dim dbsJet As Database Dim tdfFoxTable As TableDef ’翻开MicrosoftJet数据库 Set dbsJet=OpenDatabase ("C:\dbdir\db2.mdb") ’树立TableDef目标 Set tdfFoxTable=dbsJet.CreateTableDef ("LinkedFoxPro Table") ’设置衔接信息 tdfFOXTable.Connect= "FOxPro 3.0; DATABASE=a:\" tdfFOxTable.SourceTableName="zf01" ’追加TableDef目标以创立衔接 dbSJet.TableDefs.Append tdfFoxTable ‘显现承认音讯 MSgBOX "Finished linking" & tdfFOXTable.SourceTableName & ".",0 End Sub 该例衔接了外部FoxPro 3.0的表,成功后显现承认音讯框。 2.翻开FoxPro表 如前所述,能够用OpenDatabase办法直接翻开外部Microsoft FoxPro表,其参数别离为途径、独占拜访值、只读值和数据源类型。 例:编写程序,翻开FoxPro表,并显现其内容。 前面的比如衔接了一个FoxPro表,该表坐落A盘的根目录下,名为zf01.dbf。能够在“可视化数据办理器”中翻开该表。咱们用下面的程序翻开该数据库,然后显现它的内容。在窗体上画一个指令按钮,然后编写如下程序: Private Sub Command1_Click()Dim dbsFox As Database Dim rstAccounts As Recordset ,翻开外部FoxPro数据库 Set dbsFox=OpenDatabase ("a:\",FalSe,False,FOXPro 3.0") ’从zf01表中树立Recordset目标 Set rstAccounts=dbsFox.OpenRecordset("zf01") printDO Until rstAccounts.EOFPrint rstAccounts.mc; " ";print Tab(15); rstAccounts.zd;Print Tab(25); rstAccounts.jz;print Tab(35); rstAccounts.jg;print Tab(45); rstAccounts.rq;print Tab(55); rstAccounts.lC;Print Tab(60); rstAccounts.dzrstAccounts.MoveNextLooprstAccounts.ClosedbsFOX.Close End Sub 该例翻开了一个外部FoxPro 3.0表,然后从该表中树立Recordset目标,最终在窗体上输出表的内容。程序运转后,单击指令按钮,将显现数据库zf01.dbf的内容。 3.将FoxPro数据类型转换为Microsoft Jet数据类型 运用程序在读取数据时,Microsoft Jet将每个FoxPro数据类型转换为相应的Microsoft Jet数据类型,其对应联系见下: Foxpro数据类型 Microsoft 数据类型 character text Numeric,Float Double Logical booleandate date/timememo memoGeneral long BinaryDouble* doublecurrency* currencyinteger long datetime* data/time (注:*只用于Microsoft FoxPro 3.0 和 Microsoft FoxPro DBC。) 4.处置己删去的记载 当在运用程序中删去FoxPro表中的记载时,该记载被加上删去符号,可是该记载并没有从表中移走,由于在表被紧缩之前FoxPro不会发现符号为删去的记载。不能经过Microsft Jet紧缩FoxPro表,有必要紧缩FoxPro数据库以从物理上移走记载。虽然加了删去符号的记载实践上并未从源数据库中移走、但它们也不会出如今运用程序中,由于Microsoft Jet能够主动筛掉符号为己删去的记载。若是期望符号为删去的记载出如今数据会集,有必要将Windows注册表中\HKEY_lOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.5\Engines\Xbase键的Deleted值设置为False,而且有必要重新启动运用Microsoft Jet的运用程序,以反映记载被删去的状况。 5.处置FoxPro索引 运用恰当的FoxPro索引文件(.idx或.cdx文件),能够进步Microsoft Jet对各种FoxPro表的拜访速度。经过树立与FoxPro数据库同名的文本文件并加上.inf文件扩展名,能够在.inf文件中指定索引文件。假定有一个名为Sales.dbf的FoxPro数据库文件,为了树立相应的.inf文件,可按如下进程操作: (1)树立文本文件Sales.inf。 (2)在文本文件的榜首行,指定数据库类型,并把它放在方括号中。例如,为了指定 FoxPro 3.0的索引,能够键入: [FoxPro 2.0] (3)对数据库的榜首个索引赋予一个索引号。榜首个索引记为IDX1,第二个记为 IDX2,以此类推。若是要为FoxPro数据库指定组合索引文件(.cdx),则应运用形如CDX1, CDX2等的索引号。若是在索引号之前加上字符“U”,则能够指定仅有索引。 (4)在索引号之后加上一个等号,再加上要指定的索引文件名(包含扩展名)。注意, 在该项中不能有任何空格。例如,要指定索引custname.idx作为榜首个索引,而仅有索引 custno.idx作为第二个索引,则应在文件中增加下面的项: IDX1=custname.idx UIDXl=custno.idx (5)重复第(3)步和第(4)步,直到指定完数据库表的一切索引。完结后的.inf文 件看起来像下面这样: [FOxPro 3.0] IDX1=custname.idx UIDX1=custno.idx (6)将.inf文件保管在FoxPro数据库地点的目录下。 若是不能将.inf文件与数据库存储在同一目录下,或许为了保护便利而期望将一切的文件存储在一个同享的目录下,则能够树立一个指向存储.inf文件途径的Windows注册表项,即在Windows注册表中树立INFPath项,这能够经过在注册表修正器中手艺增加一个字符串注册表值来完成。其办法是:翻开Windows注册表的\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.5\Engines\Xbase键,履行“修正”菜单中的“新建”,然后单击“字符串值”,输入INFPath作为称号,再在“数据”列输入该.inf文件的完好的目录或许网络途径。为了运用该设置值,应保管修正后的注册表,并重新启动运用Microsoft Jet的运用程序。 注意,FoxPro数据库中的数据常常改变,因而MicrosoftJet也要常常更新索引文件。若是FoxPro数据库与Microson Jet树立了衔接,或许FoxPro数据库是在Microsoft Jet数据库中翻开的,则只要在这些索引对Microsoft Jet数据库相同有用的状况下,才干使其与FoxPro数据库相关联。此外还应注意,在没有更新相关联的引证(例如Windows注册表中的INFPath项)前,不要删去或许移动索引文件或.inf文件。若是Microsoft Jet不能取得最新的索引信息,则不能正确地处置查询。 6.处置补白字段 FoxPro数据库的补白字段是存储在文件体系中而不是数据库中。若是期望翻开或衔接具有补白字段的FoxPro数据库,则应保证补白文件与数据库文件存放在同一目录下。否则会发作犯错信息。(实时过错 ‘3166’; 不能定位所需的Xbase补白文件。)

(0)

相关推荐

  • vb入门教程 经验分享

    VB教程:序文-不再游戏咱们需求啥 咱们需求啥?当咱们在一个精彩的游戏国际中游历了一番之后,或是惊叹于某一东西软件的细巧精美之余,多少总会发作少许编程的激动.编程吗,在曾经若是你对电脑仍是一个外行人, ...

  • Centos 6.3安装Cassandra数据库经验分享

    Centos 6.3安装Cassandra数据库经验分享

  • 如何减少重装系统的概率,个人经验分享

    重装系统一直以来都是我们在处理系统问题不得已而做的事情,也是很多时候由于文件损坏和中毒而不得不系统重装。而我今天要分享的不是什么有效避免电脑中毒或者文件损坏,而是当你遇到这些问题的时候,如何让你不用通 ...

  • 关于迅雷看看的几点经验分享

    关于“迅雷看看”的几点经验分享(高手无视,新手看着玩) 我有点看电影的习惯和爱好,昨晚看的是《上帝也爱开玩笑续集》,看完后感觉还可以,于是就打算从缓存中提取下来收藏。 一)隐藏分区自动图片居中 本来想 ...

  • 百度知道发帖技巧及留网址经验分享

    百度贴吧自从诞生以来逐渐成为世界最大的中文交流平台,这里为您提供一个表达和交流思想的自由网络空间. 贴吧里每天有无数新的思想和新的话题产生,“将你的思想赠送朋友,你们将各得到两种思想”,只要您使用中文 ...

  • 大海贼冒险岛转职经验分享

    游戏名:大海贼冒险岛 01 版本:v1.0.9 汉化版 更新时间:2014-01-01 大小:10.5MB 而面对游戏里高达四十多种职业可供玩家选择,众多职业可谓是五彩缤纷,但面对超多精典职业,想必又 ...

  • 《帝国时代2》游戏攻略与经典视频经验分享

    <帝国时代2>游戏攻略与经典视频经验分享帝国时代2:帝国时代(Age of Empires II:The Age of Kings)是获得高度评价的即时战略游戏帝国时代(Age of Em ...

  • 《丧尸围城2》游戏基础介绍与视频经验分享

    <丧尸围城2>游戏基础介绍与视频经验分享<丧尸围城2>,是近几年来CAPCOM最让我感到惊喜的一款作品了.鲜艳而扎实的画面,加上超有趣的游戏设计,各种恶搞和无厘头的创意,让玩家 ...

  • 《爱丽丝》游戏基础介绍与经典视频经验分享

    <爱丽丝>游戏基础介绍与经典视频经验分享<爱丽丝:疯狂回归>是一部动作冒险游戏.玩家将扮演一名来自疯人院的患者小爱丽丝,她努力在与自己不太正常的精神做斗争的同时,去了解自己的过 ...