Oct 02

解决用 VB 中用 ADO 访问 Access 数据库时 SQL 查询处理 Null 值的问题

程序的环境是 VB6 + ADO + Access,在用 SQL 语句查询时,希望把两个字段合并成一个字段,但其中一个字段 Null 值直接导致两个字段合并后也变成了 Null 值。之前只能用 VB 中的 IsNull 分别处理两个字段的值,前段时间想尝试用 SQL 语句直接解决,确一直未能成功, 差点放弃之际找到了答案,总结如下:

目的

实现 Select ( 字段1 +  字段2 ) As A

问题

字段2 如果为空值 (Null),则 不论字段1 的值是否为空,A 的值为空值 (Null)

解决

1、在 Access 中,可使用 Nz(字段, 为空时的值) 来处理

2、在 VB6 + ADO + Access 中,则使用 iff(isNull(字段), 为空时的值,不为空时的值) 来处理

Oct 01

改变 Office 打开图片等链接文件的默认程序 IE

[问题现象] 在 Office 程序,如 PowerPoint、Excel 等中插入图片等文件超链接后,点击时会自动调用 Internet Explorer 打开,而不是在资源管理器中默认的打开方式。

[解决方法] (在 Office 2000、2003、2007、2010 中测试通过)

修改注册表以下位置:(不论 Office 版本,均在此位置修改)

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\9.0\Common\Internet

增加 DWORD 值 ForceShellExecute,设值为 即可。当再次打开 Office 程序中的链接文件时,将会使用资源管理系默认的打开程序。

[延伸参考]

关于修改这个值对系统行为的具体影响,可以参考这里

Sep 11

解决 ADO 打开 RecordSet 的 80004005 错误

整整折腾了一天,终于搞定了 ADO 的 80004005 错误,特写出来做个分享。

错误描述:

在程序中使用 ADO 对象连接 Access 数据库进行查询时,Recordset 的 Open 方法 Select 查询报错,显示为 Run-time error ‘-2147467259(80004005)’: Method ‘Open’ of object ‘_Recordset’ failed

换用 Command 的 Execute 方法同样报错。

检查 Select 语句未发现错误,在 MDB 文件中测试 Select 语句一切正常,程序中其他使用同样方法的语句都运行正常,联机帮助没有相关问题说明。

错误解决:

在网上搜索了半天,有说是权限、连接设置等问题的,但对我的问题均没有帮助。最后在一个论坛的一条回复中注意到提问者自己修改了某个字段的名称后问题解决,突然想到是不是 ADO 对象有保留的关键字。我的 Select 语句涉及到 PositionID 和 Position 两个字段,将 Position 字段改名为 PositionName 后,问题解决。

结论:

ADO 对象中有一些关键字,如果在 Select 语句中出现,就会引发 80004005 错误。

目前发现的关键字有 Position, Date,Time 等等,完整的列表还没发现。

另外,除了改名以外,还可以用加方括号[]的办法来避免关键字冲突。

Sep 03

如何在 VB6 中用代码按下 Toolbar 上的按钮

可用所需要按下按钮的名字和索引即可。如 Toolbar 控件的名字为 Toolbar1,需要按下的按钮的名字(Caption)属性为Test,索引(Index)属性是1,代码如下:
1. 用名字
'执行按下按钮对应的语句
Call Toolbar1_ButtonClick(Toolbar1.Buttons("Test"))
‘让按钮显示为按下状态
Toolbar1.Buttons("Test").Value = tbrPressed

2.用索引
Call Toolbar1_ButtonClick(Toolbar1.Buttons(1))
Toolbar1.Buttons(1).Value = tbrPressed

Mar 23

阿语在线字典开发日记(一)

昨天把查询界面和增加新词界面基本功能做完了,今天开始测试。没想到第一个遇到的词就让我发现了两个问题。

一是动词结尾的宾语ه,昨天已经想到了诸如فلان、شيء等具体写出来的宾语,并以将其与单词本身剥离,放入另一个字段的方法解决了。而现在直接跟在动词后的宾语,因为中间没有空格,又和直接以ه结尾的单词不好区分。看来目前只能时增加单词时自己注意不要在动词后面加ه了。

二是ا、أ、إ的问题,看来这几个需要做一个模糊处里,如果输入的查询里的ا没有加上ء,也能保证查到对应的单词。

Mar 11

开始学习 UTF-8

终于决定要做一个阿拉伯语在线字典,忙乎了一天做成了最基本的查询页面之后,如何根据阿拉伯语的特点组织字典的数据库就成了最重要的问题。

