关于本站
1、基于Django+Bootstrap开发
2、主要发表本人的技术原创博客
3、本站于 2015-12-01 开始建站
我们用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"
Haddy Yang
评论测试
2016-03-03 15:05 回复