VB 程序设计

10个成员

开发ADOCE搭配WinCE资料存取应用程序

发表于 2016-12-21 2708 次查看
使用 ADOCE
使用 ADOCE,您可以将资料库移至您 Windows CE 基础的装置或是从您 Windows CE 基础的装置移出。 您也可以在桌上型电脑装置上与一个模拟器上建立或存取资料库。以下的章节将描述如何使用 ADOCE 及其案例。注意 ControlConsts.bas 安装在 \Program Files\Microsoft Visual Studio\VB98\VBCE\Samples 目录内。此当案包含有在 ADOCE 与其他控制列举的定义。

需要的软体
如要使用 ADOCE 控制,您需要以下的软体:

Microsoft Windows CE Services 版本 2.1 或更早的版本

Microsoft Windows NT Workstation 版本 4.0 或是 Windows 95 或 98

您使用装置的 Microsoft Windows CE Platform SDK

Microsoft Visual Basic 专业版 6.0 开发系统或是 Microsoft Visual Basic 企业版 6.0

Microsoft Windows CE Toolkit for Visual Basic 版本 6.0

注意:ADOCE 控制包含在 Windows CE Toolkit for Visual Basic 之内。

在桌上型电脑与装置之间移动资料库
您可以在一个桌上型电脑与一个 Windows CE 基础的装置之间来回移动资料库 表格。储存在桌上型电脑的资料库是 Microsoft Access database 格式。储存在装置 的资料库被存为标准 Windows CE 基础表格与加至 ADOCE 系统表格的额外资讯

从桌上型电脑拷贝一个资料库至装置

连接装置与桌上型电脑并开启 Mobile Devices 视窗。

在 Mobile Devices 视窗从工具功能表选择汇入资料库表格。会显示出开启对话方块。

选取包含有您要汇入的表格的 Access .mdb 档案。从资料库至 Mobile Device 汇入对话方块与资料库的表格与栏位清单会显示出来。

选取您要汇入的表格与栏位的核取方块,并且清除您不要汇入的表格与栏位的核取方块。

对您希望要唯读的表格,选取唯读核取方块。

如果您要取代装置内与 .mdb 档案名称相同的表格,选取覆盖现存的表格与 / 或资料核取方块。

选择确定开始转换。

从桌上型电脑拷贝一个资料库至装置

连接装置与桌上型电脑并开启 Mobile Devices 视窗。

在 Mobile Devices 视窗,从工具功能表选择汇出资料库表格。从 Mobile Device 至资料库汇出对话方块会显示出来,在连接的装置上显示 ADOCE 表格。

选择浏览按钮以选取一个 Access .mdb 档案。您也可以在位置方块输入路径与档案名称。如果档案不存在,ADOCE 会为您建立。

选取您要汇出表格的核取方块,然後清除您不要汇出表格的核取方块。ADOCE 会将所有选取的表格放入 .mdb 档案。

如果您要取代在 .mdb 档案内的表格,此表格与所选取的 ADOCE 表格名称相同,选取覆盖现存的表格与 / 或资料核取方块。

选择确定开始转换。

对於计划控制将 .mdb 档案转换至 ADOCE 表格及将 ADOCE 表格转换至 .mdb 档案,您可以各别使用 DesktopToDevice 与 DeviceToDesktop 函数。这些函数行为类似於从资料库至 Mobile Device 汇入与从 Mobile Device 至资料库汇出对话方块,但使用者选择对话方块不会显示 出来。所有进度列会显示出来,表示转送的状态。一个传回错误不会自动引起登录 档案显示。取而代之的是,函数会传回一个错误值 HRESULT,呼叫的应用 程式可以采取适当的动作。

使用 DesktopToDevice 函数,您可以指定转换哪一个栏位。然而,使用 DeviceToDesktop 函数,预设为转换表格中所有的栏位。

下列程式码案例显示一个简单的 Visual Basic 应用程式,其以不同步方式将一个 被包括在 Visual Basic 的 Northwind 资料库的子集拷贝至装置,但是覆盖任何现存的 Northwind 表格。Employees 表格以唯读表格传送,然而 Products 表格可以被更新。

Declare Function DesktopToDevice Lib "c:\program files\windows ce services\adofiltr.dll" _
(ByVal desktoplocn As String, _
    ByVal tablelist As String, _
    ByVal sync As Boolean, _
    ByVal overwrite As Integer, _
ByVal devicelocn As String) As Long

result = DesktopToDevice ("c:\mydbs\nwind.mdb", _
"!Employees..Products.ID.Name.Quantity..", False, True, "")
If result <> 0 Then MsgBox "An error occurred transferring the data"

建立一个表格
在您可以使用 ADOCE 控制存取资料之前,您必须要有一个用以储存资料的表 格。下列的程式码案例显示如何在一个 H/PC(手提式个人电脑)执行专业软体的资 料库目录内建立一个新的 ADOCE 表格。

Dim rs
Set rs = CreateObject("adoce.recordset")
rs.Open "create table mytable (firstfield text, secondfield integer)"
Set rs = Nothing

因为 SQL 陈述式变更一个表格的结构使得记录组被关闭,您不能读取或是写入资 料直到记录组重新被开启。