于是想要找一个完整的 UTF-8 码表,没想到还真找到一个非常不错的,真厉害:

http://www.utf8-chartable.de/

Dec 29

IE9 Beta 到目前为止仍不支持 Geolocation

最近开始研究 Google Maps API,发现 W3C 的 Geolocation 标准很不错。

不过,B/S模式的程序就要考虑用户使用的浏览器了,好的应用必须保证在各种可能的浏览器上都得到尽可能一直的体验。测试的结果就遗憾了,IE8 不支持,IE9 Beta 到目前为止也不支持,麻烦啊……

有很多好心人已经通过各种渠道向微软的 IE Team 反映了,不过看来到目前为止没有什么积极的消息。好心人同样也测试了所有的主流浏览器,支持 Geolocation 的汇总如下:

  • Chrome 5
  • Firefox 3.6
  • Opera 10.6
  • Safari 5 (including Safari Mobile on the iPhone)

Dec 27

打开 Snow Leopard 对 ntfs 分区的读写支持

原来一直在 Mac OS X Tiger 里用 MacFuse 和 NTFS-3G 来读写我 ntfs 分区,上个月把 Tiger 升级成了 Snow Leopard,忽然发现 NTFS-3G 就开始报错了。

NTFS-3G 不能用了,我的 ntfs 分区又回到了只读状态,可我觉得 Mac OS X 发展那么久了,总该支持 ntfs 分区的写入了吧,上网搜索了一下,果然还是有办法的,就是修改 /etc/fstab。

为你的每个 ntfs 分区增加一行格式为 UUID = XXXXXXXXXX none ntfs rw 的语句即可。其中 UUID 也可以使用 LABEL 来代替。

以上格式的各项意思为:磁盘 挂载点 分区格式 挂载方式。

磁 盘是由 UUID 或者 LABEL 来标识的。UUID 即 Universal Unique Identifier,有很多种方法可以得到,但是个人觉得最方便是使用磁盘工具->信息。如果要换用 LABEL,也就是卷标名称,就更方便可以得到了。具体使用 UUID 还是 LABEL 可以根据自己的需要,我的看法是 UUID 相对固定而且唯一,LABEL 就能不能保证了。

至于挂载点,绝大多数情况下没有特殊要求,用 none 即可。

分区格式很明确,ntfs

挂载方式为可读写,即 rw

修改并保存 fstab,再重新挂载一下磁盘,设置就生效了。方便吧!

Oct 26

解决安装 Realtek HD Audio 驱动时的 0xE0000227 错误

今天又有朋友求助,说是重装 Windows XP 系统之后的 Realtek HD Audio 驱动始终无法装上,每次安装到最后都出现 0xE0000227 错误,然后安装失败。下载最新版的 Realtek 声卡驱动安装也出现同样错误,非常奇怪!

这就是是著名的 Windows XP SP3 和 Realtek 0xE0000227 错误,前人们已经给我们留下了解决方案:

1、卸载”Microsoft 用于 High Definition Audio 的 UAA 总线驱动程序”

进入设备管理器 -> 展开“系统设备” -> 右键单击”Microsoft 用于 High Definition Audio 的 UAA 总线驱动程序” -> 单击“卸载”。

如果无法卸载,请先禁用该设备,重启后再重复本步骤即可卸载。

2、安装最新版的 Realtek 音频驱动即可。

Oct 25

自我保护!金山毒霸查杀盗版金山词霸

今天去朋友家做客,聊起他的电脑无法安装金山词霸的问题,于是给他看了一下。

现象很奇怪,在他的电脑上安装金山词霸,之前一切正常,就在安装即将完成时,金山毒霸报告 xdict.exe 文件是病毒,让我选择删除或者隔离,安装也随之失败。于是我尝试暂时关闭金山毒霸,再进行安装,这下果然安装成功,但好景不长,重启电脑后 xdict.exe 竟然被自动删除了!

疑惑了好一会儿,突然大悟,朋友的这个金山词霸是盗版,难道金山毒霸直接将破解过的 xdict.exe 列入了病毒库?网上搜索相关信息的结果证实了我的猜想,没想到啊,金山的自我保护确实有一手!

话说回来,也请大家尽可能支持正版软件吧,特别是国货啊。

又想到,如果有一天,所有的安全软件厂商都和其他应用软件开发商携手合作,登记常用软件执行文件的 MD5 码,是不是也算是一种无奈的选择呢。

Older posts «