vb/vba中拼接SQL语句不再烦恼

  • 发布时间:2015年12月25日 10:04
  • 作者:杨仕航
  • 分类标签: vb/vba
  • 阅读(9329)
  • 评论(1)

我们用vba编程操作数据库的时候,经常拼接SQL语句。稍微一不留神就容易弄错。例如简单带条件的Select语句,需要这么写:

Dim strSql as string
strSql = "select * from 表名 where 文本字段 = '" & 值1 & "' and 数字字段 = " & 值2

 

再例如,典型的 Insert into 新增记录语句,需要这么写:

Dim strSql as string
strSql = "Insert into 表名 (字段1,字段2,字段3) values ('" & 值1 & "'," & 值2 & ",'" & 值3 & "')"

 

要特别留意哪些需要加单引号和逗号等等,书写很不方便。
而且哪个值和哪个字段对应也不容易分别清楚,很容易就会眼花缭乱。对vba字符串拼接和SQL语句不太熟的,很容易出错。而且这样书写也不好维护。

 

吐槽一大堆现状之后,说说我的方法吧。我的方法灵感是来自 C#的String.Format()方法。

C#的String.Format()方法可以设置文本格式,预先腾出位置给各个参数填写。

例如 String.Format("你好,我是{0}。我今年{1}岁","张三",12)

会得到 "你好,我是张三。我今年12岁"。利用这个方法,再结合vba的特性,我写了一个函数:

'函数:按顺序设置参数,拼接字符串'
'作者:杨仕航'
'日期:2015/08/07'
'参考:GetStringByPara("我是{0},今年{1}岁","张三",12)'
'返回:字符串,"我是张三,我今年12岁"'
Public Function GetStringByPara(strFormat As String, ParamArray VarExpr() As Variant)
    Dim i As Long
    For i = 0 To UBound(VarExpr)
        strFormat = Replace(strFormat, "{" & i & "}", VarExpr(i))
    Next

    GetStringByPara = strFormat
End Function

 

我们就可以用我写的这个函数拼接字符串,包括SQL语句。例如

怎样 ^_^ ,用这个函数是不是方便清晰很多。

特别说明:

1、在该函数中 ParamArray VarExpr() As Variant  是可变多个参数的意思。就像Switch函数可以带多个不定个数的参数。该函数就是利用这个特性可以弹性设置多个参数。

2、第一个参数是格式文本参数。其中需要替换的内容,一定要从0开始编号,用花括号加数字作为标记,中间编号不可断层 {0},{1},{2}.....但可以重复使用替换标记,例如 GetStringByPara("{0}:{1}{1}","id",5) 返回结果为 "id:55"

上一篇:为Django网站添加favicon.ico图标

下一篇:Excel利用照相机动态引用图片

评论列表

Haddy Yang

Haddy Yang

评论测试

2016-03-03 15:05 回复

新的评论

清空