Давайте посмотрим, как в VFP можно использовать источники данных ODBC. Ниже текст процедуры, которая выбирает в соответствии с запросом данные и помещает их в курсор:
procedure selsql()
*параметры: SQL-запрос, имя курсора
parameters commstr, curname
gnConnHandle=sqlconnect('sysbanku')
if gnConnHandle<=0
messagebox('Невозможно установить соединение', 16, 'Ошибка')
else
msg('Соединение установлено')
sqlresult=sqlexec(gnConnHandle,commstr, curname)
disconres=sqldisconnect(gnConnHandle)
do case
case disconres=1
msg('Connection is successfully terminated')
case disconres=-1
msg('Connection level error')
case disconres=-2
msg('Environment level error')
endcase
endif
endproc
Для вывода информации о соединении можно написать такую простенькую процедуру:
procedure msg() parameters msgtext wait msgtext window nowait endproc
Ну, а использовать все это в программе будем так:
msg('Ждите. Идет подготовка данных ...')
selsql('select * from nkon','vypnkcur')
select * from vypnkcur into table vypnkon
msg('Ждите. Идет индексация таблиц ...')
use vypnkon again
index on kod_ tag kod_ of nkind
index on name_ tag name_ of nkind
use
msg('Подготовка завершена ...')
Работает такой механизм достаточно устойчиво. Во всяком случае, в Access при очень большом объеме данных Windows'98 у меня умирал, а здесь никогда.