:: Visual Foxpro, Foxpro for DOS
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1383
Откуда: Волгоград
Дата регистрации: 28.06.2015
еще, вот пример настроек для базы в IBExpert

[attachment 36513 db.png]

обратите внимание на Charset и Font Charsets Set
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 276
Дата регистрации: 06.04.2022
Закладка description, например, для таблицы можно написать "Это таблица того-то и того-то, содержит то-то и то-то", коммент одним словом, а так же есть столбец description для каждой записи. Так вот только на англ у меня, если русский текст, то в такое '?' преобразуется.



Исправлено 1 раз(а). Последнее : DmitryKn, 21.03.23 11:51
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 276
Дата регистрации: 06.04.2022
AndyNigmatec
еще, вот пример настроек для базы в IBExpert
[attachment 36513 db.png]

обратите внимание на Charset и Font Charsets Set

Charset у меня NONE , сейчас посмотрю, как поправить
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 276
Дата регистрации: 06.04.2022
Поменял на WIN1251 все стало гармонично.

Спасибо!

Теперь надо все переварить и поковырять
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1383
Откуда: Волгоград
Дата регистрации: 28.06.2015
Еще вам на раздумья в копилку:

Цитата:
Установка Firebird — выбор типа сервера
Сервер Firebird SQL доступен в 3-х вариантах:

Firebird Super Server
Firebird Classic Server
Firebird Embedded

третий вариант сразу отметаем - это недосервер, да и не сервер вообще ... выбор между вариантом 1 и 2 - у каждого варианта есть свои плюсы и минусы

немного об этом здесь: www.ibprovider.com



Исправлено 1 раз(а). Последнее : AndyNigmatec, 22.03.23 09:57
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 276
Дата регистрации: 06.04.2022
Ставил ФБ 4.0 SuperServer, классик читал для Линукса хорош.
Так же был такой совет - не знаешь что поставить и у тебя Винда - ставь SS.
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1383
Откуда: Волгоград
Дата регистрации: 28.06.2015
ну поскольку у вас все на одной машине (и сервак и клиентские) - то думаю да, оптимально так будет, сервак одно ядро загрузит, а клиентские винда по ядрам раскидает.
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 276
Дата регистрации: 06.04.2022
а если бы на разнесенных машинах, то как?
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1383
Откуда: Волгоград
Дата регистрации: 28.06.2015
DmitryKn
а если бы на разнесенных машинах, то как?

- тогда логичнее было бы классик юзать - чтоб все ядра сервака работали как минимум.

Да и по производительности так думаю поинтереснее бы было, но не в вашем случае.



Исправлено 1 раз(а). Последнее : AndyNigmatec, 22.03.23 13:46
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 276
Дата регистрации: 06.04.2022
AndyNigmatec
ну поскольку у вас все на одной машине (и сервак и клиентские) - то думаю да, оптимально так будет, сервак одно ядро загрузит, а клиентские винда по ядрам раскидает.

И исходя из этого, оставлять процедуры и прочую логику на клиенте, т.е. на фоксе?
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1383
Откуда: Волгоград
Дата регистрации: 28.06.2015
Не обязательно, делайте сначала как вам удобнее и проще. А потом уже войдете "во вкус" удобства ХП - и потихоньку часть логики в БД перетащите )))

Думаю оптимально вообще тупо взять приличный комп, обозвать его "сервером", накатить туда ubuntu-сервер, firebird, ну и web-сервер до кучи (апач какой-нить).

В отличие от винды убунта на графику ниче не жрет, ооочень устойчива, и вдобавок ваш сервак будет обособлен и в вашей полной власти))

Я делал так лет несколько назад, причем с линухом опыта практически не имею, но основное как и что - все есть на просторах инета, мне хватило. Единственно помню у админа заморочка была эту машину с убунтой в домен ввести, но он справился.



Исправлено 1 раз(а). Последнее : AndyNigmatec, 22.03.23 13:53
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 276
Дата регистрации: 06.04.2022
AndyNigmatec
...
Думаю оптимально вообще тупо взять приличный комп, обозвать его "сервером", накатить туда ubuntu-сервер, firebird, ну и web-сервер до кучи (апач какой-нить).
...

Думаю, пока что это лишнее, нет такой загрузки, но если вдруг Фокс + ФБ окажутся медленнее , чем только Фокс, то...
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1383
Откуда: Волгоград
Дата регистрации: 28.06.2015
DmitryKn
но если вдруг Фокс + ФБ окажутся медленнее , чем только Фокс, то...

не окажутся )))

тестируйте используемые запросы сначала в IBExpert - по надобности создавайте ключи - очень сильно влияют на скорость выполнения.
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 276
Дата регистрации: 06.04.2022
PaulWist

Нет, для взрослых СУБД клиентская транзакция открывается
sqlsetprop(hnd, 'Transaction', 2)
Выполняется код
TableUpdate()
Затем, если ошибок не было, то транзакция закрывается
sqlcommit(hnd)
или же
sqlrollback(hnd)
Затем, лучше соединение перевести в состояние автоматической транзакции
sqlsetprop(hnd, 'Transaction', 1)

выполняем:
LOCAL llError
=SQLSETPROP(gnConnect,"Transactions",2)
llError=!TABLEUPDATE(.T.,.T.,'vbank') && обновляем курсор и посылается SendUpdates
IF !llError && успешно
SQLCOMMIT(gnConnect)
else
SQLROLLBACK(gnConnect)
endif

