Sql-dump (что-то типа для Access)

Ёжик`
Дата: 28.11.2006 21:37:59
про файл - читаем весь str = СодержаниеФайла, потом делаем массив = split(str,vbcrlf)
далее
for i =0 to ubound(массив)
CurrentDb.Execute массив(i)
next i
Allll
Дата: 29.11.2006 09:24:15
Ммихалыч

Так пишет
Input past end of file (Error 62)

и указывает на --> str = ft.ReadLine

Вы изменили цикл?
Do While str <> ""
  CurrentDb.Execute str
  str = ft.ReadLine
Loop
Или оставили, как раньше:
Do While Err.Number = 0
  CurrentDb.Execute str
  str = ft.ReadLine
Loop

Изменённый вариант не даёт этой ошибки.

Щас угадаю: Вы использовали объекты ScriptHost, потому что не знаете про бейсиковские функции Open, Read, EOF?

Ммихалыч
А различные типы запросов возможно стыковать в одном файле ?? (всмысле Select с Update через ; и т.д.)

А что говорится про Execute в Справке? Не пробовали посмотреть?

Ответ из Справки
Метод Execute определен только для запросов на изменение. При попытке применить метод Execute к запросу другого типа возникает ошибка.
Ммихалыч
Дата: 29.11.2006 19:41:02
Цикл изменил, вы не правы все равно выдает ошибку, я не спорю можно использовать и другой метод, просто с вб я пока еще на "вы" поэтому и задаю здесь вопросы, которые для вас могут показаться конечно ламерскими, но хотелось бы получить болые полезные(полные) ответы, хотя бы "да" или "нет"...
Ммихалыч
Дата: 29.11.2006 20:15:27
Allll

А что говорится про Execute в Справке? Не пробовали посмотреть?

[quot] Ответ из Справки]Метод Execute определен только для запросов на изменение. При попытке применить метод Execute к запросу другого типа возникает ошибка.


То есть ответ на мой вопрос по поводу различных типов скул команд из тектового получается отрицательный, я правильно понял ?
bubucha
Дата: 29.11.2006 20:24:30
автор
То есть ответ на мой вопрос по поводу различных типов скул команд из тектового получается отрицательный, я правильно понял ?

у меня есть подозрение, что вы спрашиваете - как одновременно выполнить несколькл sql комманд - так? т.е. в вашем файле - "набор" sql строчек, вы хотите из прочесть и выполнить (аля скрипт) так-? Меня терзают смутные сомнениия, что вы спрашивает не про то, что хотите узнать. Одновременно, выполнить кучу коммнад никак - прочитайте строку (законченное sql вырожение) и выполняйте его, потом след. строку файла (sql-выражение)...и т.д. до конца файла. Приведиите хоть пример самого файла (ну если это конечно не тайноа золота партии)...
mds_world
Дата: 29.11.2006 20:24:51
Можно анализировать строку str. Если там первым словом не идет Select, то можно выполнять Execute. Примерно так:
Do While str <> ""
  If Left(str,6) <> "Select" Then
      CurrentDb.Execute str
  End If
  str = ft.ReadLine
Loop

А если это выборка, то вам надо решать, что делать. Или взять рекордсет, чтобы что-там изменить, дополнить, или пропустить этот запрос.
mds_world
Дата: 29.11.2006 20:30:31
Нет, так как я написал не пойдет. Нужен гораздо более сложный синтаксический анализ на запросы на добаыление и создание новой таблицы.
Но можно анализировать ошибку и дать в случае ошибки Resume Next.
Ёжик`
Дата: 29.11.2006 20:45:54
if left(str,6)<>"INSERT" and left(str,6)<>"DELETE" and left(str,6)<>"UPDATE" then
    CurrentDB.Execute str
End If
Ёжик`
Дата: 29.11.2006 20:48:04
и нафига построчно файл читать??? прочитать весь и сплитом его..
Ёжик`
Дата: 29.11.2006 20:54:43
строки длиной менее 8 символов игнорить сразу....