Office中国论坛/Access中国论坛

标题: 求助:如何在vba中输入双引号"这个字符 [打印本页]

作者: zrj898    时间: 2012-7-7 15:17
标题: 求助:如何在vba中输入双引号"这个字符
本帖最后由 zrj898 于 2012-7-7 15:22 编辑

如下语句:
   Set rsR = New ADODB.Recordset
     sql = "SELECT (count(r.PointID)*"
     sql = sql & Trim(主窗口.TB01.Text) & "-" & 主窗口.TB01.Text & ")"
     sql = sql & "/1000 AS 公里数" & " ,count(r.PointID) as 点数 "
     sql = sql & "FROM Result AS r WHERE r.type in ('G','S') and r.OBS_Time<>' ' GROUP BY datepart("ww"," & "#" & r.OBS_Time & "#)"
那个"ww"两侧的"号被当作本条语句的界定符而不是我要用到的字符
我发现问题是我在vba中不能把双引号当字符使用 比如"datepart("ww"," & "#" & r.OBS_Time & "#)"中"ww"两侧的引号不能当作字符使用。
作者: roych    时间: 2012-7-8 04:56
本帖最后由 roych 于 2012-7-8 04:58 编辑

1、改用单引号:
  1. Set rsR = New ADODB.Recordset
  2.      sql = "SELECT (count(r.PointID)*"
  3.      sql = sql & Trim(主窗口.TB01.Text) & "-" & 主窗口.TB01.Text & ")"
  4.      sql = sql & "/1000 AS 公里数" & " ,count(r.PointID) as 点数 "
  5.      sql = sql & "FROM Result AS r WHERE r.type in ('G','S') and r.OBS_Time<>' ' GROUP BY datepart('ww',#" & r.OBS_Time & "#)"
复制代码
2、改成转义字符(个人不太赞成这种玩法,很容易出错)
  1. Set rsR = New ADODB.Recordset
  2.      sql = "SELECT (count(r.PointID)*"
  3.      sql = sql & Trim(主窗口.TB01.Text) & "-" & 主窗口.TB01.Text & ")"
  4.      sql = sql & "/1000 AS 公里数" & " ,count(r.PointID) as 点数 "
  5.      sql = sql & "FROM Result AS r WHERE r.type in ('G','S') and r.OBS_Time<>' ' GROUP BY datepart(""WW"",#" & r.OBS_Time & "#)"
复制代码
如果上述字符串测试出错(可能出现拼写或者落下半边字符串等情况),请参考下面的代码,适当地换过来:
  1. '单引号
  2. Sub test()
  3. t = "2012-7-8"
  4. s = "datepart('WW',#" & t & "#)"
  5. Debug.Print s
  6. End Sub
  7. '转移字符
  8. Sub test()
  9. t = "2012-7-8"
  10. s = "datepart(""WW"",#" & t & "#)"
  11. Debug.Print s
  12. End Sub
复制代码

作者: t小宝    时间: 2012-7-8 21:42
本帖最后由 t小宝 于 2012-7-8 21:43 编辑

要多输一个双引号。
比如想输出一个双引号,须输入两个双引号,想输出两个双引号,须输入三个双引号
debug.Print """你好""""
会输出:"你好""
作者: zrj898    时间: 2012-7-14 12:05
在语句中,当我输入3个双引号,自动订正功能会把它变成4个双引号{:soso_e100:}
作者: zrj898    时间: 2012-7-14 12:15
版主的意思是先用别的字符再替换掉是吧 !这个应该可以!谢谢了!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3