多语言展示
当前在线:615今日阅读:113今日分享:31

VB访问数据库的方案比较

(一) 数据库复本1.多客户环境下数据库的贮存办法。在客户/效劳器体系中,应用程序通常分为两种状况:一种是把整个应用程序放到网络效劳器上,答应多个用户翻开数据库。在这种状况下,用户能够同享组成应用程序的一切数据库目标,包括存储数据的表。另一种是把应用程序分为两个数据库(双数据库):一个是包括应用程序数据表的后端数据库,另一个是包括应用程序其它目标(查询、窗体、报表、宏和模块)的前端数据库,前端数据库还能够办理暂时目标。后端数据库放到网络效劳器上,而前端数据库分发给用户,使来自后端数据库的衔接表作为前端数据库目标的根底。在多用户环境中,双数据库办法具有较为显着的优势,因为应用程序不用树立能够够与另一个用户发作抵触的暂时表。因此,在用户作业站上存储前端数据库,能够避免对暂时目标的争用;一起,因为在本地存储静态目标,因此当应用程序运转时,能够使网络通讯量削减到最小。  2.静态部件与动态部件。应用程序中的部件能够归为两类,即静态部件和动态部件。  (1)静态部件:应用程序中相对安稳,即不常常改动的有些。常用的静态部件是组成调用Microsoft Jet宿主程序的动态链接库(.dll)和可履行文件(.exe),例如Visual Basic,Microsoft Access,Microsoft Excel等。此外,应用程序中的部件,如窗体、报表和程序代码等,也归于静态部件。静态部件不常常改动,因此是作业站存储的抱负挑选。为了取得最佳功用,通常把静态目标安装在本地作业站上。这种状况下,当应用程序的描绘改动时,有必要对本地作业站上的目标进行更新。可是,若是用户作业站的磁盘空间不够用,或许期望能非常好地操控静态部件的改动,则能够把静态部件存储在网络效劳器上。这样做会显着增加网络的通讯量和下降应用程序的功用,但能够使应用程序更易于办理。当然,若是能够的话,最好把静态部件存储在用户端。把部件移到作业站上,将会给应用程序的办理带来一些费事。例如,当需求修正应用程序的静态目标时,例如修正表的布局或程序代码,有必要有相应的机制来更新每个作业站上一切受影响的部件。当作业站较多时,这种操作适当费时吃力。为了处置个疑问,能够运用下两种办法:  ·在发动应用程序时检查部件的最新版别。例如,应用程序的发动代码能够把本地数据库中静态目标的修正日期与效劳器的中心数据库中的日期进行对比,若是发现效劳器目标的日期较新,则主动输入目标的最新版别,使本地数据库坚持最新。  ·用Microsoft Jet的仿制功用使目标同步。例如,能够树立数据库的复本并把它们存储在作业站上,然后就能够经过仿制功用主动使目标同步。“数据库复本”在后面将讲到。  (2)动态部件:是一些文件,由在多用户环境中用户拜访的实践数据组成。这些文件  包括Microsoft Jet数据库(.mdb)文件、外部数据库文件(如 Microsoft FoxPro数据库文件)或存储在数据库效劳器上的ODBC数据库文件。和静态部件一样,应用程序动态部件的寄存方位一样能够是决议应用程序整体功用的主要因素。例如,假定把应用程序的数据文件放置在网络效劳器上,并且应用程序有必要在没有索引的表中查找一个记载。在这种状况下,Microsoft Jet有必要对整个表进行次序扫描以查找匹配成果,这意味着有必要把整个表从效劳器传送到引擎的作业站。当表很大时,这种操作能够需求较长的时刻。一起,因为用户在履行查找时长时刻地等候呼应,而网络上很多的通讯还会轮番地下降其他用户的速度,所以这个疑问会愈加杂乱。为了减轻这种状况,能够给应用程序要查找的列增加索引。可是,增加索引又能够会增加网络通讯量,并且下降了并发和功用。这即是说,经过网络拜访文件明显比在本地核算机上拜访文件慢,在多用户环境中完成数据库体系实践上是以献身体系功用为价值的。因此,为了减小网络的通讯量,最好将某些应用程序的部件存储在本地作业站上。例如,假定应用程序运用一套存储邮政编码或零件编号表,而这些表不常常改动,则能够把它们移到本地作业站上,以避免网络拜访。  3.Microsoft Jet多用户模型。Microsoft Jet多用户数据库应用程序由几个重要部件构成。在每个用户的作业站上都有Microsoft Jet的一个仿制在运转,若是运用双数据库办法,则通常静态部件会驻留在每个用户的核算机上,而动态部件会驻留在网络效劳器上。除此之外,多用户应用程序具有下列文件:一个作业组信息文件,它能够会集驻留在网络效劳器上,也能够驻留在每个用户作业站上;每个数据库有一个确定信息文件(.1db),它驻留在与数据库一样的文件夹内。  1).作业组信息文件作业组信息文件是一个Microsoft Jet数据库,用来存储用户、组和暗码信息以及用户设置的各种选项信息。在多用户环境中,作业组信息文件的方位是很重要的。能够把作业组信息文件放在每个本地作业站上,也能够把它放在网络效劳器上。若是把它存储在本地机上,则有必要在改动安全性设置值时采纳必要的进程对它进行更新。2).确定信息文件确定信息文件(.1db)用来存储数据库中一切当时确定记载的信息。在翻开数据库时,若是确定信息文件不存在,则Microsoft Jet数据库引擎会主动树立该文件。Microsoft Jet为每个以同享形式翻开的Microsoft Jet数据库文件树立一个确定信息文件。该文件与翻开的相应数据库同名,但文件名后缀为.1db。例如,与Northwind.mdb相对应的确定信息文件名叫Northwind.1db。确定信息文件与数据库存储在相伺的文件夹中。在数据库封闭时,Microsoft Jet会删去.1db文件。在多用户环境中,则在一切用户都退出应用程序时将其删去。Microsoft Jet撑持下列文件效劳器和点对点网络:.Microsoft WindowsNT和Windows95网络.Banyan VINES 5.52.DECnet4.1. LANtastic 5.0. Novell NetWare3.x 和4.x. OS/2 LAN Manager 2.1 和2.2  通常来说点对点网络不能极好的满意多用户数据库体系的需求,大多数应用程序需求运转在有专用的文件效劳器的网络上。(二) 数据拜访操控在单用户环境中,只要一个用户在拜访数据,因此应用程序不会发作资源恳求抵触。而在多用户环境中,当用户拜访数据时,能够会发作抵触。为了办理这些抵触,Microsoft Jet供给了数据拜访操控和应用程序的确定效劳,以确保在给定的时刻内只要一个用户能够拜访数据。数据拜访操控用来对数据库的有些或悉数进行拜访约束,通常可分为两类,一类是用户约束,另一类是功用约束。用户约束用来阻碍某些人(或只答应某些人)检查或修正“灵敏”数据。例如,在薪酬体系中,大多数人能够检查员工的薪酬,但只要少量人才有权修正实践的薪酬信息。功用约束只对程序的某个有些起作用,而不论用户是谁。例如,在订单挂号体系中,若是把报价表设为只读形式,则可避免用户随意修正某些项目的报价。 在应用程序中,能够经进程序操控或Microsoft Jet数据库引擎操控来处置约束。其间程序操控能够施加于程序本身,而引擎级操控则约束了任何企图拜访数据库信息的程序。  1.互斥地运用数据库。以互斥办法翻开数据库是对数据拜访施加的最大约束,它实践上是以“独占”办法运用数据库。这种约束能够阻碍任何用户或程序拜访正在运用的数据库中的信息。因为这种办法的约束太大,因此只用于那些影响整个数据库的操作,包括:·紧缩数据库。·更新整个表(例如用UPDATE查询)。·经过增加表、字段或许索引来修正数据库的布局。·处置特别的用户需求(例如传送审计信息)。  在程序代码中,为了以独占办法翻开一个数据库,有必要把OpenDatabase办法的第二个参数设置为True,例如:Dim oldDb As DatabaseDim oldws As workSpaceSet oldDb=oldWs.OpenDatabase('Members.mdb',True,False)  用上面的代码翻开数据库时,若是该数据库未被其它用户运用,则翻开数据库,这样直到封闭之前,该数据库不会被其它用户或程序拜访;若是数据库正在被其它用户运用,则回来一个过错。  2.回绝其它用户或程序拜访指定的表。以独占办法翻开数据库后,能够回绝其它用户或程序拜访整个数据库(包括数据库中的每个表)。而对数据拜访的一种较轻的约束则是回绝其它用户或程序拜访由自己程序正在运用的表(即记载集),它实践上是对记载集进行确定。确定记载集的操作经过OpenRecordset办法中的Options参数来完成。咱们晓得,OpenRecordset办法的格局如下:目标.OpenRecordset(type,OPtlons,lockedits)  其间的options参数用来设置对记载集的确定,该参数能够取多种值,以下两种值用来制止其它用户对记载集进行读写操作:1..制止读(dbDenyRead)  OpenRecordset办法中的dbDenyRead常量用来制止其它用户检查表中的数据,直到封闭该表停止。当需求更新整个表中的信息时,能够运用这个常量。例如:Dim rst as RecordsetSet rst=dbs.OpenRecordset(strTable, _dbOpenTable,dbDenyRead)2.制止写(dbDenywrite)  OpenRecordset办法中的dbDenyWrite常量用来制止其它用户更新表中的数据,直到封闭该表停止。在这种状况下,其它用户能够检查表中的信息,也能够增加新记载,但不能对其进行修正。当需求向表中刺进新记载而又不想修正现有的记载时,能够运用这个常量,它对表和动态集都有用。例如:Dim rst as RecordsetSet rst=dbs.OPenRecordset(strTable, _dbOpenTable,dbDenyWrite)  用dbDenyRead和dbDenyWrite能够别离制止对记载集进行读和写,若是既想制止读,又想制止写,则可一起运用这两个常量(用“十”号衔接)。例如:Dim rst as RecordsetSet rst=dbs.OpenRecordset(strTable, _dbOpenTable,dbDenyRead + dbDenyWrite)(三) 与复本操作有关的目标、特点和办法(2)3.property目标与Properties调集Property目标用来描绘一个DAO目标的内部特点或用户界说特点,与DAO目标及Properties调集的联系为DAO目标包括Properties调集,Properties调集包括property目标。(其联系详见VB帮助文件)除Connection和Error目标外,每个DAO目标都富含一个property调集,在该调会集有与相应的DAO目标的内部特点共同的Property目标。一起,用户能够界说Property目标并将其参加某些下列DAO目标的Properties调集:·Database, Index, QueryDef和TableDef目标·TableDef目标和QueryDef目标的Fields调会集的Field目标Property有4个预界说的特点:·Name特点:是一个字符串,特点的仅有标识。·Type特点:是一个整型数(Integer),用来指定特点的数据类型。·Value特点:是一个包括特点设置的Variant类型的值。·Inherited特点:是一个Boolean值,用来指示特点是不是从另一个目标承继而来。Property目标既有预界说的特点,也有用户界说的特点,在引证时,其格局是不一样的。顶界说特点的引证格局为:目标.特点而用户界说的特点有必要选用下面的引证格局:目标.Properties.(“特点”)【例】编写程序,列出Tables容器中的Documents调集,然后列出调会集的第一个Document目标的Properties调集。在窗体上画一个指令按钮,然后编写如下事情进程:Private Sub Command1_Click()Dim dbsnorthwind As DatabaseDim docloop As DocumentDim prploop As PropertySet dbsnorthwind = OpenDatabase('e:\f.mdb')With dbsnorthwind.Containers!tablesDebug.Print 'documents in ' & .Name & 'container'For Each docloop In .DocumentsDebug.Print ' ' & docloop.NameNext docloopWith .Documents(0)Debug.Print 'properties of' & .Name & 'document'On Error Resume NextFor Each prploop In .PropertiesDebug.Print ' ' & prploop.Name & '=' & prploopNext prploopOn Error GoTo 0End WithEnd Withdbsnorthwind.CloseEnd Sub程序的前半有些与前面的比如一样,后半有些列出第一个Document目标(即Documents(0)的 Properties调集。运转程序,单击指令按钮,即可在“当即”窗口中列出上述内容。用户界说的特点经过CreateProperty办法来界说,用该办法能够树立由用户界说的Property目标(仅Microsoft Jet 作业区),用于Database,Document,Field,Index,QueryDef和TableDef目标。其格局为: set property=目标.CreateProperty(name,type,value,DDL) 各参数的意义如下:·property:目标变量,要树立的Property目标。·Object:目标变量,能够是Database,Field,Index,QueryDef和TableDef目标,能够对这些目标树立Property目标。·name: 可选。 variant类型(字符串子型),仅有地命名新的Property目标。·type: 可选。 常数,界说新Property目标的类型。·value:可选。 variant类型,指定特点的初值。·DDL: 可选。 Variant类型(Boolean子型),用来指示该特点是不是是一个DDl目标,缺省值为False。若是DDL为True,则不能删去这个property 目标(除非得到 dbsecWriteDef的答应)。阐明: 1.)只能在一个永世目标的Property调会集树立用户界说的Property目标。在用CreateProperty 办法树立Property目标时,若是省掉了一个或多个可选参数,则可在向一个调集追加新的目标之前,用赋值句子设置或从头设置相应的特点。在向调会集追加新的目标之后,能够改动其特点设置的一有些(不是悉数)。2.)若是name参数指的是该调会集现已存在的目标成员,则当用Append办法追加时,将会呈现过错。 3.)为了从调会集删去一个由用户界说的特点目标,能够用调集的Delete办法来完成。该办法只能删去用户界说的目标,不能删去预界说特点。4.)若是省掉了DDL参数,则缺省为False (即非DDL)。在这种状况下,没有呈现相应的DDL特点,若是需求将一个Property目标由DDL变为DDL,则有必要先删去,然后再从头树立。5.)CreateProperty办法中的type参数是一个符号常量,它是Property目标的设置值或回来值,其能够的取值见表3type参数的取值常数 类型 常数 类型dbBigInt Big整型数 dbGUID GUIDdbBinary 二进制 dbInteger 整型数dbBoolean 布尔值 dbLong 长整型数dbByte 字节 dbLongBinary 长二进制(OEL目标)dbChar 字符 dbMemo MemodbCurrency 钱银 dbNumeric 数值dbDate 日期/时刻 dbsingle 单精度dbDecimal 十进制 dbText 文本dbDouble 双精度 dbTime 时刻dbFloat 浮点数 dbTimeStamp TimeStampdbVarBinary VarBinary(表3)设MyDB是一个Database目标变量,MyPro是一个Property目标变量,则能够用下面的程序树立Property目标:set MyPro=MyDB.createProperty()MyPro.Name='NewDefined'MyPro.Type=dbTextMyPro.Value='这是一个用户界说的特点'能够用下面的句子把新树立的特点加到Properties调会集:MyDB.Properties.Append prpNew【例】编写程序,树立用户界说的Property目标,并把它加到Properties调会集。在窗体上画一个指令按钮,然后编写如下的事情进程。Private Sub Command1_Click() Dim dbsnorthwind As DatabaseDim prpnew As PropertyDim prploop As PropertySet dbsnorthwind = OpenDatabase('e:\f.mdb')With dbsnorthwind'树立并增加用户界说的特点Set prpnew = .CreateProperty()prpnew.Name = 'userdefinednew'prpnew.Type = dbTextprpnew.Value = 'this is a user_definednew property.'.Properties.Append prpnew'列出当时数据库的一切特点Debug.Print 'properties of ' & .NameFor Each prploop In .PropertiesWith prploopDebug.Print ' ' & NameDebug.Print ' type:' & .TypeDebug.Print ' inherited:' & .InheritedEnd WithNext prploopEnd WithEnd Sub上述程序树立了一个名为userdefinednew的特点,其类型为dbText,初值为“this is a user_definednew property。”运转程序,单击按钮,将树立该特点,并在当即窗口中显现当时数据库的一切特点。(包括新树立的特点)(四) 与复本操作有关的目标、特点和办法(3)4.keepLocal特点和Replicable特点(1)KeepLocal特点  KeepLocal特点用来坚持目标的本地化,即在仿制数据库时,使指定的目标不被仿制。性用于Document目标、QueryDef目标和TableDef目标。其设置或回来的值是Text类若是把该特点设置为“T”,则在仿制数据库时可使相应的目标坚持为本地目标。目标制后,不能运用KeepLocal特点。在获取或设置TableDef或QueryDef的KeepLocal特点之前,有必要先用CreateProperty树立,并把它附加到目标的Properties调会集。  设置了KeepLocal特点后,该特点将呈如今Document目标的Properties调会集。KeepLocal经过CreateProperty办法设置。例如:Dim dbs As DatabaseDim docTemp As DocumentDim prpTemp As PropertySetdbs=OpenDatabase(''dbtemp.m4b``)Set docTemp = dbs.Containers(''Modules'').Docu Functions'')Set prpTemp = docTemp.Createproperty(''KeepLoc dbText, ''T'')docTemp.Properties.Append pWTempdbs.Close上面的程序把KeepLocal特点附加到Documeni目标的properties调会集去。有必要在数据库变为可仿制之前设置目标(例如表)的特点。再如:Sub SetKeepLocal(tdftemp As TableDef)On Error GoTo ErrHandlertdfTemp.Properties('KeepLOcal')='T'On Error GoTo 0Exit SubErrHandler:Dim prpNew As PropertyIf Err.Number = 3270 ThenSet prpNew = tdfTemp.Createproperty('KeepLocal', _dbText, 'T')tdfTemp.Properties.Append prpNewElseMsgBox 'Error' & Err & '.' & ErrorEnd ifEnd Sub上面的进程把指定目标Tab1eDef的KeepLocal特点设置为“T”。若是keepLocal特点不存在,则先树立之,然后把它附加到表的Properties调会集去,并将其值设置为“T”。(2)Replicable特点  Replicable特点用来设置或回来一个值,这个值决议数据库或数据库中的目标是不是能够仿制(仅Microsoft Jet 作业区)。该特点用于Database目标、Document目标、QueryDef目标和TableDef目标。其设置或回来的值是Text类型。关于Database目标,若是把该特点设置为“T”,则能够仿制数据库。设置为“T”后,就不能再改动它,若是把它设置为“F”(或其它非“T”值),则会发作过错。关于数据库中的目标,若是把该特点设置为“T”,则可仿制Replicas调会集的一切Replica目标(以及对此目标的更改)。也能够在Microsoft Access的目标特点表中设置该特点。在设置一个Database,Tab1eDef或QueryDef目标的Replicable特点前,有必要先用CreateProperty办法树立它,并把它参加目标的Properties调会集。例如:sub CreateReplLocalTableX()Dim dbsNorthwind As DatabaseDim tdfNew As TableDefDim fldNew As FieldDim prpNew As PropertySet dbsNorthwind = OpenDatabase('c\dbdir\db3 .mdb')'树立一个名为“NewTab”的新TableDefSet tdfNew = dbsNorthwind.CreateTableDef('NewTab')'界说一个名为“NewField”的文本字段Set fldNew = tdfNew.CreateField(“NewField”, dbText, 3)'把新字段附加到TableDef中tdfNew.Fields.Append fldNew'把新TableDef增加到数据库中dbsNorthwind.TableDefs.Append tdfNew'为新TableDef树立Replicable特点Set prpNew = tdfNew.Createproperty(''Replicab , dbText, ''T'')'把Replicable 特点加到TableDef中tdfNew.Properties.Append prpNewdbsNorthwind.CloseEnd Sub上述进程树立一个新的TableDef 目标,并使其可仿制。注意,包括该目标的数据库必是可仿制的,才干履行此进程。再如:Sub SetReplicable(tdryemp As TableDeDOn Error GoTo ErrHandiertdryemp.PrOperties(''Replicable' = ''T''On Error GoTo 0Exii SubErrHandler.Dim prpNew As PropertyIf Err.Number = 3270 ThenSet prpNew = tdfTemp.Createproperty(``Replicab , dbText, ''T'')idfTemp.Properties.Append prpNewElseMsgBox “Error” & Err & “:” & ErrorEnd IfEnd sub上述进程将指定TableDef目标的Replicab1e特点设置为“T”。若是特点不存在,则在过错处置子程序中树立之,然后附加到TableDef的Properties调会集,并设置为“T”。5.MaKeReplica办法MakeReplica办法用来从一个数据库复本中仿制一个新的复本(仅用于Microsoft Jet 作业区)。该办法用于Database目标,其格局如下:目标.MakeReplica replica,description,options格局中各参数的意义如下:·目标: Database目标变量。· rep1ica:是一个字符串,指定新复本的途径和文件名,若是该参数是当时文件名,则会发作过错。·description:是一个字符串,用来描绘所生成的复本。·opii0n8:可选。是一个符号常量或常量组合,用来指定所生成的复本的特征,能够取以下两种值:dbRepMakepartial生成一个有些复本dbRepMakeReadoniy避免修正新复本。可是,当将新复本与复本会集的另一个复本同步时,对描绘和数据的修正将传送到新复本上述两个常量能够独自运用,也能够用“十”号组合在一起,例如:dbRepMakePartial + dbRepMakeReadOnly(五) 仿制数据库所谓树立数据库复本,实践上即是树立数据库的仿制。经过数据库仿制,每个用户都能够运用数据库中数据的一份仿制,并可在某个时亥把各个数据库从头组合成宿主数据库,而对宿主数据库的修正都传送到数据库复本。注意,数据库仿制功用仅对Microsoft Jet 3.5版的数据库有用。  Microsoft Jet 数据库引擎不答应用数据库暗码来维护仿制数据库。在开始运用复本之前,有必要先从即将仿制的数据库中删去一切数据库暗码维护。设置用户权限与复本同步没有抵触。用DAO仿制数据库的通常进程如下:(1)辨认数据库中不需求仿制的目标,并将它们的KeepLocal特点设置为“T”。(2)将数据库的Replicable特点设置为“T”,使它成为描绘原版。(3)用MakeReplica办法从描绘原版中生成附加的复本。在设置Replicable特点之前,应先确定在变换数据库曾经数据库是不是现已被仿制。1.坚持目标本地化  当把正常的数据库变换为描绘原版时,将仿制数据库中的一切目标。若是不想把数据中的一切目标都放在复本会集,则可对不想仿制的目标增加并设置KeepLocal特点。例如,果数据库中有一个表,在该表中富含秘要的薪酬信息、初始化信息或登录到数据库的用名,则能够期望不把这些信息放到复本中。在这种状况下,可将该表的KeepLocal特点设为“T”,使得仿制数据库时,这些信息不被仿制。  关于TableDef 和 QueryDef目标,能够树立keepLocal特点并把它增加到目标的特点调会集。关于由主机应用程序界说的窗体、报表、宏以及模块,能够树立KeepLocal特点并把它增加到表明该目标的Document目标的特点调会集。  注意,在设置keepLocal (以及Rep1icab1e )特点之前,有必要先树立它,然后增加到将运用它的目标的特点调会集。若是在树立并增加该特点之前先引证了它,则将发作一个运转时过错。【例】编写一个Function 进程,对数据库中指定的目标进行本地化处置。Function SetKeepLocal(dbs As Database, strCollection _As String, stffobJect As String) As integerDim i As IntegerDim blnMatch As BooleanDim tdf As TableDefDim PrP As PropertyDim doc As DocumentDim qdf As QueryDefOn Error GoTo ErrorHandlerSelect Case stalollectionCase 'FormS', 'RelpOrtS', ''MOdllleS'', ''SCriptS`'Set doc = dbs.Containers(strCollection). _Documents(strObject)Set prp = doc.Createproperty _('KeepLocal', dbText, `'T'')doc.Properties.Append prpCase 'TableDefs'Set tdf = dbs.TableDefs(strObJect)Set prp = tdfCreateproperty -(''KeepLocal'', dbText, ''T'')tdfprol)etties.Append prpCase ''QuecyDefs'`Set qdf=dbs.QueryDefs(sbrobject)Set prp = qdf.Createproperty _('KeepLocal', dbText, 'T')qdf.properties.Append PrPEnd SelectErrorHandler:Select Case ErrCase 0case 3265 '目标未发现SetKeepLocal = 3265Exit Function'特点现已存在,把它设置为“T”Case 3367Select Case sttoollectionCSSel ''Forms'' , ''RelportS'', ``Modlules'' , ''ScriptS'`doc.Properties(''KeepLocal'`).Value = `'T'`Case ''TableDefs'`tdf.Properties(''KeepLocal'').Value = `'T'`Case ''QueryDefs'`qdf.Properties(''KeepLocal'').Value = ''T'`Exit FunctionEnd SelectSetKeepLocal = 0Exit FunctionCase ElseMsgBOx ''Error'' & Err & ':', & Error, vbOKOnlySetKeepLocal=-1Exit FunctionEnd SelectEnd Function用上述进程能够对指定数据库目标树立并增加KeepLocal特点,若是该特点现已存在,则将发作代码为3367的过错,在这种状况下,将在过错处置程序中把该特点的值设置为“T”该进程有3个参数,其间第一个参数是Database目标,第二个参数是调集的姓名,第三个参数是数据库中的目标名。进程的回来值是一个整型数,它实践上是一个过错代码。为了调用上面的进程,能够在窗体上画一个指令按钮,然后编写如下的事情进程:Private Sub Command1_Click()Dim MyDb As DatabaseDim a As integerSet MyDb = OpenDatabase(''c:\dbdir\db1.mdb'')a = SetKeepLocal(MyDb, ''TableDefs'',''Tabel1'')If a = 0 ThenMsgBox '已成功设置KeepLocal 特点'Elself a = 3265 ThenMsgBox '目标未找到'Elself a = 3367 ThenMsgBox 'KeepLocal特点已存在,设置为“T”ElseMsgBox“犯错”End lfEnd sub该事情进程调用SetKeepLocal进程,用来树立并设置数据库db1.mdb的TableDefs调会集Tabel1目标的KeepLocal特点。若是现已在数据库的两个表之间树立起联系,则有必要将两个表的keepLocal特点设置为一样的值,即两个表都有必要是本地的或许是可仿制的。若是两个表的keepLocal特点设置不一样,则变换将会失利。可是应注意,不能在联系有用时设置keepLocal特点,也即是说,在设置特点之前,应先删去两个表之间的联系,在设置好KeepLocal特点之后再康复两个表之间的联系,然后继续进行数据库变换。若是正在设置KeepLocal特点的目标现已从其它目标中承继了该特点,则由其它目标设置的值对保存为本地目标的操作没有影响,有必要直接为每个目标设置keepLocal特点。
推荐信息