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

Сообщений: 1590
Откуда: Волгоград
Дата регистрации: 28.06.2015
теперь добавлю почти ваш триггер:

CREATE OR ALTER trigger test_bi0 for test
active before insert position 0
AS
begin
/* проверяем на пустое значение */
if(trim(new.ftest)='') then
exception "EMPTY FIELD" ;
end

проверка тем же кодом теперь не вставляет и пустое значение и нормально отлавливается из фокса по aerror()

[attachment 36518 p2.png]


здесь я сделал триггер тока на before insert, можно и на изменение и прочее аналогично сделать



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

Сообщений: 1590
Откуда: Волгоград
Дата регистрации: 28.06.2015
выше - это я проверил на автокоммите

теперь сделал для интереса и ручной коммит после инсертов ... результат тот же и отлуп идет до коммита, т.е. все работает так как вы и хотите ))


[attachment 36519 p3.png]



Исправлено 3 раз(а). Последнее : AndyNigmatec, 23.03.23 15:02
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
Спасибо огромное!

тут я, похоже, налажал.
Нигде по руководству по языку не нашел empty, в IBexpert русский интерфейс, not null определен как "Не пустой". По фоксу понимаю, что null и пустой это две большие разницы.
Но думаю так, раз нет нигде empty() или чего-то вроде, то значит Null у них такой, пустоту тоже определяет.
А вставить ='' не догадался.

Еще раз спасибо.
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1590
Откуда: Волгоград
Дата регистрации: 28.06.2015
не за что, что знаю/использую - тем без проблем поделюсь ... но я любитель и многого не знаю
Ratings: 0 negative/1 positive
Re: VFP и Firebird
PaulWist

Сообщений: 14659
Дата регистрации: 01.04.2004
Я еще переводил транзакцию в автоматический режим всегда, поскольку открытый ручной режим, в общем соучае, устанавливает и не снимает блокировки до явного commit/sqlcommit/sqlrollback


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1590
Откуда: Волгоград
Дата регистрации: 28.06.2015
PaulWist
Я еще переводил транзакцию в автоматический режим всегда, поскольку открытый ручной режим, в общем соучае, устанавливает и не снимает блокировки до явного commit/sqlcommit/sqlrollback
Ну в firebird насколько я понимаю нет явных блокировок - он версионник.

Предпочитаю так действовать (в общем виде без конкретики):

в Load формы подключился (задал режим транзакций в том числе), создал CAD без запроса данных, т.е.
.Prepared = .T.
.FetchSize = -1

затем отколючился по =SQLIDLEDISCONNECT()

а в Init уже исходя из полученных параметров делаю:

IF this.oCad1.CursorRefresh()
ELSE
lcOk=0
AERROR(laInfo)
MESSAGEBOX("Can't Refresh adapter oCad1:" + CHR(13) + m.laInfo[2])
ENDIF

и уже в Destroy формы даю полное отключение SQLDISCONNECT()



Исправлено 2 раз(а). Последнее : AndyNigmatec, 24.03.23 09:34
Ratings: 0 negative/0 positive
Re: VFP и Firebird
PaulWist

Сообщений: 14659
Дата регистрации: 01.04.2004
AndyNigmatec
PaulWist
Я еще переводил транзакцию в автоматический режим всегда, поскольку открытый ручной режим, в общем соучае, устанавливает и не снимает блокировки до явного commit/sqlcommit/sqlrollback
Ну в firebird насколько я понимаю нет явных блокировок - он версионник.

Блокировки есть всегда, что у версионника, что у блокировочника, иначе нельзя "защитить" данные от изменениями дрпугими транзакциями, например в MSSQL, многие думают, что хинт NOLOCK не накладывает блокировок, а это не так.

Ну и коннект-дисконнект при входе-выходе из формы - так себе решение.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)




Исправлено 1 раз(а). Последнее : PaulWist, 24.03.23 09:39
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

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

Сообщений: 300
Дата регистрации: 06.04.2022
Доброго дня!

насколько я понял, вместо мемо-поля в ФБ используется Blob subtype 1 ?
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1590
Откуда: Волгоград
Дата регистрации: 28.06.2015
не вместо, но типа того можно писать текст

а ежели SUB_TYPE 0 - то и файлы целиком - я для теста и 100 Мб файлы заливал
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
AndyNigmatec
не вместо, но типа того можно писать текст
а ежели SUB_TYPE 0 - то и файлы целиком - я для теста и 100 Мб файлы заливал

Я в том смысле, что просто импортировать мемо из dbf получится или нужны танцы будут?
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
И еще какая-то хрень, когда должно быть сообщение, выскакивает message file C:\Windows\SYSTEM32\firebird.msg not found
Я этот файл из каталога ФБ скопировал, но не видит, нужно где-то прописать его, наверное.
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1590
Откуда: Волгоград
Дата регистрации: 28.06.2015
DmitryKn
Я в том смысле, что просто импортировать мемо из dbf получится или нужны танцы будут?
- никаких танцев, не переживайте))
DmitryKn
И еще какая-то хрень, когда должно быть сообщение, выскакивает message file C:\Windows\SYSTEM32\firebird.msg not found
- это в IBExpert как я понимаю? Не находит этот файл, посмотрите есть ли он вообще там у вас, у себя глянул - он вообще не в систем должен лежать, у меня здесь - "C:\Program Files\Firebird\Firebird_2_5\".
А вообще - это тупо текстовая расшифровка ошибок насколько помню, не критично.



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

