首页 Soft PlugIn RAN乱 Dev开发 Info资料 English WAP 留言 登陆 注册
-
Posted by Yippee | 评论(0) | 引用(0) | 阅读2192次
VB+Access数据库开发的两个小工具

一、MDBDIFF
 
 
我在进行VB+Access数据库开发时http://www.shengfang.org,使用ACCESS可以方便直接的修改数据库结构。软件开发过程中经常要进行修改变更,往往是这里提出修改,我这里用ACCESS改完结构,随即就开始进行VB编码了。

最后问题来了,http://www.shengfang.org版本升级后,在编写文档或者原用户数据库升级时需要详细的数据库升级前后的差异比较时,我就只好一个表单一个表单进行比较了,当表单比较多时,头晕眼花,非常容易导致遗漏。

实在受不了手工比较,http://www.shengfang.org经过一阵搜索,终于找到了MDBDIFF软件,解决了我这个大问题。

它可以比较两个MDB数据库结构,http://www.shengfang.org表、字段、索引、关联、查询等差异都可以列举出来。从主文件后缀名来看,它是用ACCESS打开的MDE 文件,应该是使用ACCESS的VBA编制后进行编译的。

双击运行后,出现向导界面引导操作,http://www.shengfang.org分别选择需要比较的两个数据库文件;是否密码输入;选择比较的项目,最后选择屏幕显示(以表格显示)、打印以及另存为文件就可以了。非常方便。

这是一个自由文件,可以从其网站下载

(这里分ACCESS97和ACCESS2000两个版本)

国内可以从这里下载 http://www.shengfang.org

(这里是ACCESS2000版本)

二、数据库结构打印
在找MDBDIFF时,http://www.shengfang.org上述国内网站还有一个  Access 数据库表结构打印程序软件的说明是:对于数据库软件开发人员,常常苦于不记得表名和字段名,常常编一下程序又把窗口切换到Access查看名称。本软件用于将Access库里所有的表结构以简捷明了的形式打印到Word,供你进一步打印出来以供编程时候随时查阅。

的确让我心动,http://www.shengfang.org然而下载下来一使用,发现两点不好,一个是这软件需要注册,未注册的版本具有 30 天的使用时间限制;另外一个不支持带密码保护的数据库。实在不方便。于是就想干脆自己做一个好了。
过程
 
 

以前使用DAO时,http://www.shengfang.org可以通过Database对象、TableDefs集合获得各个表的定义(TableDef对象)。再通过TableDef.Fields集合获得表的各个字段,由Field对象的属性获得字段名、字段类型等信息。

但是使用ADO就没有上述对象、集合了,http://www.shengfang.org应该使用ADOX进行编程,基本过程如下:

1、  升级VB到SP5

2、  添加引用:“Microsoft ADO Ext. for DDL and Security.”

3、  新建一个窗口,添加一个按钮

4、  在按钮点击事件中添加如下代码:

Dim cat As New ADOX.Cataloghttp://www.shengfang.org

cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;_
Persist Security Info=True;Data Source=" + “c:\r2k.mdb" + ";_
Jet OLEDB:Database Password='123456'"

‘连接数据库http://www.shengfang.org

Dim i As Integer

Dim j As Integer

For i = 0 To cat.Tables.Count – 1 ‘循环所有表单

Debug.Print "http://www.shengfang.org表单名称:" + cat.Tables(i).Name

For j = 0 To cat.Tables(i).Columns.Count – 1 ‘循环表单所有字段

Debug.Print "字段名称:http://www.shengfang.org" + cat.Tables(i).Columns(j).Name

Debug.Print "字段类型:http://www.shengfang.org" + GetDataTypeEnum(cat.Tables(i).Columns(j).Type)

Debug.Print "字段大小:http://www.shengfang.org"; Format(cat.Tables(i).Columns(j).DefinedSize)

Next

Next

Set cat=Nothing

其实,ADOX提供了类似DAO TableDefs集合的 TABLES、Columns等集合,经过循环,就能方便的获得各个表单名称以及表单字段的定义和http://www.shengfang.org大小。大家可以自行进行完善,例如写入文件、获得默认值、索引等

