Давайте посмотрим, как в 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 у меня умирал, а здесь никогда.