设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 3257|回复: 9
打印 上一主题 下一主题

[窗体] 读如何在VBA中编写含有变量的SQL语句而不易出错有感

[复制链接]
跳转到指定楼层
1#
发表于 2017-3-11 15:47:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 fan0217 于 2017-3-11 15:52 编辑

红尘如烟帖子有感:
http://www.office-cn.net/thread-122658-1-1.html

提供另外一种方法,此方法在论坛以前发表过,老生常谈了。

先在模块中建一个函数,如下:
  1. Public Function ArrayFormat(expression As String, ParamArray formatException()) As String
  2.    Dim strFind As String, strReplace As String, strTemp As String
  3.    Dim i As Integer
  4.    strTemp = expression
  5.    For i = 0 To UBound(formatException)
  6.         strFind = "{" & i & "}": strReplace = formatException(i)
  7.         strTemp = Replace(strTemp, strFind, strReplace)
  8.    Next
  9.    ArrayFormat = strTemp
  10. End Function
复制代码

然后开始编写含有变量的SQL语句:

  1. Sub Test()
  2.     Dim strSQL As String
  3.     strSQL = "INSERT INTO 凭证记录表 (状态,日期,制单人,制单时间,关联单号) VALUE ('{0}', '{1}',#{2}#,'{3}')"
  4.     strSQL = ArrayFormat(strSQL, "未审核", "Nickname", Now(), "No001")
  5.     Debug.Print strSQL
  6. End Sub
复制代码
运行,立即窗体显示:


INSERT INTO 凭证记录表 (状态,日期,制单人,制单时间,关联单号) VALUE ('未审核', 'Nickname',#2017/3/11 15:43:44#,'No001')



这样可很方便的实现SQL拼接字符串的功能。




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2017-3-11 16:16:46 | 只看该作者
👍看着像.net的写法
3#
发表于 2017-3-11 17:49:01 | 只看该作者
功力不够,有点看不明白,先收藏,再研究、使用

点击这里给我发消息

4#
发表于 2017-3-11 18:57:10 | 只看该作者
fans也来助阵了!
赞一个
5#
发表于 2017-3-11 19:07:37 | 只看该作者
fans也来助阵了!
赞一个
不过语句应该是VALUES
INSERT INTO 凭证记录表 (状态,日期,制单人,制单时间,关联单号) VALUE ('未审核', 'Nickname',#2017/3/11 15:43:44#,'No001')

INSERT INTO 凭证记录表 (状态,日期,制单人,制单时间,关联单号) VALUES ('未审核', 'Nickname',#2017/3/11 15:43:44#,'No001')
6#
发表于 2017-3-11 20:47:31 | 只看该作者
哈哈,fan的是进阶版
7#
 楼主| 发表于 2017-3-11 20:50:50 | 只看该作者
roych 发表于 2017-3-11 19:07
fans也来助阵了!
赞一个
不过语句应该是VALUES:

我搬的红尘如烟的代码,
8#
发表于 2017-3-12 00:00:10 | 只看该作者
本帖最后由 a63521557 于 2017-3-12 00:06 编辑
roych 发表于 2017-3-11 19:07
fans也来助阵了!
赞一个
不过语句应该是VALUES:


大赞!学习领会了。

再完善两语句:
Public Function ArrayFormat(expression As String, ParamArray formatException()) As String
应为:
Public Function ArrayFormat(ByVal expression As String, ParamArray formatException()) As String

strSQL = "INSERT INTO 凭证记录表 (状态,日期,制单人,制单时间,关联单号) VALUE ('{0}', '{1}',#{2}#,'{3}')"
应为
strSQL = "INSERT INTO 凭证记录表 (状态, 制单人, 制单时间, 关联单号) VALUES ('{0}', '{1}',#{2}#,'{3}')"

点击这里给我发消息

9#
发表于 2017-3-12 11:52:09 | 只看该作者
各路大神都出来了!
10#
发表于 2021-3-17 13:33:41 | 只看该作者
感谢老师们的分享,辛苦了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-28 07:12 , Processed in 0.105110 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表