ACCESS数据库中Field对象的caption属性读写数据库教程

时间:2023-06-16 07:33:27 其他范文 收藏本文 下载本文

ACCESS数据库中Field对象的caption属性读写数据库教程(通用9篇)由网友“par6364”投稿提供,以下是小编为大家准备的ACCESS数据库中Field对象的caption属性读写数据库教程,供大家参考借鉴,希望可以帮助到有需要的朋友。

ACCESS数据库中Field对象的caption属性读写数据库教程

篇1::ACCESS数据库中Field对象的caption属性读写数据库教程

文章中打“星号”的地方是要重点注意的,因为笔者在这里曾走过弯路,浪费了一个下午的时间在MSDN中游荡,现在分享给大家

本文章说明如何用VBA读写该属性。 可惜Field对象的CAPTION属性并不是ADO原生对象,而是“可由ADO访问的ACCESS属性”,在帮助文档中介绍了两种访问这个属性的方法,一种利用ADO,一种利用DAO,在这里我直接说出结果,由于在ACCESS及以前的版本中Field对象并不是ACCESSObject对象,因而也就没有AccessObjectProperties属性,所以我们也就别想在ADO中去解决这个问题吧,现在给出DAO的代码解决办法

SubSetProperty(dbsTempAsDAO.Field,strNameAsString,_ booTempAsString) DimprpNewAsDAO.Property DimerrLoopAsError 'Attempttosetthespecifiedproperty.

OnErrorGoToErr_Property dbsTemp.Properties(strName)=booTemp OnErrorGoTo0 ExitSub Err_Property:

'Error3270meansthatthepropertywasnotfound. IfDBEngine.Errors(0).Number=3270Then

'Createproperty,setitsvalue,andappendittothe 'Propertiescollection.

SetprpNew=dbsTemp.CreateProperty(strName,_ dbText,booTemp)

dbsTemp.Properties.AppendprpNew ResumeNext Else

'Ifdifferenterrorhasoccurred,displaymessage. ForEacherrLoopInDBEngine.Errors

MsgBox“Errornumber:”&errLoop.Number&VBCr&_ errLoop.Description NexterrLoop End EndIf

EndSub SubDisplayClumCaption(ByValtbnameAsString,ByValfldIndexAsInteger)

DimdsetAsDAO.TableDef) //*****必须使用TableDef对象

DimiAsIntegerDimtmpPropAsDAO.Property //强制使用DAO类型

DimfldAsDAO.Field //强制使用DAO类型DimtmpTxtAsString'OnErrorResumeNext

DimmsgAsStringDimcdbAsDAO.Database //*****强制使用DAO类型

Setcdb=CurrentDb //****关键,确定对当前数据库的静态引用

Setdset=cdb.TableDefs(tbname)//*****必须使用TableDef对象

ForEachfldIndset.Fields tmpTxt=fld.Name SetPropertyfld,“Caption”,tmpTxt msg=msg fld.Properties(“Caption”)

msg=msg Chr(10) Chr(13) Nextfld MsgBoxmsgEndSub

这里代码中有两个SUB,一个是SetProperty,用来判断一个字段是否有指定的属性,如果没有设置,有就将相应的数值赋给该属性,这段代码几乎完全是照搬MS的帮助文档,

另一个是DisplayClumCaption,这是对指定表中的字段按字段名设置其CAPTION属性的演示代码。如果有需要,大家可以对SetProperty进行修改,使他变成一个只读的函数,用来枚举指定表中每个字段的CAPTION属性。DisplayClumCaption代码中

篇2:定期归档Access数据库数据库教程

一个通用数据库任务会将记录从一个表归档到另一个表,如果您希望从原始表中删除不必要的记录以减小表的大小,但是将来可能会参考这些记录,那么您可以归档记录(而不是删除记录)。要在 Microsoft® Access 数据库中归档记录,请用宏来运行查询,将记录从一个表移到另一个表。

注意:以下过程使用的是罗斯文示例数据库中的示例。罗斯文示例数据库的默认位置是 Program Files\Microsoft Office\Office10\Samples 文件夹。如果您的 Samples 文件夹中没有 Northwind.mdb 文件,或者您需要有关打开罗斯文的详细信息,请在 Office 助手或“帮助”窗口的“应答向导”选项卡中输入“打开罗斯文示例数据库”,然后单击“搜索”。

定期将记录从一个表归档到另一个表

1、使用“复制”和“粘贴”命令,将要归档的表复制到新表中。仅复制结构,不复制数据。

例如,将“产品”表的结构复制到名称为“产品归档”的新表中。

2、创建一个查询,使其包含“产品”表中所有的字段,并将记录附加到“产品归档”表中,

设置条件来指定要归档的记录的子集。

例如,创建一个名为“产品附加”的附加查询,通过将“中止”字段的“条件”单元格设置为 -1,就可以仅向“产品归档”表中附加中止的条目。

提示:如果每次归档的条件都会发生变化,那么您可以创建一个带有提示参数的附加查询,这样在每次运行查询时就可以输入不同的条件。

3、创建一个删除查询,此查询的条件与步骤 2 中为附加查询指定的条件相同。您将使用此查询从“产品”表中删除在步骤 2 中附加的记录。

例如,创建一个“产品删除”删除查询,此查询的条件与“产品附加”附加查询所指定的条件相同。

注意:如果您创建一个提示输入参数的附加查询,那么您应该也创建一个提示输入相同参数的删除查询,并且对每次运行查询出现的参数提示,要确保输入相同的值。

4、创建一个宏,使其先运行附加查询,然后运行删除查询。

例如,创建一个名为“产品附加记录”的宏,在宏的第一行用 OpenQuery 操作来运行附加查询,在宏的第二行用 OpenQuery 操作来运行删除查询。

5、每次您要归档记录时,请运行“产品附加记录”宏。

篇3:OrdinalPosition 属性示例数据库教程

OrdinalPosition 属性示例 (MDB)

以下示例更改了“产品”表中第一个字段的 OrdinalPosition 属性设置,如果在执行这个示例之前和之后检查“数据表视图”中的这个表,那么将会看到该过程将“产品ID”字段从第一列移到最后一列。

Sub SetPosition

Dim dbs As Database, tdf As TableDef

Dim fldFirst As Field, fld As Field

' 返回对当前数据库的引用。

Set dbs = CurrentDb

' 返回对 Products 表的引用。

Set tdf = dbs.TableDefs!Products

' 返回对表中第一个字段的引用,

Set fldFirst = tdf.Fields(0)

' 将 OrdinalPosition 属性设置到集合的最后位置。

fldFirst.OrdinalPosition = tdf.Fields.Count