или нужно еще анализировать что возвращает SQLCOMMIT() , 1 или -1.
Может быть история, что курсор TABLEUPDATE() вернул .Т., а SQLCOMMIT() вернул -1 ?
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1383
Откуда: Волгоград
Дата регистрации: 28.06.2015
DmitryKn
Может быть история, что курсор TABLEUPDATE() вернул .Т., а SQLCOMMIT() вернул -1 ?
- не сталкивался, не могу ответить ... по идее до коммита на серваке уже существует версия (а FB - версионник) с измененными данными, которые соотв. прошли проверки тригеров и прочего (чего там у вас в базе), осталось только комитом подтвердить эту версию.
вот с просторов инета:
Цитата:
firebird версионник до сих пор не имеет лога. там при апдейте транзакция пишет прямо в датафайл новую версию строки, не трогая старую. по коммиту обновляет запись в заголовке, где указывает что новая версия закомичена. на IL snapshot транзакции стартовавшие после записи в заголовке видят уже новую версию, стартовавшие до старую версию. спустя какое-то время сборка мусора вычищает никому не нужные версии строк из файла данных.


а вот это
=SQLSETPROP(gnConnect,"Transactions",2)
я думаю лучше установить сразу как только создали соединение.



Исправлено 4 раз(а). Последнее : AndyNigmatec, 23.03.23 13:27
Ratings: 0 negative/0 positive
Re: VFP и Firebird
ssa

Сообщений: 12923
Откуда: Москва
Дата регистрации: 23.03.2005
DmitryKn
выполняем:
SQLSETPROP(gnConnect,"Transactions",2)
IF TABLEUPDATE(.T.,.T.,'vbank') && обновляем курсор и посылается SendUpdates
SQLCOMMIT(gnConnect) && успешно
else
SQLROLLBACK(gnConnect)
endif

или нужно еще анализировать что возвращает SQLCOMMIT() , 1 или -1.
Теоритически надо проверять всё.
Цитата:
Может быть история, что курсор TABLEUPDATE() вернул .Т., а SQLCOMMIT() вернул -1 ?
Может.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 276
Дата регистрации: 06.04.2022
Тогда еще один холиварный вопрос:

Например, в моей таблице vbank есть обязательные для заполнения поля cname и cbiccode.
В фоксе я это проверял и выводил messagebox если вдруг поле не было заполнено.
А в связке фокс-фб где эту проверку и вывод месседжей лучше делать, в фоксе (для курсора ) или в БД (для таблицы) и выводить сообщения из БД?



Исправлено 1 раз(а). Последнее : DmitryKn, 23.03.23 13:37
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1383
Откуда: Волгоград
Дата регистрации: 28.06.2015
DmitryKn
А в связке фокс-фб где эту проверку и вывод месседжей лучше делать, в фоксе (для курсора ) или в БД (для таблицы) и выводить сообщения из БД?

Да проверяйте и там и там )))

А вообще можно на базу сие спихнуть, раз уж это на целостность данных влияет, у поля NOT NULL флажок, или вообще триггер там замутить. При нарушении отлавливается AERROR-ом из фокса.
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 276
Дата регистрации: 06.04.2022
Пока что-то не отлавливается.
Сохраняет пустое поле, не индекс, с условием not null без проблем. И из фокса, и в самой БД.
Пытаюсь триггер сделать
AS
begin
/* Trigger text */
if(new.cbiccode is null) then
exception "EMPTY FIELD" ;
end

и на вставку и на апдейт, и бифо, и после, и пох ей, сохраняет.
На первый взгляд в триггере что-то не хватает, но в справочнике с примерами триггеров так, если - то исключение, и никаких действий нет.
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1383
Откуда: Волгоград
Дата регистрации: 28.06.2015
создал у себя тестовую табл:

CREATE TABLE test (
ID varchar(20) NOT NULL,
ftest varchar(20) NOT NULL
);
CREATE UNIQUE INDEX ID ON test (ID);
GRANT SELECT, INSERT, UPDATE, DELETE ON test TO TWUSER;

запускаю по ней тест вставки из фокса:

nConnect=SQLSTRINGCONNECT(cConnectionString)
IF nConnect>0
?'1. Запрос 1 (вставляем null)... '
cScript=[insert into test (id, ftest) values ('2-000002', null)]
IF SQLEXEC(nConnect,cScript,'c0')>0
??'Ok.'
ELSE
=AERROR(a1)
??'error!'
?a1[2]
ENDIF
?'2. Запрос 2 (вставляем пустое значение)... '
cScript=[insert into test (id, ftest) values ('2-000003', '')]
IF SQLEXEC(nConnect,cScript,'c0')>0
??'Ok.'
ELSE
=AERROR(a1)
??'error!'
?a1[2]
ENDIF
=SQLDISCONNECT(nConnect)
ELSE
?'ошибка соединения!'
ENDIF

получаю:

[attachment 36517 p1.png]

т.е. null не вставляется и ошибка отлавливается без проблем, а пустое разумеется вставляется.

теперь добавлю ваш триггер ... счас дополню через неск минут



Исправлено 1 раз(а). Последнее : AndyNigmatec, 23.03.23 14:43
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 12 (Гостей: 12)

© 2000-2023 Fox Club 
Яндекс.Метрика