|
本帖最后由 盗梦 于 2015-8-13 10:20 编辑
我们用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"
最后,附上文件,函数在模块modString 中 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
评分
-
查看全部评分
|