' 刷新 Fields 集合。

tdf.Fields.Refresh

' 列举所有字段并打印顺序位置。

For Each fld In tdf.Fields

Debug.Print fld.Name, fld.OrdinalPosition

Next fld

Set dbs = Nothing

End Sub

篇4:在VB中压缩ACCESS数据库数据库教程

如果您在Access数据库、Access项目中删除数据或对象,可能会产生碎片并导致磁盘空间使用效率的降低,

在VB中压缩ACCESS数据库数据库教程

。同时,数据库文件的大小并未减小,而是不断的增大,直至您的硬盘没有空间。有没有好的处理方法呢?其实,在Access中可以对数据库进行压缩优化以提升Access数据库和Access项目的性能,这样的压缩处理的实质是复制该文件,并重新组织文件在磁盘上的存储方式。但是,在Access项目中进行这样的压缩不会影响到数据库对象(例如表或视图),因为它们是存储在Microsoft SQL Server数据库中而不是在Access项目本身中。同样,这样的压缩也不会影响到Access项目中的自动编号。在Access数据库中,如果已经从表的末尾删除了记录,压缩该数据库是就会重新设置自动编号值。添加的下一个记录的自动编号值将会比表中没有删除的最后记录的自动编号值大一。

下面介绍如何在VB中用一个CompactJetDatabase过程实现对Access数据库文件的压缩处理,在这个过程中有一个可选参数,就是在压缩前你是否需要把原有的数据库文件备份到临时目录(True或False)。我用此办法使21.6MB的数据库压缩到仅仅300KB。

‘这些代码可放在模块中,在其他窗体也使用

Public Declare Function GetTempPath Lib “kernel32” Alias _

