【access小品】与猫版就变量问题商榷一二
时 间:2011-07-22 11:59:13
作 者:煮江品茶 ID:10802 城市:武汉
摘 要:变量问题
正 文:
不打算重复各种数据类型应该如何在SQL算式中表达的问题,对于这个问题可以参见猫版原文。重点想就为什么在构造SQL语句时有时需要考虑数据类型的表达方式有时又不需考虑表达方式的问题。为了使同志们明白问题本身,先引用猫版的两个例子:
dim TheName as string
TheName="张三"
Me.Form.RecordSource = "Select * From 表1 Where 姓名='" & TheName & "'"
dim TheFiledName as string
TheFiledName="建单日期"
Me.Form.RecordSource = "Select *,"& TheFiledName &" As A From 表1"
在以上两个例子中,TheName和TheFiledName均为文本型变量,在例1中需要用单引号表示该变量为文本型变量,而在例2中则不需要这样处理。对于这样一个问题,猫版认为只有做为查询条件方应考虑加单引号。这个理解我以为不是很全面。比如我们可以写一个这样的例子:
dim TheFiledName as string
dim D as Date
TheFiledName="当前日期"
D=Date()
Me.Form.RecordSource = "Select *,#" & D & "# As " & TheFiledName & " From 表1"
由这个例子来看,并非只是在做为查询条件时需要考虑对变量是否加单引号或者井号,在SQL语句的其他位置也需要考虑这个问题。那么什么是处理这个问题的原则以及道理何在呢?要说明白这个事情,需要有一段阐述过程,我想大体应该这样来说明:
1、在VB中,SQL语句通常是一个字符串变量。因此SQL语句的构造过程便可以运用字符串处理的各种运算符和函数,最常用的就是字符串连接符&;
2、由一系列变量通过字符串运算符和函数构造出来的SQL语句字符串,应符合SQL语句的书写规则。是否符合这个规则,可以用msgbox等调试手段进行观察;
3、如果构造SQL语句的变量是SQL语句中某些字段、某些子句需要用到的变量值,而不是SQL语句的子句名称(诸如select、delect、from 、where等)和字段名称,则变量值需要按照不同的数据类型进行表达。
按照这样一种理解,我们来看看如下的例子:
dim ssql as string
dim TheFiledName as string
dim D as Date
dim T as long
TheFiledName="当前日期"
D=Date()
T=10
ssql="Select Top " & T 'T是Top子句需要用到的变量值
ssql=ssql & " *,#" & D & "# As " & TheFiledName 'D是【当前日期】字段变量需要用到的变量值,TheFiledName确定的是字段变量名称
ssql=ssql & " From 表1"
Me.Form.RecordSource = ssql
msgbox ssql
'SQL语句以ssql字符串变量表示为:
'Select Top 10 *,#2011/7/22# as 当前日期 From 表1
除了以上这些简单的例子外,还有更为复杂的情况,比如在SQL语句中用到域函数(DLookup、DSUM等),由于这些函数的参数为文本型变量,也需要用到文本变量处理的各种运算符,以及变量名称与变量值的不同处理方式,也就有可能出现更为让人迷惑的单引号和连接符问题。处理这样的问题最有效的办法就是按照上述说明,用msgbox分段来测试所编写的SQL语句字符串是否符合SQL语句的书写规则。
Access软件网QQ交流群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- 【Access IIF函数嵌套示例...(11.26)
- Access快速开发平台--使用组...(11.25)
- Access快速开发平台--对上传...(11.22)
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)
- 微软Access邀测新Monaco...(11.12)
- Access列表框左右互选、列表框...(11.11)
- 高效率在导入数据前删除记录(11.10)