Office中国论坛/Access中国论坛

标题: sql语句中使用变量字段时如何不考虑字段的类型实现查询? [打印本页]

作者: 软件下载    时间: 2010-11-23 19:12
标题: sql语句中使用变量字段时如何不考虑字段的类型实现查询?
本帖最后由 软件下载 于 2010-11-23 19:14 编辑

窗体设置记录源
me.窗体.recordsource="select * from 表 where " & 变量1 & "='" & 变量2 & "'"
大家注意后面变量2的前后都有单引号',此语句在查询时,如果字段[变量1]不是string类型时就会出错,请问有没有好的解决方法?

我想过检测表中字段[变量1]的typename,可不知道怎么写

作者: 软件下载    时间: 2010-11-23 19:23
我现在在写一个办公用的数据库,里面有十几个数据表,各表结构不一,我新加了一个总表,里面数据是数据库内各表的名称、各表中一到三个使用较频繁的字段,然后用treeview读取该总表,第一级为表名,第二级至第四级根据总表中的字段名依次排序,并且实现点击任一最后子节点,都能打开此子节点所在的数据表并筛选。
现在就遇到上面问题,我设置的子窗体数据源是本帖最后由 软件下载 于 2010-11-23 19:14 编辑


窗体设置记录源
me.窗体.recordsource="select * from 表 where " & 变量1 & "='" & 变量2 & "'",如果变量1字段是boolean时就出错,我暂时使用了个笨办法,就是on error goto err1,然后err1里把这个变量2前后的单引号去掉。

想知道有没有其他好的办法,因为如果设置的字段变量是日期型的又会出错。

作者: todaynew    时间: 2010-11-23 20:00
me.窗体.recordsource="select * from 表 where " & Cstr(变量1) & "='" & 变量2 & "'"

作者: li08hua    时间: 2010-11-24 12:51
楼上todaynew老汉说的对头,先把变量1转换为String型,再赋值给变量2。
作者: aslxt    时间: 2010-11-24 17:33
本帖最后由 aslxt 于 2010-11-24 17:33 编辑

之前我是用一个自定义函数,获得某个库(也可以是sql  server)某个表的某字段的类型,然后根据类型来设定那个符号,字符类型返回['],数字类型返回零长度字符串,日期类型返回[#],通常也就这样了
看来3楼的方法比较科学、简单
作者: 软件下载    时间: 2010-11-24 21:23
非常感谢,这个很省事.




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3