排序一个表格
您可以排序一个资料库,使用 Order By 陈述式,用索引或不用索引都 可以。然而,不用索引排序的资料库一般较用索引排序的资料库速度为慢。下 列的程式码案例显示如何不用索引排序一个资料库。它需要一个名为 List1 的清单方块。

Dim rs
Set rs = CreateObject("ADOCE.RecordSet")
rs.open "select * from mytable order by firstfield desc", "", adOpenKeyset, adLockOptimistic
If rs.RecordCount > 0 Then
  Do While Not rs.EOF
   List1.Additem rs.Fields("firstfield").Value
   rs.MoveNext
   Loop
End If
rs.Close
set rs = Nothing

下列程式码案例显示如何在一个资料库建立一个索引,用以增加排序的速度。它需要一个名为 List1 的清单方块。

Dim rs
Set rs = CreateObject("ADOCE.RecordSet")
rs.open "create index i1 on mytable (firstfield desc)"
rs.open "select * from mytable order by firstfield desc", "", adOpenKeyset, adLockOptimistic
If rs.RecordCount > 0 Then
  Do While Not rs.EOF
   List1.Additem rs.Fields("firstfield").Value
   rs.MoveNext
   Loop
End If
rs.Close
set rs = Nothing

储存与取出资讯
如要在资料库中新增、移除或变更资讯,当在开启记录组时,您必须变更预设的 CursorType 与 LockType。下列程式码案例显示如何在资料库中储存资讯:

Dim rs
Set rs = CreateObject("ADOCE.RecordSet")
rs.open "mytable", "", adOpenKeyset, adLockOptimistic
rs. Addnew
rs.fields("firstfield") = "ActiveX Data Objects"
rs.fields("secondfield") = 1.8
rs.Update
rs.Close
Set rs = Nothing

如果您使用 AddNew 方法与其参数,您不需要使用 Update 方法,因为资料库会自动变更。以下程式码案例显示如何使用 AddNew:

rs.Addnew "firstfield", "Windows CE"

如要变更一个记录,对栏位做一个需要的变更然後使用 Update 方法。如果您使用 Update 及其参数,资料库会自动变更。以下的程式码案例显示如何使用 Update:

rs.Update "firstfield", "ADOCE"

在您使用 AddNew 与 Update 储存资料库资料之後,您可以使用 Value 属性来取得储存在一个栏位的资讯。以下的程式码案例显示如何从一个 ADOCE 资料库取出资讯。它需要一个名为 List1 的清单方块。

Dim rs
Set rs = CreateObject("ADOCE.RecordSet")
rs.open "mytable", "", adOpenKeyset, adLockOptimistic 
If rs.RecordCount > 0 Then
  Do While Not rs.EOF
   List1.Additem rs.Fields("firstfield").Value
   rs.MoveNext
   Loop
End If
rs.Close
set rs = Nothing

分送 ADOCE 应用程式
ADOCE 应用程式元件必须分别安装在桌上型电脑与装置两处。分送一个 ADOCE 应用程式的一个方式是修改范例安装应用程式,其包含在 Microsoft Windows CE Toolkit for Visual Basic 6.0 中。 所有的 ADOCE 安装应用程式会验证 Windows CE Services 2.1 或更早的版本是否已安装并且对您的应用程式新增参照至 ADOCE .cab 档案至 AppMgr .ini 档案。

使用一个 H/PC(手提式个人电脑) 执行专业版软体

本节描述额外的程序,可以在一个手提式个人电脑执行 Microsoft Windows CE 手提式个人电脑专业版本 3.0。

建立一个资料库
下列程式码案例显示如何在一个 H/PC(手提式个人电脑) 执行专业版软体建立一个外部的资料库:

Dim rs
Set rs = CreateObject("adoce.recordset")
rs.Open "create database '\mydatabase.cdb'"
Set rs = Nothing

从一个 .cdb 档案取出资讯
如果您在一个执行专业版软体的 H/PC(手提式个人电脑) 建立一个资料库,您可以用连接参数传送路径至资料库以存取此资料。所有的作业可以用一个执行在 .cdb 档案的空字串 ("") 藉由变更连接字串来执行。以下的程式码显示如何从一个 .cdb 档案取出资讯:

Dim rs
Set rs = CreateObject("ADOCE.RecordSet")
rs.open "mytable", "\mydatabase.cdb", adOpenKeyset, adLockOptimistic
If rs.RecordCount > 0 Then
  Do While Not rs.EOF
   List1.AddItem rs.Fields("firstfield").Value
   rs.MoveNext
   Loop
End If
rs.Close
set rs = Nothing

摘要
ADOCE 是一个应用程式阶层的资料存取物件模组,可以使用在 Windows CE Toolkits for Visual Basic。ADOCE 新增了新的资料库功能至 Windows CE 可以存取储存在本机装置的资料库并提供对一个网路资料库的资料复制与资料同步。 ADOCE 的速度与容易使用,加上使用少量额外记忆体以及占用磁碟空间很小,使得其与精简、强而有力并快速的 Windows CE 作业系统搭配非常理想。

更多的资讯
有关 Windows CE 与内嵌发展工具最新的资讯,请拜访 Microsoft Windows CE Web 网站 http://www.microsoft.com/windowsce/default.asp。

有关 ActiveX 控制的资料,请拜访 http://www.microsoft.com/com/tech/activex.asp。

 

发表回复
你还没有登录,请先登录注册