Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / VFP и MS SQL Server 2000 / 3 сообщений из 3, страница 1 из 1
05.01.2005, 20:23
    #32854804
Valerii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VFP и MS SQL Server 2000
Начал пробовать VFP & MS SQL Server 2000
Создал базу, в ней пустую таблицу Inout ... Хочу в нее слить данные DBF таблицы
Свойства Update на поля стоит...

В Connect1 Asinhrounus Execution активен...

gnConnHandle = SQLCONNECT('Connect1', '')
IF gnConnHandle <= 0
= MESSAGEBOX('Cannot make connection', 16, 'SQL Connect Error')
ELSE
= MESSAGEBOX('Connection made', 48, 'SQL Connect Message')
ENDIF
=SQLSETPROP(gnConnHandle, "Transactions", 2 )

SELECT Inout
GO TOP
DO WHILE !EOF()

Scatter Memvar

= SQLEXEC(gnConnHandle, "INSERT INTO Inout FROM Memvar")
= SQLCOMMIT(gnConnHandle)

SELECT INOUT
SKIP

ENDDO

= SQLDISCONNECT(gnConnHandle)

Потом смотрю таблицу в базе MS SQL - пустая... Что я сделал не так?
Спасибо всем...
...
Рейтинг: 0 / 0
05.01.2005, 21:04
    #32854825
Гость232
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VFP и MS SQL Server 2000
Не, вот так низя:
= SQLEXEC(gnConnHandle, "INSERT INTO Inout FROM Memvar")
А вот так можно:
Public a
a = "тест"
= SQLEXEC(gnConnHandle, "INSERT INTO Inout (field1) values (?a)")
Но еще вернее явное приведение типа к типу поля в которое пишешь:
= SQLEXEC(gnConnHandle, "INSERT INTO Inout (field1) values ("+"'"+a+"'"+")" )
Может что и перемудрил на скорую руку, советую набрать в поиске
SQLEXEC, туча тем по твоей теме.
...
Рейтинг: 0 / 0
05.01.2005, 21:08
    #32854827
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VFP и MS SQL Server 2000
Извини, но ты читал описание к команде SCATTER?

Команда SCATTER MEMVAR создает список переменных памяти FoxPro (!) где имя каждой переменной такое же, как имя поля таблицы, а содержимое - это содержимое соотвествующих полей.

Далее. Команда SQLExec() отправляет на сервер инструкцию в синтаксисе самого сервера ! Ты считаешь что в MS SQL 2000 существует команда

INSERT INTO Inout FROM Memvar

Как минимум, это должно вызвать сообщение об ошибке, которое отлавливается так:

Код: plaintext
1.
2.
3.
4.
IF SQLExec(...)< 0 
	LOCAL laError( 1 )
	=AERROR(laError)
	* Анализ содержимого массива laError
ENDIF

Вообще-то, в данном случае лучше работать через Remote View или через класс CursorAdapter (если у тебя версия не ниже 8). Но если очень хочется через SQLExec(), тогда так:

Код: plaintext
1.
2.
3.
4.
...
SCATTER MEMVAR
= SQLEXEC(m.gnConnHandle, "INSERT INTO Inout (Field1, Field2, Field3) "+
	" VALUES (?Var1, ?Var2, ?Var3)") 
...

Здесь Var1, Var2, Var3 - это имена переменных памяти, созданных и наполненных по команде SCATTER MEMVAR. А вопросительный знак указывает на то, что это параметры.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / VFP и MS SQL Server 2000 / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]