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

Ммихалыч
Дата: 27.11.2006 23:01:29
Что то я не понимаю в чем прикол то ?


Option Compare Database
Private Sub importsqldump()
Dim fs, ft
Dim str As String
  
Set fs = CreateObject("Scripting.FileSystemObject")
Set ft = fs.OpenTextFile("C:\fuck.sql", 1)
  
str = ft.ReadLine
Do While Err.Number = 0
  CurrentDb.Execute str
  str = ft.ReadLine
Loop
  
ft.Close
Set ft = Nothing
Set fs = Nothing

End Sub

Типа дамп не с данными а запросами (текст запроса):


INSERT INTO Таблица1(Поле1, Поле2)
Values("1","2");

В запросе работает, вб выдает "ошибка синтаксиса insert"


и как вообще стыковать серию запросов через перевод строки он поймет или нужно Go cтавить ?
bubucha
Дата: 27.11.2006 23:31:03
ковычек много, надобы на два поделить из количество
Alexander G
Дата: 28.11.2006 01:58:58
Ммихалыч

и как вообще стыковать серию запросов через перевод строки он поймет или нужно Go cтавить ?

Никак.
Программист-Любитель
Дата: 28.11.2006 08:54:00
Иметь в файле и обрабатывать некий разделитель между отдельными запросами. В приведенном примере это ";"
Allll
Дата: 28.11.2006 09:24:44
Писать запрос на одной строке:
INSERT INTO Таблица1(Поле1, Поле2) Values("1","2");
INSERT INTO Таблица1(Поле1, Поле2) Values("1","2");
INSERT INTO Таблица1(Поле1, Поле2) Values("1","2");
bubucha
Дата: 28.11.2006 11:32:17
2 Allll
в VBA?
Allll
Дата: 28.11.2006 11:57:34
Как я понял:
- есть файл "C:\fuck.sql" с текстами запросов
- этот файл считывается построчно str = ft.ReadLine
- проблема в том, что сейчас, при считывании одной, строки получается ерунда:
str = ft.ReadLine -> str = "INSERT INTO Таблица1(Поле1, Поле2)"

Выполнение запроса
CurrentDb.Execute str
вызывает ошибку, что совершенно логично, потому что нарушен синтаксис запроса.

Можно считывать несколько строк, анализируя наличие символа ";" и объединять их в один стринг, а можно в файле записать 1 запрос на 1-ой строке.

Я бы изменил:
Do While str <> ""
  CurrentDb.Execute str
  str = ft.ReadLine
Loop

И всё будет работать, как надо.
bubucha
Дата: 28.11.2006 12:18:34
автор

В запросе работает, вб выдает "ошибка синтаксиса insert"

я так понял, что окавыченные значения вызывают ошибку в вба
Ммихалыч
Дата: 28.11.2006 20:02:31
Allll
Как я понял:
- есть файл "C:\fuck.sql" с текстами запросов
- этот файл считывается построчно str = ft.ReadLine
- проблема в том, что сейчас, при считывании одной, строки получается ерунда:
str = ft.ReadLine -> str = "INSERT INTO Таблица1(Поле1, Поле2)"

Выполнение запроса
CurrentDb.Execute str
вызывает ошибку, что совершенно логично, потому что нарушен синтаксис запроса.

Можно считывать несколько строк, анализируя наличие символа ";" и объединять их в один стринг, а можно в файле записать 1 запрос на 1-ой строке.

Я бы изменил:
Do While str <> ""
  CurrentDb.Execute str
  str = ft.ReadLine
Loop

И всё будет работать, как надо.




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

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

А различные типы запросов возможно стыковать в одном файле ?? (всмысле Select с Update через ; и т.д.)
Ёжик`
Дата: 28.11.2006 21:35:08
про кавычки - поставить двойные или апострофы