powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / MS SQL
2 сообщений из 2, страница 1 из 1
MS SQL
    #33495268
Valerii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет,
Вопрос, кто подскажет как правильно организовывается идеология добавления записей в таблицу MSSQL 2000.
У меня есть проект на VFP8 и в нем я создал Connection используя ODBC драйвер к базе данных в которой есть таблица goods..
Вот пример:

USE data\Goods IN 0 && VFP *.dbf - table
STORE SQLCONNECT('TestConnect') TO gnConnHandle
? gnConnHandle
IF gnConnHandle <= 0
= MESSAGEBOX('Cannot make connection', 16, 'SQL Connect Error')
RETURN
ELSE
= MESSAGEBOX('Connection made', 48, 'SQL Connect Message')
ENDIF

b = SQLEXEC(gnConnHandle, "SELECT * FROM goods", "MyCursor")

SELECT MyCursor && проверяю если есть данные и доступ
BROW


SELECT Goods
GO TOP
DO WHILE !EOF()
xkey = ALLTRIM(key)
xParent = ALLTRIM(Parent)
xtext = ALLTRIM(text)
b = SQLEXEC(gnConnHandle, "INSERT INTO goods (key, parent, TEXT) Values (?xkey, ?xparent, ?xtext)")
?b && возвращает -1
= SQLCOMMIT (gnConnHandle)
SELECT Goods
SKIP
ENDDO
= SQLDISCONNECT(gnConnHandle)


Но мне не понятно, почему данные добаялются в таблицу goods MS SQL server-a...
goods (key nVarchar(15), parent nVarchar(15), text nVarchar(100))
Всем спасибо..
...
Рейтинг: 0 / 0
MS SQL
    #33495378
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Valerii!

> GO TOP
> DO WHILE !EOF()

Это заменяет SCAN

> xkey = ALLTRIM(key)
> xParent = ALLTRIM(Parent)
> xtext = ALLTRIM(text)
> b = SQLEXEC(gnConnHandle, "INSERT INTO goods (key, parent, TEXT)
> Values (?xkey, ?xparent, ?xtext)")

Можно прямо в тексте запроса писать .... VALUES (?ALLTRIM(Goods.key), ...) -
т.е. переменные не обязательны.

> ?b && возвращает -1

Ну раз возвращает -1 то надо через
AERROR(laErrorInfo)
DISPLAY MEMOTY LIKE laErrorInfo
посмотреть что же за ошибка возникла.
Меня кстати не радуют твои имена полей - там слова зарезервированные - и бог
знает как на это отреагирует SQLServer.

> = SQLCOMMIT (gnConnHandle)

Не просто = - а смотреть что возвращает функция!
И кроме того использование SQLCOMMIT() бесполезно до тех пор, пока через
SQLSETPROP(..., "Transactions", 2) не будет включен режим "ручного
управления" этими самыми транзакциями. Также в общем и целом нет особого
смысла включать ручное управление транзакциями, если ты в любом случае
будешь подтверждать КАЖДУЮ ИНДИВИДУАЛЬНУЮ операцию. Я бы на твоём месте
вынес коммит за рамки цикла, или по меньшей мере коммитил не каждую запись,
а скажем каждые 100 записей.

> SELECT Goods
> SKIP
> ENDDO

Соответственно вместо всего этого ENDSCAN

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / MS SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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