Visual FoxPro и PostgreSQL

Здравствуйте!

Знатоки PostgreSQL, возможна ли работа Visual FoxPro и PostgreSQL, если да, то как.

Имеется виду как правильно и грамотно и по какой схеме можно развернуть.
Порядок вот этого всего, с чего начать.
Чтобы моя база работала на PostgreSQL.

Буду рад любому совету...
Спасибо!

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Насколько я знаю - это

Насколько я знаю - это невозможно. FoxPro работает только со своими БД и не умеет работать с PostgreSQL.

http://forum.foxclub.ru/read.

http://forum.foxclub.ru/read.php?29,536535,536569#msg-536569 - форум по FoxPro - по этой ссылке код соединения.

vfp

через драйвера ODBC из vfp можно подключится ко всему в том числе и к postgreSQL
так что для начала качнуть odbc драйвер и через добавление нового источника данных (не помню точно как правильно называлось) подключится

подключить можно через ОДВС

LOCAL lcPGSQLconnect, lnHandle, laError(1)
LOCAL lnRegion, lcSelect, lnBegin, lnEnd, i
*!* Соединение с PostgreSQL-базой данных StoreRoom посредством использования строки соединения
lcPGSQLconnect = "DRIVER=PostgreSQL ANSI;SERVER=111.111.1.111;PORT=5432" + ;
";DATABASE=имя_базы;UID=postgres;PWD=postgres"
*!* lcPGSQLconnect = "DSN=us_StoreRoom;SERVER=localhost;PORT=5432" + ;
*!* ";DATABASE=StoreRoom;UID=postgres;PWD=SysAdmin"
*!* ВНИМАНИЕ!Добавление в lcPGSQLconnect фрагмента ";C8=1" приводит к ошибкам выполнения SQLEXEC().
lnHandle = SQLSTRINGCONNECT(lcPGSQLconnect,.T.)
IF lnHandle > 0
MESSAGEBOX("Соединение с PostgreSQL-базой данных StoreRoom установлено!",64,"Сообщение")
lnReg = 1
* собственно запрос
lcSelect = [SELECT * FROM street ]
* lcSelect = [SELECT vccomment FROM zconvlog where istplogff=1 ]
IF SQLPREPARE(lnHandle,lcSelect,"PGSQLresult") = 1
FOR i = 1 TO 1
lnReg = 5*i
lnBegin = SECONDS()
* COPY TO fff
IF SQLEXEC(lnHandle) = 1
lnEnd = SECONDS()
* COPY TO fff1
* BROWSE NORMAL
COPY TO fff
WAIT WINDOW "Область #" + TRANSFORM(lnReg) + ;
" Число записей: " + CHR(13) + ;
"Время исполнения запроса: "+ TRANSFORM(lnEnd - lnBegin)
ELSE
= AERROR(laError)
MESSAGEBOX("Ошибка выполнения SQLEXEC()!" + CHR(13) + ;
REPLICATE("=",40) + CHR(13) + laError(2),48,"Предупреждение")
ENDIF
ENDFOR
ELSE
= AERROR(laError)
MESSAGEBOX("Ошибка выполнения SQLPREPARE()!" + CHR(13) + ;
REPLICATE("=",40) + CHR(13) + laError(2),48,"Предупреждение")
ENDIF
*!* Разрыв соединения с PostgreSQL-базой данных StoreRoom
IF SQLDISCONNECT(lnHandle) = 1
lnHandle = .NULL.
MESSAGEBOX("Соединение с PostgreSQL-базой данных StoreRoom разорвано!",64,"Сообщение")
ELSE
MESSAGEBOX("Соединение с PostgreSQL-базой данных StoreRoom не разорвано!",48,"Предупреждение")
ENDIF
ELSE
= AERROR(laError)
MESSAGEBOX("Соединение с PostgreSQL-базой данных StoreRoom не установлено!" + CHR(13) + ;
REPLICATE("=",40) + CHR(13) + laError(2),48,"Предупреждение")
ENDIF
USE IN SELECT("PGSQLresult")
*Здесь после SQLPREPARE() время исполнения 5-ти запросов лежит в диапазоне от 1.3 до 1.4 сек., при этом установка C8=1 (Use serverside prepare) приводит к краху исполнения 2-го и последующих запросов.

вот примерный текст для фокса

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023