Сообщений: 1590
Откуда: Волгоград
Дата регистрации: 28.06.2015
И еще такой совет - на той машине где установлен у вас fb-сервер, пропишите алиас вашей базы, делается это так:
1. Ищем там файл - aliases.conf, у меня он - "C:\Program Files\Firebird\Firebird_2_5\aliases.conf", у вас аналогично должен быть.
2. В нем прописываем алиас вашей базы, добавив две строки (разуммется по своему реальному пути))):
fbprice5.gdb = C:\Work\db\fbprice5.gdb
fbprice5 = C:\Work\db\fbprice5.gdb
- здесь слева придуманный вами алиас как вы догадались думаю
3. перегружаем или рестартуем fb-сервер
4. в дальнейшем в строке соединения путь к базе указываем так: сервер:алиас

т.е. если запускаете на той машине где сервер, то будет: localhost:алиас
для любой другой машины это будет или сервер:алиас или IP_сервер:алиас
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
AndyNigmatec
- это в IBExpert как я понимаю? Не находит этот файл, посмотрите есть ли он вообще там у вас, у себя глянул - он вообще не в систем должен лежать, у меня здесь - "C:\Program Files\Firebird\Firebird_2_5\".
А вообще - это тупо текстовая расшифровка ошибок насколько помню, не критично.

Он там и лежит, я его в систем 32 скопировал, но не помогло, где-то надо что-то прописать, похоже.
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
AndyNigmatec
И еще такой совет - на той машине где установлен у вас fb-сервер, пропишите алиас вашей базы, делается это так:
1. Ищем там файл - aliases.conf, у меня он - "C:\Program Files\Firebird\Firebird_2_5\aliases.conf", у вас аналогично должен быть.
...

Спасибо за совет, так и сделаю.
В моей версии (FB 4.0) конфиг зовется уже так databases.conf



Исправлено 2 раз(а). Последнее : DmitryKn, 27.03.23 14:17
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1590
Откуда: Волгоград
Дата регистрации: 28.06.2015
DmitryKn
Он там и лежит, я его в систем 32 скопировал, но не помогло, где-то надо что-то прописать, похоже.
- да его и не должно в систем быть по идее.
DmitryKn
В моей версии (FB 4.0) конфиг зовется уже так databeses.conf
- возможно так и есть, я на 4 не работал... есть у меня подозрение что как пропишите алиас и будете коннектиться уже по нему то эта ошибка уйдет.


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

Сообщений: 1590
Откуда: Волгоград
Дата регистрации: 28.06.2015
Пока вы не перенесли данные в fb и занимаетесь тестированием - самое время изучить и опробовать (без опасности похерить данные) минимально необходимый набор действий по администрированию сего хозяйства.

Начнем со sweep (сборка мусора в БД). У себя я отключаю автоматичекую сборку (она стоит по умолчанию) и запускаю принудительно.

Подробнее тут: www.ibase.ru


пример как отключить (тупо бат-файл, можно командной строкой):

set dBaseDir=C:\Work\db\
set cFix="C:\Program Files\Firebird\Firebird_2_5\bin\gfix.exe"
%cFix% %dBaseDir%fbprice5.gdb -housekeeping 0 -user SYSDBA -pas masterkey
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
AndyNigmatec
Начнем со sweep (сборка мусора в БД). У себя я отключаю автоматичекую сборку (она стоит по умолчанию) и запускаю принудительно.

Т.е. автоматический режим отключили, запускаем когда-нибудь утром-вечером руками.
В статье говорится - много времени занимает, как на практике?
Как часто вообще запускать надо?



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

Сообщений: 1590
Откуда: Волгоград
Дата регистрации: 28.06.2015
DmitryKn
Т.е. автоматический режим отключили, запускаем когда-нибудь утром-вечером руками.
В статье говорится - много времени занимает, как на практике?
Как часто вообще запускать надо?

- все зависит от нагрузки на базу, какие/сколько операций, сколько пользователей ... много факторов. Реально каждый день - это для ОЧЕНЬ сильно нагруженной базы (к примеру так делалось (не у меня) на базе овер 100Гб со овер 100 юзерами работающими практически 24/7), не думаю что у вас будет близко так, раз в неделю за глаза думаю - а там по факту посмотрите за неделю разницу между OIT-OAT - если будет более 20 тыс - то не реже раза в неделю

[attachment 36521 p4.png]

Реально сейчас я например вообще sweep не делаю, делаю периодический бэкап-рестор который полностью вычищает базу, но об этом далее поговорим)))
Ratings: 0 negative/0 positive


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

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

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