“GetTempPathA” (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

Public Const MAX_PATH = 260

Public Sub CompactJetDatabase(Location As String, Optional BackupOriginal As Boolean = True)

On Error GoTo CompactErr

Dim strBackupFile As String

Dim strTempFile As String

‘检查数据库文件是否存在

If Len(Dir(Location)) Then

‘如果需要备份就执行备份

If BackupOriginal = True Then

strBackupFile = GetTemporaryPath & “backup.mdb”

If Len(Dir(strBackupFile)) Then Kill strBackupFile

FileCopy Location, strBackupFile

End If

‘创建临时文件名

strTempFile = GetTemporaryPath & “temp.mdb”

If Len(Dir(strTempFile)) Then Kill strTempFile

‘通过DBEngine压缩数据库文件

DBEngine.CompactDatabase Location, strTempFile

‘删除原来的数据库文件

Kill Location

‘拷贝刚刚压缩过临时数据库文件至原来位置

FileCopy strTempFile, Location

‘删除临时文件

Kill strTempFile

Else

End If

CompactErr:

Exit Sub

End Sub

Public Function GetTemporaryPath()

Dim strFolder As String

Dim lngResult As Long

strFolder = String(MAX_PATH, 0)

lngResult = GetTempPath(MAX_PATH, strFolder)

If lngResult 0 Then

GetTemporaryPath = Left(strFolder, InStr(strFolder, Chr(0)) - 1)

Else

GetTemporaryPath = “”

End If

End Function

以后您在使用Access数据库时可以尝试进行这样的压缩,您应该会发现我说的没有错,

篇5:预装入对象数据库教程

对象

预装入对象

张健姿 01-6-22 下午 03:17:13

在PowerBuilder 5.0中支持全编译代码,但用于采用这种方法存在编译时间长、编译后可执行文件量大等缺点,所以在不少场合,我们仍采用伪编译方式,就是将装载对象和源代码的PBL文件编译成PowerBuilder的动态链接库(.PBD),PowerBuilder的动态链接库中装载的是与源程序库中源代码相匹配的二进制表示。在运行时,对象(包括函数)依照“需要时调用”的原则,从.PBD中装入内存,这就使可执行程序的字节数大大缩小,执行效率会提高,而且由于只有那些要用到的对象才被即时装入内存,使系统需要进行内存交换的机会就少得多,因而应用的运行也就更快。 但有时我们也会发现用户在进行打开窗口等操作时系统的响应速度较慢,特别是在客户机的配置较低的情况下,这种情形尤为突出。我们知道,当程序调用一个新的对象时,系统要到各个.PBD文件中查找这个对象,如果这个对象是由其它对象继承而来,那么其所有的祖先对象都需要装入内存。如应用软件十分庞大,这种查找和装入显然是十分消耗时间的。 这里我们介绍一种预装入对象的办法,可以在一定程度上解决这个问题。预装入对象就是改变对象初始装入的时间,也就是说在用户对应用并没有反应速度的要求时装入了对象,而不是在用户需要该对象时才装入(如打开一个窗口时)。预装入对象可以明显地提高性能,这种技术给用户的印象是在用户真正要求系统的响应速度时所有对象的装入都加快了。最适合做这些预装入的地方是在APPLICATION的OPEN事件中。在PowerBuilder 5.0开发工具中并没有直接提供这样的功能,但我们可以用一些简单的技巧来实现它,这就是使用一个非可视化对象。 我们首先应当知道:一些对象,如非可视化对象等,被调用时全部装入内存,而另一些对象,如函数,只装入需要的部分。因此使用一个非可视化对象可能比使用一个全局函数更快,当然还与它的大小和功能有关。 您不必在应用的OPEN事件中预装入所有的对象,而是预装入那些最经常被用作为祖先的对象。具体的做法是将这个非可视化对象定义成一个变量。这个非可视化对象一直保留在内存中直到应用结束,这可使应用更加紧凑。这样做的另一个好处是,一旦您定义了一个对象的指针作为全局变量,就可以在软件 的任何地方利用这个指针,引用这个对象的常量、函数和其它的特性。 具体的步骤可以这样进行: 步骤一:创建一个预装入的对象 创建一个Non_Visual_Object类型的用户对象,将该对象以您选定的名字存盘。在本例中采用NVO_Object_Pre_Loader. 在该对象中,建立一个Powerobject的对象数组叫做IPO_Pre_Loaded_objects[]。Powerobject对象是Pow-erBuilder对象层次中最高层次的对象(见前文《PowerBuilder面向对象的程序设计》),因此它能被分配给任何一个PowerBuilder标准的或自定义对象。另外建立一个整型的变量做为数组的索引,我们叫它为ii_Idx,并且将它初始化为0。这两个变量均为实例变量。 PRIVATE:/*限制对这两个变量的访问权限*/ /*我们假设预装入的对象数最多不超过10,当然开发者也可根据实际情况调整*/ PowerObject IPO_Pre_Loaded_objects[10] Integer ii_Idx=0 注意,我们应当在这里就预先定义数组的大小,这样可以使这个对象预先保留内存而且在自身预装入时也能运行得更快。 步骤二:创建预装入函数 现在创建一个用户对象函数叫做NVOF_Pre_Load_Object。这个函数有一个参数:APO_Object,它也是Powerobject类型,

函数的代码如下。 /* 函数:NVOF_Pre_Load_Object 功能:To pre_load often used ancestor objects 参数:Power Object APO_Object 返回值:integer 1:成功,-1: 失败 */ ii_Idx++ /*将要预装入的对象赋值给这个数组*/ IPO_Pre_Loaded_Objects[ii_Idx]=APO_Object /*检验赋值是否成功*/ If isvalid(IPO_Pre_Loaded_objects[ii_Idx])then Return 1 else Return -1 end if 步骤三:创建可以放入调用用户对象代码的用户事件 在这个对象上为开发者建立一个可放入对预装入对象调用的代码。我们定义了使用一个“声明”的事件,该事件将在对象的CONSTRUCTOR事件中被触发。我们可以将这个用户事件命名为NVO_UE_DECLARATIONS,并且将下面的代码放入对象的CONSTRUCTOR事件中。 This.Post Event(“nvo_ue_declarations”) 在NVO_UE_DECLARATION事件中您可以放入对预装入对象的调用。 步骤四:预装入对象 这段代码存在NVO_UE_DECLARATION事件中。可能您的应用需要更多或更少的预装入对象,我们只假设有这样几个常用的祖先对象类w_WindowBase、udw_DataWindow、uo_UserObjectBase和m_MenuBase。这些对象分别代表我们的窗口类、用户对象数据窗口类、用户对象类和菜单类的祖先对象。 NVO_UE_DECLARATON事件中的代码如下: /*声明指向这些对象的局部变量*/ Window lWindow UserObject lUO DataWindow lDW Menu lMenu /*对每一个需要预装入的对象,使用Create语句创建一个该对象的实例,并调用预装入函数将这个实例保存在内存中*/ /*创建一个窗口基类的实例*/ lWindow=Create w_WindowsBase NVOF_Pre_Load_Object(lWindow) /*创建一个DataW-indow的用户对象基类的实例*/ lDW=Create udw_DataWindowBase NVOF_Pre_Load_object(lDW) /*创建一个用户对象的基类实例*/ lUO=uo_UserObjectBase NVOF_Pre_Load_Object(lUO) /*创建一个菜单实例*/ lMenu=Create m_MenuBase NVOF_Pre_Load_Object(lMenu) 一般来讲,动态调用的对象,都是那些用字符串变量调用的对象,将不包含在.EXE文件中。例如,如果您用Open(mywin,“My_Window”)打开了一个窗口,My_Window窗口并不自动地包含在您的EXE文件中。如果编译成.PBD文件,则会包含在.PBD当中。但是如果您用这种方法预装入这个对象,该窗口在.PBD和.EXE编译技术下都将被包含。 步骤五:初始化预装入对象 为了使对象进入内存,还剩下最后的一步。我们必须将预装入对象本身装入内存。您可以选择在应用频繁使用部分开始工作前的任何地方做这件事。一般常用的是在APPLICA-TION的OPEN事件中。需要的代码如下: anvo_object_pre_loader=Create NVO_Object_Pre_loader. 这段程序将建立这个非可视化对象,该可视化对象就会激发对象的声明事件,从而预装入各个对象。 最后一点需提请注意的是,不要忘记在您的APPLI-CATION的CLOSE事件中加上DESTROY anvo_object_pre_loader这样一条语句,否则这个应用将造成所谓的内存漏洞(Memory Leak)。

篇6:常见的数据库对象数据库教程

数据库对象是数据库的组成部分,常见的有以下几种:

3.3.1 表(Table )

数据库中的表与我们日常生活中使用的表格类似,它也是由行(Row) 和列(Column)组成的,图3-1 中黑底白字的部分称为行,图3-2 中黑底白字的部分称为列。列由同类的信息组成,每列又称为一个字段,每列的标题称为字段名。行包括了若干列信息项。一行数据称为一个或一条记录,它表达有一定意义的信息组合。一个数据库表由一条或多条记录组成,没有记录的表称为空表。每个表中通常都有一个主关键字,用于惟一地确定一条记录,如图3-1 中的emp_id 列。图3-1 中的第一条记录,即第一行数据所表达的信息为:编号为10010001 的员工叫张三,性别男,出生于1968 年2 月14 日,工作级别为1 ,工

作部门编号为1001, 受雇日期是 年8 月2 日,月工资是8000 元。

3.3.2 索引(Index)

索引是根据指定的数据库表列建立起来的顺序。它提供了快速访问数据的途径,并且可监督表的数据,使其索引所指向的列中的数据不重复。如图3-3 所示。

3.3.3 视图(View)

视图看上去同表似乎一模一样,具有一组命名的字段和数据项,但它其实是一个虚拟的表,在数据库中并不实际存。在视图是由查询数据库表产生的,它限制了用户能看到和修改的数据。由此可见,视图可以用来控制用户对数据的访问,并能简化数据的显示,即通过视图只显示那些需要的数据信息,

例如:

从图3-2 中抽取字段员工编号emp_id、员工姓名e_name、员工部门编号dept_id、员

工工资e_wage 组成一个员工工资信息表。如图3-4 所示。

从图3-2 中抽取数据组成工作级别(job_level)为2 的员工信息表。如图3-5 所示。

3.3.4 图表(Diagram)

在SQL Server 中图表其实就是数据库表之间的关系示意图。利用它可以编辑表与表之间的关系。如图3-6 所示。

3.3.5 缺省值(Default)

缺省值是当在表中创建列或插入数据时,对没有指定其具体值的列或列数据项赋予事先设定好的值。如图3-7 所示。

3.3.6 规则(Rule)

规则是对数据库表中数据信息的限制。它限定的是表的列。如图3-8 所示。

3.3.7 触发器(Trigger)

触发器是一个用户定义的SQL 事务命令的集合。当对一个表进行插入、更改、删除时,这组命令就会自动执行。如图3-9 所示。

3.3.8 存储过程(Stored Procedure)

存储过程是为完成特定的功能而汇集在一起的一组SQL 程序语句,经编译后存储在数据库中的SQL 程序。如图3-10 所示。

3.3.9 用户(User)

所谓用户就是有权限访问数据库的人。

数据库对象还有很多

篇7:了解 Microsoft Access 安全性数据库教程

access|安全|安全性

简介

在早期版本的 Microsoft® Access(Microsoft Access 以前)中,有关安全性的知识有时被认为是无法为任何人所掌握和应用的,您需要按顺序执行很多步骤,一旦遗漏某个步骤或者颠倒了顺序就会带来灾难性的后果。随着 Microsoft Access for Microsoft Windows® 95 的 Security Wizard 出现,以及 Microsoft Access 2000 的 Security Wizard 的不断改进,在 Access 中实现安全性已变得非常简单。但是,即使有了这些帮助,您也必须清楚自己的安全选项,并掌握在数据库中保护数据和对象的操作。否则,轻者会带来数据安全隐患,重者会将您锁在自己的数据库之外。

有很多方法可以保护您的 Access 数据库以及其中包含的数据。在本文中,我们将讨论用于保护组成数据库的各个对象(包含数据)、包含诸如窗体和报表等元素的对象以及代码(可能是数据库中最有价值的部分)的方法。本文中讨论的安全技巧只适用于 Microsoft Access 数据库 (.mdb) 文件。

需要了解的有关保护敏感数据的知识

您应该知道,有很多工具和第三方实用程序可以用于探测任何类型的数据库的密码,以及来自任何工作组信息文件的用户名和密码(本文后面将详细介绍工作组信息文件)。如果需要保护敏感数据免受非法访问,最好的安全措施就是使用计算机操作系统提供的文件级安全性和文件共享安全性。文件级安全性涉及在数据文件上设置权限。文件共享安全性涉及限制对数据文件存储位置的访问。文件共享安全性的一个示例是在存储数据文件的文件夹(位于本地计算机或网络服务器上)上设置用户权限。为此,可以将数据拆分到多个文件中,在这些文件上设置用户权限,再将这些文件放置到受保护的文件共享空间中。然后可以从具有安全设置的 Access 数据库链接到这些文件。

Access 安全性概述

以下各节介绍了几种保护 Access 数据库的方法。

加密或解密数据库

最简单(也是安全性最低)的保护方法是对数据库进行加密。加密数据库就是将数据库文件压缩,从而使某些实用程序(如字处理器)不能解读这些文件。加密一个不具有安全设置的数据库并不能保证数据库的安全,因为任何人都可以打开数据库并完全访问数据库中的所有对象。有关对数据库进行安全设置的详细内容,请参阅本文后面的使用 Security Wizard 设置 Access 数据库的安全性。

加密可以避免在以电子方式传输数据库或者将其存储在软盘、磁带或光盘上时,其他用户偶然访问数据库中的信息。然而 Jet(Access 使用的数据库引擎)使用的加密方法非常薄弱,因此绝不能用于保护敏感数据。“加密/解密数据库”命令位于“工具”菜单的“安全”子菜单中。解密数据库是对加密过程的逆运算。

使用自定义界面

另一种相对简单的保护方案是使用自定义界面代替 Access 标准界面。与加密一样,它也不能保护数据库中的对象和敏感数据的安全。通过选择“工具”菜单中的“启动”选项,您可以指定自定义的启动窗体、菜单,甚至自定义的标题和图标。还可以选择取消 Database 窗口,从而对缺乏相应技术的应用程序用户隐藏这些对象。“启动”对话框的各项功能也可以通过编程实现。有关如何从“启动”对话框设置启动选项的详细信息,请参阅 Access 帮助中的“关于启动选项”。有关如何通过编程设置启动选项的详细信息,请参阅 Access 帮助 Microsoft Visual Basic® 编辑器的“设置‘启动’选项和编码中的选项”。

设置数据库密码

您可以在数据库上设置密码,从而要求用户在访问数据和数据库对象时输入密码。

注意:使用密码保护数据库或其中的对象的安全性也称为共享级安全性。

您不能使用此选项为用户或组分配权限,因此任何掌握密码的人都可以无限制地访问所有 Access 数据和数据库对象。“设置数据库密码”命令位于“工具”菜单的“安全”子菜单中。

用户级安全性

除共享级安全性外,您还可以使用用户级安全性,它提供了最严格的访问限制,使您能够最大限度地控制数据库及其中包含的对象。这是我们所推荐的数据库保护措施的一部分(当和操作系统提供的文件级和共享级安全性结合使用时),因此我们将在本文后面对用户级安全性做详细介绍。

同样,我们也将讨论用于保护数据库中包含的 Visual Basic for Applications (VBA) 代码的各种方法。

警告:用户级安全性(在单独使用时)主要用于保护数据库中的代码和对象,以免用户不小心进行了修改或更改。如果不希望用户非法访问窗体、报表或模块中的代码,则必须将 .mdb 文件转换为 MDE 文件(本文后面将详细介绍)。要避免用户修改数据库中的查询、宏或数据访问页,唯一的方法就是将数据库文件放在一个受保护的文件共享区域中。此外,在 Access 中不可能既允许用户修改表中的数据,同时又禁止其修改表的设计或删除表。要提供这样一种功能,需要使用一个基于服务器的数据库产品,例如 Microsoft SQL Server™。设置模块密码

使用密码可以保护所有标准模块和类模块(例如窗体和报表中包含的代码)以免用户不小心修改或查看 VBA 代码。设置密码后,您只需在每次会话时输入一次密码,以便在 Visual Basic 编辑器中查看或修改代码。除查看和编辑外,在剪切、复制、粘贴、导出或删除任何模块时也都需要密码。但应该清楚的是,使用这种方法保护代码不能防止您或其他用户运行代码,也不能防止其他用户使用第三方实用程序(如 16 进制编辑器)来查看代码。要完全保护代码,必须将 .mdb 文件转换为 MDE 文件。

要为项目中的模块设置密码: 为该项目从 Visual Basic 编辑器的“工具”菜单中选择“属性”命令。 在“项目属性”对话框中,单击“保护”选项卡。 选中“查看时锁定工程”复选框并键入密码。 在“确认密码”框中,重新键入密码,然后单击“确定”。 使用 MDE 文件

通过将数据库文件转换为 MDE 文件,可以完全保护 Access 中的代码免受非法访问。将 .mdb 文件转换为 MDE 文件时,Access 将编译所有模块,删除所有可编辑的源代码,然后压缩目标数据库。原始的 .mdb 文件不会受到影响。新数据库中的 VBA 代码仍然能运行,但不能查看或编辑。数据库将继续正常工作,您仍然可以升级数据和运行报表。尤其是,将 Access 数据库保存为 MDE 文件可以防止以下操作: 在设计视图中查看、修改或创建窗体、报表或模块。 添加、删除或更改对对象库或数据库的引用。 使用 Access 或 VBA 对象模型的属性或方法更改代码 - MDE 文件不包含可编辑代码。 导入或导出窗体、报表或模块。而表、查询、数据访问页和宏可以导入非 MDE 数据库,或从中导出。

要将 .mdb 文件转换为 MDE 文件: 关闭数据库。 单击“工具”菜单中的“数据库实用工具”。 单击“生成 MDE 文件”。 在“保存数据库为 MDE”对话框中,找到 .mdb 文件,然后单击“生成 MDE”。 注意:在 Access 中创建的数据库使用默认的 Access 2000 文件格式。Access 2000 文件格式的数据库只能在 Access 2000 中转换为 MDE 格式。要在 Access 2002 中将以默认的 Access 2000 格式创建的 .mdb 文件转换为 MDE 文件,必须先将文件转换为 Access 2002 文件格式。为此,可以首先以独占方式打开数据库(要以独占方式打开数据库,请参阅本文后面的手动设置数据库密码一节)。接下来,指向“工具”菜单中的“数据库实用工具”,指向“转换数据库”,然后单击“转为 Access 2002 文件格式”。数据库即可转换为 MDE 文件。

有关将 .mdb 文件转换为 MDE 文件的更多要求,请参阅 Access 帮助中的“保护 Access 数据库中的 Visual Basic for Applications 代码”。

下面我们来看看用户级安全性。

关于 Access 用户级安全性

Access 使用 Microsoft Jet 数据库引擎来存储和检索数据库中的对象。Jet 数据库引擎使用基于工作组的安全模型(也称为用户级安全性)来判断谁可以打开数据库,并保护数据库所包含对象的安全。无论是否明确设置了数据库的安全性,用户级安全性对所有 Access 数据库始终处于打开状态。您可以通过操纵用户和组帐户的权限和成员身份来更改 Access 中的默认安全级别。下面将对此进行介绍。

无论何时启动 Access,Jet 数据库引擎都要查找工作组信息文件(默认名称为 system.mdw,也可以使用扩展名 .mdw 任意命名)。工作组信息文件包含组和用户信息(包括密码),这些信息决定了谁可以打开数据库,以及他们对数据库中的对象的权限。对单个对象的权限存储在数据库中。这样,例如,就可以赋予一个组的用户(而不是其他用户)使用特定表的权限,而赋予另一个组查看报表的权限,但不能修改报表的设计。

工作组信息文件包括内置组(Admins 和 Users)以及一个通用用户帐户 (Admin),该帐户具有管理数据库及其包含的对象的权限(无限制)。您也可以使用菜单命令(“工具”菜单中的“安全”子菜单)或者通过 VBA 代码添加新的组和用户。

注意:安装 Access 时,安装程序会自动创建工作组信息文件,并使用您指定的名称和单位信息来命名。因为这一信息通常很容易被判断出来,因而未经授权的用户很可能会创建另一个版本的工作组信息文件,从而在由该工作组信息文件定义的工作组中,为自己设定一个不可撤消的管理员帐户(Admins 组的成员)权限。为防止发生这种情况,应创建一个新的工作组信息文件,并指定唯一的工作组 ID (WID)。这样,只有知道 WID 的用户才能创建该工作组信息文件的副本。本文后面将讨论使用 User-level Security Wizard 创建新的工作组信息文件。

Admins 组不能被删除,其成员具有不可撤消的管理权限。您可以通过菜单或代码删除 Admins 组的权限,但 Admins 组的任何成员都可以重新添加权限。此外,Admins 组中必须始终至少有一个管理数据库的成员。对于没有进行安全设置的数据库,Admins 组始终包含默认的 Admin 用户帐户,它也是所有用户默认登录的帐户。

所有用户必须属于默认的 Users 组,不管他们是否还属于其他组。您可以在 VBA 中创建用户帐户,而并不将新的用户帐户添加到 Admins 组中。然而,如果不同时将该用户帐户添加到 Admins 组中,该用户将无法成功启动 Access,因为 Access 内部使用的用于管理数据库的很多表都映射到 Users 组的权限。

使用以下步骤进行 Access 数据库的安全设置: 将新用户帐户添加到 Admins 组中。该用户对数据库中的对象具有管理权限。 从 Admins 组中删除默认的 Admin 用户帐户。 从 Admin 用户和 Users 组中删除权限。 为所创建的任何自定义组分配权限。

在默认 Admin 用户帐户上设置密码会激活登录对话框,从而每次启动 Access 时都会提示用户输入用户名和密码。如果您没有在 Admin 帐户上设置密码,用户将自动作为 Admin 用户登录,无需密码,也不会出现登录对话框。

对数据库中对象的权限可以是显式的(直接分配给用户帐户)或隐式的(从用户所属的组继承),也可以是两者的结合。Access 在权限问题上使用“最少限制”规则,即用户的权限包括其显式和隐式权限的总和。例如,如果用户 A 的帐户具有限制权限,而用户 A 属于一个具有限制权限的组,同时也属于另一个具有管理(所有)权限的组,那么用户 A 将具有管理权限。有鉴于此,通常最好不要为用户帐户分配显式权限。而应创建具有不同权限的组,然后将用户分配给具有适当权限的组,这会减少数据库管理方面的麻烦。

在以下各节中,我们将展示如何通过用户界面和编程手段来保护数据库及其包含的对象。首先,我们来看看几种设置数据库密码的不同方法。

手动设置数据库密码

您可以为数据库设置密码,从而要求用户在访问数据库时输入密码。然而,一旦用户登录后,便可以不受限制地访问数据库中的数据和对象。

注意:在设置数据库密码之前,建议备份数据库并将其存储在一个安全的位置。

在设置数据库密码之前,需要以独占方式打开数据库。要以独占方式打开数据库: 如果数据库处于打开状态,关闭数据库。 单击“文件”菜单中的“打开”重新打开数据库。 在“打开”对话框中,找到数据库,单击“打开”按钮旁边的箭头,然后单击“以独占方式打开”。

要手动设置数据库密码: 在“工具”菜单中,指向“安全”,然后单击“设置数据库密码”。 在“密码”框中,键入密码。 注意:密码区分大小写。在“验证”框中,重新键入密码以确认,然后单击“确定”。

现在就设置了数据库密码。下次您或其他用户打开数据库时,会出现一个对话框要求输入密码。下面我们来看看如何通过编程设置数据库密码。

通过编程设置数据库密码

按以下语法使用关键字 ALTER DATABASE,您可以编程设置、修改或删除数据库密码。

ALTER DATABASE PASSWORD NewPassword OldPassword

在这个语句中,密码由方括号 ([]) 分隔的 String 值表示,但下述情况例外。

第一次设置数据库密码时,使用 NULL 关键字作为 ALTER DATABASE 语句中的 OldPassword 参数。要删除数据库密码,请使用 NULL 关键字作为 ALTER DATABASE 语句的 NewPassword 参数。在这些情况下,关键字 NULL 不应出现在方框中。

在使用以下过程之前,可能需要设置对 Microsoft ADO Ext 2.5 for DDL and Security 库的引用(如果尚未设置): 在 Visual Basic 编辑器中,指向“工具”菜单中的“引用”。将显示“引用”对话框。 选中 Microsoft ADO Ext 2.5 for DDL and Security 复选框。

请看以下第一次设置密码时的代码:

Private Function CreateDBPassword(ByVal Password As String, _ ByVal Path As String) As Boolean Dim objConn as ADODB.Connection Dim strAlterPassword as String On Error GoTo CreateDBPassword_Err ' 创建 SQL 串以初始化一个数据库密码。 strAlterPassword = “ALTER DATABASE PASSWORD [Password] NULL;” ' 打开不具有安全设置的数据库。 Set bjConn = New ADODB.Connection With objConn .Mode = adModeShareExclusive .Open “Provider=Microsoft.Jet.OLEDB.4.0;Data ” & _“Source=Path;”' 执行 SQL 语句对数据库进行安全设置。 .Execute (strAlterPassword) End With ' 清除对象。 objConn.Close Set bjConn = Nothing ' 如果成功,返回 true。 CreateDBPassword = TrueCreateDBPassword_Err: Msgbox Err.Number & “:” & Err.Description CreateDBPassword = False End Function

此过程接受用户的密码以及 .mdb 文件的路径。首先,我们声明一个变量,代表对不具有安全设置的数据库的连接,同时声明一个 String 变量以包含我们用于更改密码的 SQL 语句。下一步,我们将 strAlterPassword 设置给使用 ALTER DATABASE PASSWORD 关键字的 Jet SQL 语句。请注意,因为我们不是要替换密码,因而第二个参数被设置为 NULL。下一步,我们打开一个到该数据库的连接。要设置密码,必须以独占方式打开数据库,因此要设置 Mode 属性。然后执行 SQL 语句。您通常可以从一个数据库运行此过程,以便在一个单独的不具有安全设置的数据库中设置密码。如果一切正常,函数返回 True,

如果要更改具有安全设置的数据库的密码,首先需要使用旧密码登录数据库,然后再更改密码。以下过程显示了这一技术。

在使用以下过程之前,可能需要设置对 Microsoft ADO Ext 2.5 for DDL and Security 库的引用(如果尚未设置): 在 Visual Basic 编辑器中,指向“工具”菜单中的“引用”。将显示“引用”对话框。 选中 Microsoft ADO Ext 2.5 for DDL and Security 复选框。

请看以下过程:

Private Function ChangeDBPassword(ByVal OldPassword As String, _ ByVal NewPassword As String, ByVal Path As String) As Boolean Dim objConn as ADODB.Connection Dim strAlterPassword as String On Error GoTo ChangeDBPassword_Err ' 创建 SQL 串以更改数据库密码。 strAlterPassword = “ALTER DATABASE PASSWORD [NewPassword] [OldPassword];” ' 打开具有安全设置的数据库。 Set bjConn = New ADODB.Connection With objConn .Mode = adModeShareExclusive .Provider = “Microsoft.Jet.OLEDB.4.0” .Properties(“Jet OLEDB:Database Password”) = “OldPassword” .Open “Data Source=Path;” ' 执行 SQL 语句以更改密码。 .Execute (strAlterPassword) End With ' 清除对象。 objConn.Close Set bjConn = Nothing ChangeDBPassword = TrueChangeDBPassword_Err: Msgbox Err.Number & “:” & Err.Description ChangeDBPassword = False End Function

此过程与前面的子例程类似,只是在登录具有安全设置的数据库时,需要使用更改之前的旧密码。为此,针对要更改的数据库,我们设置了 Connection 对象的 Database Password 属性。这是 Connection 对象的扩展属性之一,所以我们使用了如上所示的特殊语法。要从具有安全设置的数据库中删除密码,也可以使用此过程,只需将 ALTER DATABASE 语句的第一个参数替换为 NULL 关键字即可。

下面我们来看看如何实现比在数据库中设置密码更强大的保护手段。

使用 Security Wizard 设置 Access 数据库的安全性

可以使用 Security Wizard 设置数据库的安全性。为此,请执行以下步骤: 打开要设置安全性的数据库。 在“工具”菜单中,指向“安全”,然后单击“设置安全机制向导”。将显示“设置安全机制向导”对话框。 因为我们要创建一个新的工作组信息文件,因此请确保选中此选项,然后单击“下一步”。 在“设置安全机制向导”对话框的第二个屏幕中(见图 1),为工作组信息文件键入一个新名称,或者接受默认名称。键入一个工作组 ID (WID)。WID 唯一标识了此工作组文件的 Admins 组。下一步,在相应的文本框中键入您的姓名和单位。虽然这些输入是可选的,但最好还是填入,因为只有知道这些信息的人才能重新创建工作组信息文件。

图 1:“设置安全机制向导”对话框的第二个屏幕

您也可以选择是否使用此工作组信息文件作为所有数据库的默认文件,或者只是用于这个特定的数据库。单击“创建快捷方式,打开设置了安全机制的数据库”选项,然后单击“下一步”。 在下一个屏幕中(见图 2),可以选择希望向导设置其安全机制的对象。默认情况下,向导将为所有现有对象和所有新创建的对象设置安全机制。单击“下一步”。

图 2:“设置安全机制向导”对话框的第三个屏幕

在下一个屏幕中(见图 3),您可以选择可选的具有特定权限的安全组。我们强烈建议您使用组来管理用户的访问权限,而不是赋予每个用户特定的权限。选择任何其他组帐户,然后单击“下一步”。

图 3:“设置安全机制向导”对话框的第四个屏幕

在此屏幕中(见图 4),您可以为 Users 组设置特定的权限。因为所有用户都自动成为 Users 组的成员,在此选择的任何权限都会应用于所有用户,所以最好限制该组的权限,或者保留默认设置 - 没有任何权限。单击“下一步”。

图 4:“设置安全机制向导”对话框的第五个屏幕

在下一个屏幕中(见图 5),您可以向工作组信息文件中添加用户。还可以为每个用户选择密码和个人 ID (PID)。Access 使用 PID 和帐户名为工作组标识唯一的用户。添加用户并单击“下一步”。 注意:个人标识符 (PID) 不是密码。它被加密并与名称一起创建了一个唯一的系统标识符 (SID),用于标识用户。

图 5:“设置安全机制向导”对话框的第六个屏幕

在此屏幕中(见图 6),您可以向工作组信息文件中的组添加用户。进行您的选择后单击“下一步”。

图 6:“设置安全机制向导”对话框的第七个屏幕

在最后一个屏幕中,为不具有安全设置的数据库的备份选择一个名称。保护好此原始数据库的备份是很有必要的,以防万一丢失或损坏了具有安全设置的数据库。单击“完成”。原始数据库将用 .bak 扩展名保存。 警告:当创建工作组信息文件后,Security Wizard 将创建一个报表,其中包含重新创建工作组信息文件所需的所有信息。您必须保存好此信息,以便在原始文件丢失或损坏时重新创建文件。单击“完成”后,Security Wizard 将加密数据库,然后要求您使用新的工作组信息文件重新打开进行了安全设置的数据库。

下面我们来看看几种编程使用用户和组的方法。

通过编程添加和删除用户和组

为数据库设置了安全性后,您可能需要使用用户和组。以下各节展示了其中的一些技巧。

在使用以下各节介绍的过程之前,可能需要设置对 Microsoft ADO Ext 2.5 for DDL and Security 库的引用(如果尚未设置): 在 Visual Basic 编辑器中,指向“工具”菜单中的“引用”。将显示“引用”对话框。 选中 Microsoft ADO Ext 2.5 for DDL and Security 复选框。 添加和删除用户

以下过程将创建一个新的用户帐户,然后将其追加到用于当前数据库的工作组信息文件中的默认 Users 组。

注意:要在 Access 中使用下面的示例,您需要作为 Admins 组的成员登录并打开一个数据库。在下面的过程中,您要确保工作组信息文件不包含在 strUser 中指定了其名称的用户。例如,您可以先调用 DeleteUser 子例程来确保这一点。

请看以下代码:

Private Function AddUser(ByVal strUser As String, _ ByVal strPID As String, _ Optional ByVal strPwd As String) As Boolean Dim catDB As ADOX.Catalog On Error GoTo AddUser_Err ' 实例化 Catalog 对象。 Set catDB = New ADOX.Catalog With catDB ' 使用到当前数据库的连接打开 ' Catalog 对象。 .ActiveConnection = CurrentProject.Connection ' 创建新的用户帐户。 .Users.Append strUser, strPwd, strPID ' 向默认 Users 组追加新的用户帐户。 .Groups(“Users”).Users.Append strUser End With ' 关闭 Catalog 对象。 Set catDB = Nothing AddUser = TrueAddUser_Err: Msgbox Err.Number & “:” & Err.Description AddUser = False End Function

该过程首先为 Catalog 对象声明一个变量,然后实例化该对象。

注意:Catalog 对象是 Access 数据库文件中所有对象的容器。

然后,该过程打开到当前数据库的连接,并使用来自调用过程的参数,将新用户追加到 Catalog 对象的 Users 集合中。然后新用户被追加到默认的 Users 组。Users 集合包含了在工作组信息文件中定义的数据库的所有用户。

要删除现有用户,可以使用以下过程:

Private Function DeleteUser(ByVal strUser As String) As Boolean Dim catDB As ADOX.Catalog On Error GoTo DeleteUser ' 实例化 Catalog 对象。 Set catDB = New ADOX.Catalog With catDB ' 在当前数据库中打开 Catalog 对象。 .ActiveConnection = CurrentProject.Connection ' 删除 strUser。 .Users.Delete strUser End With ' 关闭 Catalog 对象。 Set catDB = Nothing DeleteUser = TrueDeleteUser_Err: Msgbox Err.Number & “:” & Err.Description DeleteUser = FalseEnd Function

此过程与前面的过程类似,只是使用了 Catalog 对象的 Delete 方法删除了在 strUser String 参数中指定的用户。

添加和删除组

添加组的过程与添加用户的过程类似。

Private Function AddGroup(ByVal strGroup As String, _ ByVal strPID As String) As Boolean Dim catDB As ADOX.Catalog On Error GoTo AddGroup_Err Set catDB = New ADOX.Catalog With catDB ' 在当前数据库中打开 Catalog 对象。 .ActiveConnection = CurrentProject.Connection ' 创建新的组。 .Groups.Append strGroup, strPID End With ' 关闭 Catalog 对象。 Set catDB = Nothing AddGroup = TrueAddGroup_Err: Msgbox Err.Number & “:” & Err.Description AddGroup = FalseEnd Function

此过程首先实例化 Catalog 对象,然后打开一个到当前数据库的连接。接下来,通过使用来自调用过程的参数,将新组追加到 Catalog 对象的 Groups 集合。

要删除现有组,可以使用以下过程:

Private Function DeleteGroup(ByVal strGroup As String) As Boolean Dim catDB As ADOX.Catalog On Error GoTo DeleteGroup_Err Set catDB = New ADOX.Catalog With catDB ' 在当前数据库中打开 Catalog 对象。 .ActiveConnection = CurrentProject.Connection ' 删除 strGroup。 .Groups.Delete strGroup End With ' 关闭 Catalog 对象。 Set catDB = Nothing DeleteGroup = TrueDeleteGroup_Err: Msgbox Err.Number & “:” & Err.Description DeleteGroup = FalseEnd Function

此过程与前面的过程类似,只是使用了 Catalog 对象的 Delete 方法删除了在 strGroup String 参数中指定的组。

下面我们来看看如何通过编程设置对数据库对象的权限。

通过编程设置权限

要对数据库中的各种对象设置权限,可以使用 Group 或 User 对象的 SetPermissions 方法。在下面的过程中,我们首先撤消组的所有权限,然后再赋予组特定的权限。这样可以确保该组只具有我们指定的权限:

Private Function SetGroupPermissions(ByVal strGroup As String, _ ByVal strTable As String, ByVal strObjectType As String, _ ByVal strAction As String, _ ByVal strRevokeEnum As String) As Boolean Dim catDB As ADOX.Catalog On Error GoTo SetGroupPermissions_Err Set catDB = New ADOX.Catalog With catDB ' 在当前数据库中打开 Catalog 对象。 .ActiveConnection = CurrentProject.Connection ' 撤消组的所有权限。 .Groups(strGroup).SetPermissions tblTable, _strObjectType, strAction, strRevokeEnum ' 赋予组特定的权限。 .Groups(strGroup).SetPermissions tblTable, _strObjectType, strAction, _ adRightRead Or adRightInsert Or adRightUpdate End With ' 关闭 Catalog 对象。 Set catDB = Nothing SetGroupPermissions = TrueSetGroupPermissions_Err: Msgbox Err.Number & “:” & Err.Description SetGroupPermissions = False End Function

在当前数据库中打开一个 Catalog 对象后,我们使用了 Groups 集合的 SetPermissions 方法,撤消了该组对 Employees 表的所有权限。第一个参数是表的名称,第二个参数显示了对象的类型,这里是表。第三个参数指定了在设置权限时要执行的操作的类型,第四个参数是一个权限常数,指定了该组没有任何权限。我们已经撤消了该组对 Employees 表的所有权限,现在可以赋予其所希望的权限。

下一个语句的前三个参数与前一个语句中的相同。第四个参数是通过使用 Or 运算符,组合不同的权限常数所创建的一个值。这里,我们赋予了读取、插入和更新该表的权限。

要对指定类型(例如上述示例中的表)的所有新对象设置权限,请将用于赋予权限的语句中的第一个参数更改为 NULL 关键字。例如:

...catDB.Groups(strGroup).SetPermissions NULL, adPermObjTable...

小结

在本文中,我们讨论了实现 Access 数据库不同保护级别的各种方法,介绍了共享级和用户级安全性。同时还介绍了如何使用 Access Security Wizard 以及如何通过编程来实现安全设置。

篇8:mysql数据复制到access数据库数据库教程

access|mysql|数据|数据库

mysql数据库表sqltable

字段id,name,sex,email

access数据库表accesstable

id,name,sex,email

$connect = mysql_connect(“localhost”,“”,“”);

mysql_select_db(“mydatabase”);

$sql = “select * from sqltable;

$result = mysql_query($sql};

$connectodbc=odbc_connect(”DSN“,”USERNAME“,”PASSWORD“);

while($row = mysql_fetch_row($result))

{

$sql=”insert into accesstable

values($row[“id”,$row[“name”,$row[“sex”],$row[“email”])";

odbc_do($connectodbc,$sql);

}

odbc_close($connectodbc);

mysql_close($conect);

?>

【本文版权归作者与奥索网共同拥有,如需,请注明作者及出处】

篇9:在PowerBulider中读写IC卡数据库教程

在PowerBulider中读写IC卡

在写相关的信息管理系统时,有时会遇见读写相关的外部设备等问题,这类的问题,在PowerBulider中实现这类的功能并不是一件难事,现在的相关外部设备厂商在提供产品时,基本都提供了相关编程接口,利用这些接口函数后ActiveX控件,结合PowerBulider中外部函数的调用,可以轻松的实现相关功能,以下提供读写IC卡实现的基本代码,以期消除相关编程人员对读写外部设备等问题的恐惧心理

外部函数声明:

Subroutine PostPara(long prot,strig syspara) library “lock739.dll”//传递参数,主要传递串口信息

Function long Reset() library “lock739.dll”//读写复位

Function Boolean OpenCom () library “lock739.dll”//打开串口

Subroutine CloseCom() library “lock739.dll”//关闭串口

Function long ChkCard() library “lock739.dll”//检查卡是否到位

Function long CmpSc(string sc) library “lock739.dll”//核对密码

Function long WriteSc(string sc) library “lock739.dll”//修改加密卡密码

Function long ReadSc(string inbuff,long sclen) library “lock739.dll”//度曲加密卡密码

Function long RdDat(long cardtype,long start,long ilen,ref string inbuff) library “lock739.dll”//读卡信息

Function long WrDat(long cardtype,long start,long ilen,ref string outbuff)library “lock739.dll”//写卡信息

实例变量:

public string sc=’272272272’

写卡函数:wf_write(string as_arg1,long al_start,long al_len)

/*参数 string as_arg1 写入的字符串;

long al_start 写入的位置

long al_len 写入的长度*/

long l_rtn

if opencom()=false then

messagebox(“提示”,”串口连接失败”)

return

end if

l_rtn=chkcard()

if l_rtn0 then

wf_errormessage(l_rtn)

closecom()

return

end if

l_rtn=cmpsc(sc)//sc为密码

if l_rtn0 then

wf_errormessage(l_rtn)

closecom()

return

end if

l_rtn=wrdat(1,al_start,al_len,as_agr1)

if l_rtn0 then

wf_errormessage(l_rtn)

closecom()

return

end if

messagebox(“提示”,”写卡成功!”)

读卡函数:wf_read(string as_arg1,long al_start,long al_len)

/*参数 string as_arg1 保存读出信息的字符串;

long al_start 开始读卡入的位置

long al_len 读卡的长度*/

long l_rtn

if opencom()=false then

messagebox(“提示”,”串口连接失败”)

return

end if

l_rtn=chkcard()

if l_rtn0 then

wf_errormessage(l_rtn)

closecom()

return

end if

l_rtn=rddat(1,al_start,al_len,as_agr1)

if l_rtn0 then

wf_errormessage(l_rtn)

closecom()

return

end if

messagebox(“提示”,”读卡成功!”)

显示错误函数:wf_errormessage(long lerror)

choose case lerror

case 1

messagebox(“提示”,”写入错误或密码错误!”)

case 2

messagebox(“提示”,”卡已损坏或参数越界!“)

case 3

messagebox(“提示”,”请插卡!”)

case 4

messagebox(“提示”,”通讯错误!”)

case else

messagebox(“提示”,”未知错误!”)

end choose

初始化卡函数wf_initialcard(long al_port)

/*参数:long al_port 传入读写器使用的串口*/

psotpara(al_port,””)

以上的例子代码所使用的ic卡为sle4442 加密存储器卡,读卡器为wb1000 IC卡读写器

通过以上代码的示例,实现与外部设备的通讯,并不是一件很难的时吧?!

vba心得体会

计算机与网络英语词汇(A2)

PowerDesign9.5+ 中的GTL编程 解决大问题数据库教程

9月计算机二级Access考前试题及答案

Coredraw表格导入终极解决方案

9月全国计算机等级考试二级VFP笔试试卷

计算机与网络英语词汇(I1)

计算机与网络用语中英翻译

优化其索引的小技巧数据库教程

9月计算机二级《公共基础》模拟试题

ACCESS数据库中Field对象的caption属性读写数据库教程
《ACCESS数据库中Field对象的caption属性读写数据库教程.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

【ACCESS数据库中Field对象的caption属性读写数据库教程(通用9篇)】相关文章:

小技巧:用批处理对MySQL进行数据操作数据库教程2023-03-28

vb教学设计2022-04-29

vb试题及答案2023-04-26

计算机试题2022-10-16

9月全国计算机等级考试二级C语言笔试试卷2023-06-17

sql连接语句2023-07-30

Flash编程绘画的简单运用2022-05-06

计算机与网络英语词汇(R1)2023-09-03

检查Oracle数据库中不合理的sql语句数据库教程2023-01-19

用vfp编写Web Service2023-08-25