上面代码用到了一个函数GetDataTypeEnum,因为cat.Tables(i).Columns(j).Type返回的都是数字,不是很直观,所以用这函数将其转化为VB的http://www.shengfang.org常量定义。
 
函数在MSDN的“HOWTO: Determine How ADO Will Bind Parameters”中,可以用IE直接访问:

mk: at MSITStore:H:\msdn\MSDN\kb dot chm::/Source/adobj/q181199.htm
(记得把H:\msdn\改为你自己目录)

Function GetDataTypeEnum(lngDataTypeEnum As Long) As String

      'Given ADO data-type constant, returns readable constant name.

      Dim strReturn As Stringhttp://www.shengfang.org

         Select Case lngDataTypeEnum

            Case 0: strReturn = "adEmpty"

            Case 16: strReturn = "adTinyInt"http://www.shengfang.org

            Case 2: strReturn http://www.shengfang.org= "adSmallInt"

            Case 3: strReturn = "adInteger"

            Case 20: strReturn = "adBigInt"

            Case 17: strReturn = "adUnsignedTinyInt"

            Case 18: strReturn http://www.shengfang.org= "adUnsignedSmallInt"

            Case 19: strReturn http://www.shengfang.org= "adUnsignedInt"

            Case 21: strReturn = "adUnsignedBigInt"

            Case 4: strReturn = "adSingle"

            Case 5: strReturn = "adDouble"

            Case 6: strReturn = "adCurrency"

            Case 14: strReturn http://www.shengfang.org= "adDecimal"

            Case 131: strReturn = "adNumeric"

            Case 11: strReturn = "adBoolean"

            Case 10: strReturn = "adError"

            Case 132: strReturn http://www.shengfang.org= "adUserDefined"

            Case 12: strReturn = "adVariant"

            Case 9: strReturn = "adIDispatch"

            Case 13: strReturn = "adIUnknown"

            Case 72: strReturn = "adGUID"

            Case 7: strReturn http://www.shengfang.org= "adDate"

            Case 133: strReturn = "adDBDate"

            Case 134: strReturn = "adDBTime"

            Case 135: strReturn = "adDBTimeStamp"

            Case 8: strReturn = "adBSTR"

            Case 129: strReturn http://www.shengfang.org= "adChar"

            Case 200: strReturn = "adVarChar"

            Case 201: strReturn = "adLongVarChar"

            Case 130: strReturn = "adWChar"

            Case 202: strReturn = "adVarWChar"

            Case 203: strReturn http://www.shengfang.org= "adLongVarWChar"

            Case 128: strReturn = "adBinary"

            Case 204: strReturn = "adVarBinary"

            Case 205: strReturn = "adLongVarBinary"

         Case Else:

         strReturn = http://www.shengfang.org"Unknown DataTypeEnum of " & lngDataTypeEnum & " found."

         End Select

         GetDataTypeEnum = strReturn

      End Function

http://www.shengfang.org


字体:

Permanant URI永久地址 http://www.shengfang.org/blog/p/vbaccesstools1.php
Trackback URI引用地址 http://www.shengfang.org/blog/tb.php?tb_id=1110604595

2005年3月12日13:16星期六  [Dev开发] 追踪此文的RSS
提示:
此文还没有评论。

称呼:    登陆   注册
   不注册,但记住我的信息
邮件:
(非必须)
评论: [UBB代码帮助]
粗体 斜体 下划线 链接 水平线 引用



验证码: 请输入你看见的数字
关闭UBB      提交时自动将内容复制到剪贴板

公告
Fire and Motion!

统计信息
[Yippee]||[统计]||日志:1790
在线: 16||用户: 2563 [列表]
今日:703||到访:2682342
Rss:841983||评论:1585

最新日志

最新评论

友情链接

日历

最新引用

搜索

归档

杂项
Get RSS Feed (Version 2.0)
Get Atom Feed (Version 0.3)
编码:  UTF-8