Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

如何存储带参数的SQL语句?

hjs  发表于:2016-02-19 08:49:39  
复制

如何存储带参数的SQL语句?

如:strSQL=" Select * FROM 订单表 Where 客户名称='" & Me.txt客户名称 & "' AND 销售日期 Between #" & Me.txt开始日期 & "# And #" & Me.txt结束日期 & "#"


如何把以上strsql存储到另一个表?

insert into [rz](rq,sql)values('" & now() & "','" & strsql & "') 

报错!

 

Top
煮江品茶 发表于:2016-02-19 14:39:52
没什么必要。

hjs 发表于:2016-02-20 22:18:05
主要母的就是日志记录!

西出阳关无故人 发表于:2016-02-21 12:00:02

貌似语句有问题:insert into [rz](rq,sql)values('" & now() & "','" & strsql & "') 

rq是什么字段类型?如果是日期,就应该写成:values(#" & now() & "#...

注意空格!

试一下:

insert into [rz] (rq,sql) values (#" & now() & "#,'" & strsql & "'") 



hjs 发表于:2016-02-25 12:48:56
不是日期格式问题,主要是‘”这个问题出错!

缪炜 发表于:2016-02-25 13:34:26
CurrentDb.Execute "insert into [rz](rq,sql) values (#" & now() & "#,'" & strsql & "') "

朱先生 发表于:2016-02-25 13:45:46

有了WHERE    XXX='"& SSSS & ""语句就存不了



西出阳关无故人 发表于:2016-02-27 23:22:10

改为这样就可以保存了:

strsql = " Select * FROM 订单表 Where 客户名称=" & """" & Me.txt客户名称 & """" & " AND 销售日期 Between #" & Me.txt开始日期 & "# And #" & Me.txt结束日期 & "#"


未更改之前该语句运算后得到:

insert into [rz](rq,sql) values (#2016-02-27 23:09:45#,' Select * FROM 订单表 Where 客户名称='wwww' AND 销售日期 Between #2016-1-1# And #2016-2-2#')

给改后得到:

insert into [rz](rq,sql) values (#2016-02-27 23:14:59#,' Select * FROM 订单表 Where 客户名称="wwww" AND 销售日期 Between #2016-1-1# And #2016-2-2#')

区别在'和''上面.



hjs 发表于:2016-02-29 14:18:05
是一个方法,但是我所有的strsql全部要改,这个功能就是一个写日志的功能,认为西出老师提出的方法不是最好的!

西出阳关无故人 发表于:2016-03-07 16:32:05

解决方案(用替换字符串的方式修改strSQL的运行结果,把英文单引号'变换为英文双引号",注意:Me.txt客户名称中不能有英文单引号'和英文双引号"):

strSQL=" Select * FROM 订单表 Where 客户名称='" & Me.txt客户名称 & "' AND 销售日期 Between #" & Me.txt开始日期 & "# And #" & Me.txt结束日期 & "#"

strSQL = Replace(strSQL, "'", """")    '只是增加这一句,对标点符号进行替换.不需要对其他语句进行变更.

insert into [rz](rq,sql)values('" & now() & "','" & strsql & "')




'如果需要原样存储数据,在insert后加入一下代码(把引号替换回来):

Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("select * from [表1] where id=" & DMax("id", "表1"))
rst.Edit
rst("sql") = Replace(rst("sql"), """", "'")
rst.Update
Set rst = Nothing



hjs 发表于:2016-03-13 21:56:11
我也找到了这句strSQL = Replace(strSQL, "'", """")  ,比老师还早点,但是非常感谢老师的记挂!

总记录:10篇  页次:1/1 9 1 :