powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Про DBF, ODBC и ORACLE
5 сообщений из 5, страница 1 из 1
Про DBF, ODBC и ORACLE
    #33769267
n_handle= SQLCONNECT("my_connection")
result=SQLPREPARE(n_handle,'insert into shema.mytable (one,two) values ;
(?fabula,?nomd)')
USE my_dbf
SCAN
result = SQLEXEC(n_handle)
result = SQLCOMMIT(n_handle)
ENDSCAN
Use

на каждую вставляемую запись спрашивает значения полей.
Что делать? Или Это вообще не правильно?
...
Рейтинг: 0 / 0
Про DBF, ODBC и ORACLE
    #33769377
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fabula и nomd должны быть переменными, а у тебя они скорее всего поля в таблице. После SCAN втавь строку SCATTER FIELD fabula,nomd MEMVAR
...
Рейтинг: 0 / 0
Про DBF, ODBC и ORACLE
    #33769529
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Prepare подготавливает запрос на сервере
fabula, nomd - поля твоей my_dbf.dbf
Memvar необязательно, в рабочей области поля видны, Scan увидит и так

n_handle= SQLCONNECT("my_connection")
result=SQLPREPARE(n_handle,'insert into shema.mytable (one,two) values ;
(?fabula,?nomd)')
USE my_dbf
SCAN
result = SQLEXEC(n_handle)
!*!
*закомиттить можно разом после endscan
ENDSCAN
result = SQLCOMMIT(n_handle)
Use
...
Рейтинг: 0 / 0
Про DBF, ODBC и ORACLE
    #33769573
Спасибо, я как-то и забыл что в первую очередь просматриваются имена столбцов. С MEMVAR все заработало.
Commit, конечно , вне цикла. Остался от экспериментов.
...
Рейтинг: 0 / 0
Про DBF, ODBC и ORACLE
    #33770250
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Требуется помощь!

Не обязательно memvar - просто в качестве параметра укажи ?mytable.myfield -
и будет брать прямо из фоксовой таблицы/курсора.
А Commit нужен (и будет реально работать) лишь в том случае, если установлен
"ручной" режим работы с транзакциями - в твоём коде этого не видно.
Кроме того не стоит коммитить за раз чересчур уж большие порции данных -
если в таблице более чем несколько тысяч записей, то лучше ввести счётчик (в
простом случае подойдёт и RECNO() в курсоре-источнике) и коммитить
порциями - скажем по 100-500 записей - особенно если с модифицируемой
таблицей идёт активная работа, и не обязательно ожидать "полной" загрузки
данных. Иначе получим очень большой объём undo-данных, что не очень
хорошо... Конечно если данные должны быть доступны лишь после того как
загружены целиком (а до того должны быть доступны лишь "старые" данные) - то
придётся именно один commit и делать...
И ещё - в любом случае вставка через insert заведомо медленнее чем прямой
импорт - так что если объём очень велик, то есть смысл подумать над
альтернативными способами загрузки данных на сервер...

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


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