(一)非ACCESS数据库的新建及库结构的修改 .com
VB专业版中的数据库存取对象变量可以分为两类,一类用于数据库结构的维护和管理,另一类用于数据的存取。其中表示数据库结构时可以使用下面的对象:DataBase、TableDef、Field、Index,以及三个集合(Collection):TableDefs、Fields和Indexes。每一个集合都是由若干个对象组成的,这些数据对象的集合可以完全看作是一个数组,并按数组的方法来调用。 Www^^com
一旦数据库对象建立后,就可以用它对数据库的结构进行修改和数据处理。 中国.站.长站
对于非ACCESS数据库,大部分都是对应于一个目录,所以可以使用VB的MkDir语句先生成一个目录,亦即新建一个数据库。而每一个非ACCESS数据库文件可看作是此目录下的一个数据表(Table),但实际上它们是互相独立的。 @com
下面是新建一个FoxPro 2.5格式数据库的程序实例。 Www..com
以下为引用的内容:
Sub CreateNew ( ) Dim Db1 As database, Td As TableDefsDim T1 As New Tabledef,F1 As New Field, F2 As New Field, F3 As New FieldDim Ix1 As New IndexDim Path As StringConst DB_TEXT = 10,DB_INTEGER = 3ChDir "\" Path$ = InputBox( "请输入新路径名:", "输入对话框" )MkDir Path$ ’新建一个子目录Set Db1 = OpenDatabase(Path$, True, False, "FoxPro 2.5;")Set Td = Db1.TableDefsT1.Name = "MyDB" ’新建一个数据表,数据表名为MyDBF1.Name = "Name", F1.Type = DB_TEXT, F1.Size = 20 ^com F2.Name = "Class", F2.Type = DB_TEXT, F2.Size = 20F3.Name = "Grade", F3.Type = DB_INTEGERT1.Fields.Append F1 ’向数据表中添加这些字段T1.Fields.Append F2T1.Fields.Append F3Ix1.Name = "Name" ,Ix1.Fields = "Name", Ix1.Primary = True ’新建索引T1.Indexes.Append Ix1 ’向数据库的Indexes集合中添加新的索引Td.Append T1 ’向TableDefs集合中添加新表Db1.Close ’必须先关闭数据库对象再退出End Sub 中.国站长站
在此段程序中值得注意的是,对非Access数据库的新建不用CreateDatabase函数,而是用OpenDatabase函数,这点与Access数据库大不一样,但也仅仅是针对非ACCESS数据库而言才能用OpenDatabase函数来新建一个数据库对象。 中.国.站.长.站
在VB中,外来数据库的不同格式只在OpenDatabase函数的最后一个参数Connect中有所体现,不同格式的外来数据库其Connect参数值也不同,除此以外,在VB专业版中其编程的方法和步骤及技巧是基本相同的。 Www..com
新建子目录后,不能用ChDir语句进入它,否则会出现“‘MyDB’ is not a valid path”的错误。同时,对F1、F2、F3等新建字段对象的定义也必须分别定义,否则会出现“Element not defined”(变量未定义)的错误。
通过一定的编程技巧还可以实现非ACCESS数据库的库结构的拷贝,下面是一段相应的程序。 中国站长_站,为中文网站提供动力
Function GetPos( TFname$ ) ’此自定义函数完成对带路径文件名中最后一个“\”符号的定位
以下为引用的内容:
Dim I As Integer,Tmp As StringTmp$ = TFname$For I = 0 To 255 Pos% = Pos% InStr( 1, Tmp$, "\" )E1% = InStr( 1, Tmp$, "\" )Tmp$ = Right$( Tmp$, Len(TFname$) - Pos% )If E1% = 0 Then ’找到最后一个“\”符号的位置,并记下来GetPos = Pos%Exit ForEnd IfNext IEnd FuntionSub CopyStruc( )Dim Db1 As database, Ds1 As Dynaset,Td As TableDefs, Fld As FieldsDim Fname,SourceF,DestF,Path As String,Pos1 As IntegerCMD1.Filter = "FoxPro数据库文件(*.DBF)|*.DBF|所有文件|*.*" ’CMD1为一个对话框的控制名 _com CMD1.DialogTitle = "调入Ms FoxPro数据库文件"CMD1.FilterIndex = 1CMD1.Action = 1DestF$ = InputBox$( "请输入目标文件名:", "输入对话框" )If CMD1.FileName = “ ”Or DestF$ = " " ThenMsgBox "源文件或目标文件名为空"Exit SubElseSourceF$ = CMD1.FilenameEnd IfFileCopy SourceF$, DestF$Pos1% = GetPos( SourceF$ ) Path$ = Left$( SourceF$, Pos1% ) ’获得源文件所在的路径名Fn$ = Left$( DestF$, InStr(1, DestF$, ".") - 1 ) ’获得新文件的数据库名’Fn$为实际的Foxpro数据库名,也即CreateDynaset函数内的source属性值Set Db1 = OpenDatabase( Path$, True, False, "FoxPro 2.5;" )Set Ds1 = Db1.CreateDynaset( Fn$ )If Ds1.EOF And Ds1.BOF Then ’数据库内的无记录则退出TotalNum% = 0MsgBox "此数据表为空表!"Exit SubEnd If’删除记录,保留库结构Ds1.MoveFirstDoDs1.DeleteDs1.MoveNext ~com Loop Until Ds1.EOFEnd Sub ^com
可见,拷贝库结构的方法在于把一个已存在的数据库拷贝到一个新文件中,然后再删除新文件内的所有记录,保留其库结构,得到的就是一个新建的库结构完整的空库。
(二)非ACCESS数据库的动态调入 站.长.站
在实际应用的很多情况下,经常需要在对一些事先并不知道其具体库结构的数据库进行调入、显示及打印其记录。因而实现未知格式数据库的动态调入也是评价VB数据库应用程序兼容性的一个重要标志。 中国站.长站
在VB中,网格控件非常适合用于浏览数据库中的数据,只需把数据放入网格即可。
在使用网格时动态调入的关键在于记录(Colume)内容和字段(Row)内容(包括字段的名称、类型、值等)的读取,因而生成一个可以对应于一个或多个数据表中的全部或部分记录的Dynaset对象是非常必要的。Dynaset对象还可以是一个动态查询的结果,能进行记录的增加、删除和修改等操作。 Www^^com
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



