Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 массовое добаление записей в MS SQL  [new]
harr
Member

Откуда:
Сообщений: 23
Написал процедуру массового добавления данных из Views в SQL
используя SCAN
SCAN
Store SQLConnect('SQL') To gnConnHandle

strSQl=""
strSQl="UPDATE NACLSPEC "
strSQl=strSQl+"SET ShopIndex=?mShopIndex,InOut=?mInOut,HeadIndex=?mHeadIndex,CardArticul=?mCardArticul, "
strSQl=strSQl+ляляля

=SQLEXEC(gnConnHandle,strSQl)
=SQLDisconnect(gnConnHandle)

ENDSCAN
Кол-во записей >=100, но в какойто момент выходит окошко с просьбой подключиться с серверу (Логин и пароль) нажимаеш OK, и процесс идёт дальше. Пробывал SQLConnect() выносить перед SCAN, тоже самое.
Как это побороть? Кто как решает проблему массового добавления данных в SQL
25 авг 04, 14:38    [907134]     Ответить | Цитировать Сообщить модератору
 Re: массовое добаление записей в MS SQL  [new]
vklepko
Member

Откуда:
Сообщений: 144
Наверное в
Store SQLConnect('SQL') To gnConnHandle
gnConnHandle получает отрицательное значение...
Кто такой 'SQL' - ConnectionName или DataSourceName? Какие на нём свойства?
25 авг 04, 18:03    [908239]     Ответить | Цитировать Сообщить модератору
 Re: массовое добаление записей в MS SQL  [new]
Oskars
Member

Откуда: Riga, Latvia
Сообщений: 17
poprobui poljzovatsa etim: SQLPREPARE()

gcAuthor = 'Arnold'

= SQLPREPARE(gnConnHandle, 'SELECT * FROM authors WHERE au_lname = ?gcAuthor')
= SQLEXEC(gnConnHandle)

...

gcAuthor = 'Jones'
= SQLEXEC(gnConnHandle)

Ja etim 1000 zapisei dobovljal i menjal..

--
Oskars
+371 9251562
Latvia, Riga
25 авг 04, 19:04    [908407]     Ответить | Цитировать Сообщить модератору
 Re: массовое добаление записей в MS SQL  [new]
harr
Member

Откуда:
Сообщений: 23
< gnConnHandle получает отрицательное значение...
< Кто такой 'SQL' - ConnectionName или DataSourceName? Какие на нём свойства?

'SQL' это ConnectionName, через ODBC, наверно нужно каждый раз ставить
на проверку SQLConnect('SQL'), но SCAN должен ждать пока функция не выполнеться или не так?
26 авг 04, 07:09    [908701]     Ответить | Цитировать Сообщить модератору
 Re: массовое добаление записей в MS SQL  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Oskars
По поводу SQLPrepare() для MS SQL 2000 есть сомнения. Почитай дискуссию

http://forum.foxclub.ru/read.php?f=5&i=91085&t=91085

harr
Владимир (vklepko) правильно заметил, что приглашение о вводе пароля появляется только в случае, если не удалось установить соединение. Т.е. gnConnHandle получил значение -1

Вообще-то, постоянно устанавливать и разрывать связь внутри цикла - это не есть хорошее решение. Логично вынести все разовые операции во вне цикла.

По умолчанию, FoxPro всегда работает в "синхронном" режиме, т.е. он всегда ждет завершение выполнения каждой команды, прежде чем перейти к выполнению следующей. Так что, SCAN действительно будет ждать пока не выполниться SQLConnect().

Почитай еще темы
https://www.sql.ru/forum/actualthread.aspx?tid=50269
https://www.sql.ru/forum/actualthread.aspx?tid=88752

Там дебя должны интересовать настройки SQLSETPROP() для подавления выдачи приглашений о вводе пароля в случае ошибки соединения.
26 авг 04, 12:56    [909935]     Ответить | Цитировать Сообщить модератору
 Re: массовое добаление записей в MS SQL  [new]
Crip
Member

Откуда:
Сообщений: 2490
2ВладимирМ
Полезное замечание по поводу SQLPREPARE.
Но в данном случае как раз SQLPREPARE должен помочь. Очень сомнительно, что insert будет зависеть от конкретных значений параметров.

Правда с select совсем другая история ибо планы могут меняться взависимости от статистик. Типичный пример места где SQLPREPARE лучше не применять это запрос по диапазону дат, сервер не зная конкретных значений всегда выберет сканирование.
26 авг 04, 14:35    [910651]     Ответить | Цитировать Сообщить модератору
 Re: массовое добаление записей в MS SQL  [new]
harr
Member

Откуда:
Сообщений: 23
Спасибо всем!!! Помогла такая конструкция
Вынес Store SQLConnect('SQL') To gnConnHandle
За пределы SCAN в начало процедуры
а =SQLDISCONNECT(gnConnHandle) в конец процедуры
2 сен 04, 15:32    [930001]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить