如何删除变体中以'开头的行?

时间:2019-05-31 08:43:27

标签: vba ms-access

在回答this question之后,我使用以下代码执行存储在.txt文件中的不同查询:

   Dim vSql       As Variant
   Dim vSqls      As Variant
   Dim strSql     As String
   Dim intF       As Integer

   intF = FreeFile()
   Open "MyFile.txt" For Input As #intF
   strSql = Input(LOF(intF), #intF)
   Close intF
   vSql = Split(strSql, ";")

   On Error Resume Next
   For Each vSqls In vSql
      DoCmd.RunSQL vSqls
   Next

查询以;分隔,并且每个查询都以注释行开头,并以'开始并以;结尾(因此它被{{1}分隔) })。

生成的vSql = Split(strSql, ";")变体由有效的SQL语句组成,并插入以vSql开头的注释行。当前代码有效,但是我想删除',以便错误的SQL语句返回错误而不是被忽略。

如何在执行On Error Resume Next循环之前删除变体中以'开头的行?还是有另一种方式可以实现我的目标?注释字符可以根据需要更改。

2 个答案:

答案 0 :(得分:3)

或者,应该这样做:

For Each vSqls In vSql
    If Not CStr(vSqls) Like "'*" Then DoCmd.RunSQL vSqls
Next

答案 1 :(得分:0)

这完全取决于文件的存储方式,但是最简单的方法是找到第一个返回字符并获取其余文本。

vSqls=mid(vSqls = Mid(vSqls, InStr(vSqls, vbCrLf) + 2)

vSqls=mid(vSqls = Mid(vSqls, InStr(vSqls, vbCr) + 1)

请记住,这只会删除第一行,因此,如果有空格,则需要检查下一行是否以'开头。

如果您的查询分散在多行中,您可能会发现查询不起作用,您可能需要用空格替换所有剩余的回车符来解决该问题。