|
|
您需要具备 Visual Basic 6.0 eMbedded Visual Basic 3.0 Microsoft ADO for Windows CE SDK (ADOCE) version 2.0 (在此下载) Pocket PC SDK 下载本示例的源代码 须知 我们的讨论过程基于Microsoft 的一个叫做EmulDemo/EmulDB的示例程序,它可以从可在此下载的Microsoft ADO for Windows CE SDK (ADOCE) 2.0 中找到。在安装之前,SDK需要进行一些“调整”。具体做法您可以在这篇知识库文章中了解到。 在示例中,引用了一个叫做Empfile.exe 的程序,对于Pocket PC来说,它根本不存在,您可以忽略它。 一些背景知识... 在把Access 2000数据库复制到仿真环境中所需要用到的示例程序叫做EmulDemo。在您安装了Microsoft ADO for Windows CE SDK (ADOCE) 2.0 之后,“sample”目录下含有两个Microsoft Visual Basic工程: vbEmulDB.vbp: 此工程把 .mdb文件转换为 .tbd 文件,并且把 .tbd 文件复制到仿真环境中。 EmulDB.vbp: 此工程把 .tbd 文件转换为ObjectStore表。 不用担心,您将很快修正第二个工程,使它能把表存储为.cdb文件。 尽管您直接简单地加载Visual Basic工程并运行它们也不错 - 但是,在您做这些之前,还有几个步骤要完成。 记住,您正在处理Access 2000数据库! 而这个演示是为Access 97写的,因此为了使用本演示,您必须做一些额外的工作。如果您还在使用Access 97,您可以跳过开始的头两个步骤。本演示是使用用于桌面电脑的DAO(Data Access Objects)写的,而不是ADO(Active Data Objects)。 让我们现在开始... 为了能使用EmulDemo,您需要修改vbEmulDB 工程中的一个对象引用,把它从Microsoft DAO 3.51 Object Library改为Microsoft DAO 3.6 Object Library。 在Visual Basic 中打开vbEmulDB,并且从“工程”菜单中选择“引用”。 在出现的引用对话框中,取消对Microsoft DAO 3.51 Object Library 的选择并选中 Microsoft DAO 3.6 Object Library。 vbEmulDB 使用了一个叫做empfile.exe 的程序来把.tdb结果文件复制到仿真环境中。对于Pocket PC 仿真,不再需要该文件。您可以直接把.tdb文件复制到仿真目录树下。 为了能够使用vbEmulDB,您必须做以下一些修改。 进入cmdCopyEmul_Click() 子程序,然后找到以下行: xfer = "empfile -c " & Chr(34) & LogFilePath & Chr(34) & " " & Chr$(34) & "WCE:" & filename & Chr$(34) 把该行改为: xfer = "copy " & Chr(34) & LogFilePath & Chr(34)& " " & Chr$(34) & 揬Windows CE Tools\wce300\MS Pocket PC\emulation \palm300\My Documents " & Chr$(34) 我还发现在使用某些Access 2000 数据库的时候,vbEmulDB 程序会创建内部带“0”的奇怪长字符串,这会把Windows CE文件控制完全搞乱。 为了修正这个问题,把StripChar 子程序修改为: Function StripChar(ByVal FieldVal As Variant) As String Dim ReplaceChar As Variant Dim TxtFieldVal As String Dim ChrPos As Integer TxtFieldVal = FieldVal For Each ReplaceChar In Array(Chr$(13), Chr$(10), Chr(34)) Do ChrPos = InStr(1, TxtFieldVal, ReplaceChar) If (ChrPos > 0) Then Mid(TxtFieldVal, ChrPos, Len(ReplaceChar)) = " " End If Loop While (ChrPos > 0) Next ReplaceChar ChrPos = 1 While Mid(TxtFieldVal, ChrPos, 1) <> Chr$(0) And _ ChrPos < Len(TxtFieldVal) ChrPos = ChrPos + 1 Wend TxtFieldVal = Left(TxtFieldVal, ChrPos - 1) StripChar = Chr(34) & TxtFieldVal & Chr(34) End Function 现在,启动程序,选择您的.mdb 文件并转换它,然后使用窗体上的按钮把它复制到仿真环境中。 如果查看仿真环境的“我的文档”文件夹,您会看见新创建的.tdb文件。您还可以在桌面上打开这个文件,并且您会发现它实际上是重新创建整个数据库的一系列SQL 语句。 您可能可以猜到EmulDB 工程所做的工作是什么...,它只是加载了这个文件,然后执行了其中所有的语句。在Handheld PC上运行的Windows CE version 2.0 没有Pocket Access。因此EmulDB 工程在ObjectStore中创建这些表。幸运的是,ADOCE 2.0中有一条没有被写进文档的语句,叫做: CREATE DATABASE lt;DatabaseName.CDB> 因此,您需要稍微对EmulDB中的代码进行修改,使表能以.tdb文件的形式创建。但是首先,您必须要在仿真环境中安装Windows CE File Control 3.0,因为EmulDB 要使用这个控件。 启动Windows CE Control Manager,从eMbedded Visual Basic 的“工具”菜单,在仿真环境中安装“Windows CE File System Control 6.0”。 在eMbedded Visual Basic 中加载EmulDB ,然后找到 CreateTable(Path)子程序。 在子程序的顶部添加以下代码: Dim rs Set rs = CreateObject("ADOCE.Recordset.3.0") rs.Open "CREATE DATABASE '\My Documents\<YourDatabaseName>.cdb'" 在Rs_Open(SQLStr)子程序中,找到这一行: rs.Open SQLStr, , 2, 3 然后把该行改为: rs.Open SQLStr, “\My Documents\.CDB”, 2, 3 现在,下载EmulDB 程序并运行它。输入您的.tdb文件的完整路径并点击“创建表...”。如果EmulDB 报告有错误,您可以手动地修改桌面上的DeluxeCD.tdb 文件,然后用文件管理器把它复制到仿真环境下。 结论 Microsoft 正在为Microsoft ADO for Windows CE (ADOCE)的下一个版本开发更好的解决方案。到那时,用几行代码就可以完成这个任务。
|
|