SQL语句要用双引号""括起来,在SQL语句内部字符串则用单引号''括起来。(在VBA代码中字符串应该用""括起来,在SQL语句外围已经用了双引号"",此处就只能用单引号''了。)。
如果条件字段是文本型,没有变量的SQL语句的话应该是这样的:
strsql="select * from 表 where 字段名='条件'"
如果条件是string型变量,VBA中规定应用如下形式链接变量:
" & 变量名 & "
注意&前后都应该加空格。
如果条件字段是数值型,sql语句就应该这样写:
strsql="select * from 表 where 字段=123"
如果语句中含有变量,则应这样写:
strsql="select * from 表 where 字段=" & 变量名
在SQL语句中条件字段如果是数字的话是不需要''单引号的,可以直接用&链接符链接数值型变量。
以此类推,在VBA代码中,日期数据应该用##括起来,所以如果SQL语句中条件字段是日期型,则是如下形式:
strsql="select * from 表 where 字段= #" & 变量 & "# "
如果sql语句比较长,可能需要换行,那么请注意,语句末尾要加上" _,注意"和_之间要有一个空格。
另外,如果使用查询设计声称的sql语句可能比较冗长,可以适当精简一下,如下例:
要把广州分公司的销售记录追加到tblsalelist表中,如果用查询设计生成的sql语句如下:
Insert INTO tblSalelist ( saleDate, prodName, weight, price, price, comName, comSale )
Select tblSalelistGZ.saleDate, tblSalelistGZ.prodName, tblSalelistGZ.weight, tblSalelistGZ.price, tblSalelistGZ.price, tblSalelistGZ.comName, tblSalelistGZ.comSale
FROM tblSalelistGZ;
其实可以精简为:
Insert INTO tblSalelist ( saleDate,prodName,weight,price,price,comName,comSale )
Select saleDate,prodName,weight,price,price,comName,comSale
FROM tblSalelistGZ;
其中select语句中的表明全部可以省略,因为已经在from语句中规定了从哪个表中选择,另外,之后的空格有没有都不会有影响。有空格的话阅读起来更舒适一些。语句最后的;也是可有可无,对命令的执行没有影响。