Как я могу удалить строки, начинающиеся с 'в варианте? - PullRequest
0 голосов
/ 31 мая 2019

После ответа на на этот вопрос я выполняю различные запросы, хранящиеся в файле .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

Запросы разделены ;, и каждому запросу предшествует строка комментария, начинающаяся с ' и заканчивающаяся ; (так что она разбивается на vSql = Split(strSql, ";")).

Полученный вариант vSql состоит из допустимых операторов SQL, перемежающихся строками комментариев, начинающимися с '. Текущий код работает, но я хотел бы удалить On Error Resume Next, чтобы ошибочный оператор SQL возвращал ошибку, а не игнорировался.

Как я могу удалить строки, начинающиеся с ' в варианте перед выполнением цикла For Each? Или есть другой способ достичь моей цели? Символ комментария может быть изменен при необходимости.

Ответы [ 2 ]

3 голосов
/ 31 мая 2019

В качестве альтернативы, это должно сделать это для:

For Each vSqls In vSql
    If Not CStr(vSqls) Like "'*" Then DoCmd.RunSQL vSqls
Next
0 голосов
/ 31 мая 2019

Это зависит от того, как именно хранится файл, но самый простой способ - найти первый возвращаемый символ и взять остальную часть текста.

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

или

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

Имейте в виду, что это удалит только первую строку, поэтому при наличии пробелов вам нужно будет проверить, начинается ли следующая строка с '.

И вы можете обнаружить, что ваши запросы не работаютесли они распределены по нескольким строкам, которые могут вам понадобиться, заменив оставшиеся символы возврата каретки пробелом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...