我已多次阅读此条目(http://stackoverflow.com/questions/8513185/vbscript-to-correctly-re-format-a-delimited-text-file)但仍然无法理解.Execute部分
WScript.Echo oTDb.Execute(Replace("SELECT * FROM [@T]", "@T", sTbl1)) _
.GetString( adClipString, , "|", vbCrLf, "" )
我遇到麻烦的是[@T]和“@T”。
我知道正在读取模式文件中的文件名是“@T”而且[@T]必须使用“@T”作为替代。我无法找到的是提到/谈到的地方。
我有一些额外的问题: 1.如果文件名可以用变量替换,那还有什么呢? 2.维护变量的规则是什么 他们必须从@符号开始 有没有保留的话 如果必须以@符号开头,则下一个字符必须是字母
答案 0 :(得分:0)
因为我要对@ Milton的担忧/困惑负责:
VBScript中没有可变插值/替换。其他语言 - 例如Perl - 当您使用特殊符号标记替换时,会将变量甚至表达式结果拼接成字符串文字。在VBScript中没有这么有趣的字母。
SQL方言允许参数化命令,其中要替换的部分用?标记?和/或以@之类的符号为前缀的名称。但是这里ADO从未看到@T - VBScript的Replace()函数在之前插入表名,结果字符串被发送到.Execute()。
通过连接从部件(SQL语句,.Run或.Exec,...的命令行)构建复杂字符串非常麻烦。最重要的缺点是你不能(证明)读取所有那些“和&”的字符串。
一个简单的解决方法是使用Replace(),如
[sResult = ] Replace("SELECT * FROM [@T]", "@T", sTbl1)
我使用@ just让占位符脱颖而出。因为当您需要在模板上进行更多替换时,您必须堆叠/嵌套Replace()调用,其他策略值得考虑: