Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» InterBase и FireBird: вопросы по работе и их решение

Автор: druff
Дата сообщения: 09.02.2012 16:07
Andryshok
rfunc хороша, но не будет работать под x64 и не уверен в полноценной работоспособности под FB25
Автор: Andryshok
Дата сообщения: 09.02.2012 16:15
druff Работала под 2.5, человек вроде под X64 и не просил, точнее - он не указывал это, это так для примера, можно самому написать и под X64, правда для начала нужен будет небольшой тренинг
А для данного случая наверное самое лучшее написать хранимую процедуру с использованием того же CASE и возвращать нужный результат
Автор: druff
Дата сообщения: 09.02.2012 18:11
Andryshok
о, а ведь есть решение существует транк этого udf набора, кажется сделанный авардой, https://assembla.com/spaces/audfl_rfunc
Автор: xeowww
Дата сообщения: 10.02.2012 08:03
Добрый день, не подскажите как поставить одновременно Firebird 1.5 и 2.5? Нужно чтобы одна программа на старой работала другая программа на новой версии? Заранее спасибо
Автор: Arvur
Дата сообщения: 10.02.2012 08:05
xeowww
http://www.ibase.ru/devinfo/inst_manual.htm#both
Автор: X11
Дата сообщения: 10.02.2012 08:41
Установка нескольких серверов firebird
http://forum.vingrad.ru/forum/topic-217811.html
Автор: MagistrAnatol
Дата сообщения: 10.02.2012 10:38
Andryshok
как раз rfunc и использую и она мне на англицком выдала результат
Автор: Andryshok
Дата сообщения: 10.02.2012 16:07
MagistrAnatol - Напишите хранимую процу с CASE типа

Код:
case mes
when 'January' then 'Январь'
when .....
else ''
end
Автор: MagistrAnatol
Дата сообщения: 11.02.2012 10:48
Andryshok
ну ето понятно, я думал моно с региональными настройками поиграться
Автор: brookson
Дата сообщения: 13.02.2012 13:40
Добрый день.

Нужна помощь с многопользовательским приложением Delphi + Firebird. Может есть ссылки с примерами? Из описаний транзакций и т.д. картина в голове не сложилась.

Раньше работало только на 1 рабочем месте. 1 база и 1 транзакция. Сейчас несколько пользователей добавляют записи в одну и ту же таблицу. Как правильно организовать этот процесс в плане привязки транзакций к датасетам?

Пробовал на селект 1 транзакцию (read_committed rec_version nowait), а на добавление вторую с такими же параметрами. Пост, Комит. Потом закрыть датасет, вернуть ему 1-ю транзакцию и открыть.
В базе есть данные, в гриде пусто (((
Автор: X11
Дата сообщения: 13.02.2012 13:55
Я уверен, что Вам поможет книга Хелен Борри.

А также:
http://ibase.ru/develop.htm#doc

и в частности:
http://ibase.ru/develop.htm#trans

Добавлено:


Цитата:
Пробовал на селект 1 транзакцию (read_committed rec_version nowait), а на добавление вторую с такими же параметрами. Пост, Комит. Потом закрыть датасет, вернуть ему 1-ю транзакцию и открыть.
В базе есть данные, в гриде пусто (((


А слово read ничего товарищу программисту не говорит
Автор: brookson
Дата сообщения: 13.02.2012 14:05
Книга Хелен Борри помогала не раз. Но не сейчас.

Такие глупые вопросы: Сколько должно быть компонентов транзакций? От чего это число зависит?

Добавлено:
В описаниях многопользовательского режима упор идёт на изменение одних и тех же записей, блокировка и т.д.
У меня другая задача. И пока пользователи добавляли данные достаточно редко, всё работало.
А щас лезут ньюансы... Да и хочется как правильно.
Автор: X11
Дата сообщения: 13.02.2012 14:14

Цитата:
Такие глупые вопросы: Сколько должно быть компонентов транзакций? От чего это число зависит?  


От Вас.
В приложении может быть одна общая читающая транзакция + много пишущих, а может быть одна общая читающая + одна общая пишущая.
Может быть одна общая читающая + несколько пишущих.
Всё зависит от реализации.
Автор: brookson
Дата сообщения: 13.02.2012 14:18
Ну хоть какой-то пример реализации?
В коде я заранее не могу угадать, сколько будет пользователей, а то бы просто завёл на каждого 1 транзакцию на изменение.....

Добавлено:
Я почему так настойчив. Сделал разные на чтение и изменение. Теперь данных вообще не видно
Автор: Arvur
Дата сообщения: 13.02.2012 14:22
brookson
Вы бы лучше так же настойчиво почитали предложенные материалы.
Вопросы относятся к азам и лечатся соответственно - учебниками, а не примерами.
Автор: brookson
Дата сообщения: 13.02.2012 14:27
Arvur
О благодарю!
Автор: X11
Дата сообщения: 13.02.2012 14:32
Какая разница сколько пользователей, вот этого я не могу никак понять?

Добавлено:
brookson, здесь вопросы по firebird, по SQL. Вы же хотите чтобы Вам дали пример реализации приложения.
Вы ошиблись разделом.
Автор: brookson
Дата сообщения: 13.02.2012 14:34
Ок
Автор: eddoc
Дата сообщения: 14.02.2012 21:05
brookson

Цитата:
В коде я заранее не могу угадать, сколько будет пользователей

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


Цитата:
Сделал разные на чтение и изменение. Теперь данных вообще не видно

Значит вам обязательно надо читать основы работы с данными в IB/FB. Почитайте мануалы (их полно на русском), попробуйте демки (особенно в ФИБах). Все у вас получится...
Автор: delover
Дата сообщения: 22.02.2012 17:36
Кто может помочь? Переход c 1.5 на 2.5 я использую перекомпилирование всех хранимок. Но попалась проблемма - раньше не всегда писали SUSPEND в хранимках. Одну я выловил только потому что программа перестала работать, а как выловить все???? Компиль процедур отличается а средств ловит сиё я не знаю, хелп ми.
Автор: noisy
Дата сообщения: 22.02.2012 18:48
delover
Ты сам понял что написал?
переведи на русский...

и скачай себе IBExpert и опробуй этот инструмент
Автор: salexn1
Дата сообщения: 22.02.2012 22:09
delover
и в 2.5 не обязательно нужно везде тыкать SUSPEND...
Автор: X11
Дата сообщения: 23.02.2012 08:45
delover, попробуй SQL Dynamite
http://forum.vingrad.ru/forum/topic-339061/kw-sql-azure-oracle.html


Цитата:
Например нам нужно знать где используется поле currency. Моя программа найдёт это поле везде - и в индексах и в ХП и в таблицах (поиск можно настраивать).
Автор: druff
Дата сообщения: 23.02.2012 10:56
delover
в IBExpert ты можешь парой кликов перекомпилировать все ХП и триггеры. Сразу увидишь проблемные
Автор: ant0ni02004
Дата сообщения: 23.02.2012 17:17
delover

а также Search in metadata сделать

Добавлено:
в IbExpert-e
Автор: druff
Дата сообщения: 23.02.2012 17:27
salexn1
я бы даже сказал иначе если есть выходные параметры, то suspend обязательно должен быть. Если их нет, то и suspend должен отсутствовать
Автор: druff
Дата сообщения: 05.03.2012 04:38
gpi
никогда так не делал. достаточно gds32.dll положить в один каталог с клиентским приложением.
Автор: delover
Дата сообщения: 05.03.2012 08:03
X11
Жаль пока не могу установить клиента у меня
FirebirdSql.Data.FirebirdClient, Version=2.6.0.0
А программке нужен более ранний, попробую дома сделать.

druff
При полном перекомпиливании IBExpert не ругается на эти процедуры. Ошибка вылетает только во время исполнения. В этом то и косяк. Выходные параметры есть единичные, а suspend отсутствует и до перекомпиливания хранимая процедура работала вполне нормально, а вот после перекомпиливания перестала выполняться. Я обычно накатываю базу на базу пустышку путём сравнения и вижу весь SQL. Поиск по нотепаду конечно работает, думаю написать свой RegExpr, так как простым пролистыванием это нудно и ненадёжно.

Добавлено:
ant0ni02004
Оо тоже спасибо, там вроде регулярка есть

Добавлено:
То есть мне нужно найти все процедуры в которых нет слова suspend и просто их просмотреть.
Автор: delover
Дата сообщения: 30.03.2012 15:56
Функции я хранимые без suspended вычислил, вроде всё норм, хотя их 60 было.

Вопрос
Я методом тыка уже целый день стряпаю хранимку для выкручивания nds.
Где нибудь скобочку убираю и получаю сразу нумерик оверфлов integer.
Вот последняя капля, может объясните почему оверфлов?

CENA1=Round(:CENA1*100.0)/100.0;
Kol1=:kol1+cast(Round((:KOL_ALL*:CENA1*:NACEN_OPT_NDS)/100.0)+
(:KOL_ALL*:CENA1) as numeric(18,6));

Все переменные numeric(18,6)
KOL_ALL=3
cena1=2,035676
nds=18
Всё валится сразу хотя числа маленькие. Понять бы что не так делаю...
Автор: noisy
Дата сообщения: 30.03.2012 18:35
delover

работает без проблем

Код:
execute block as
declare variable KOL_ALL NUMERIC(18,6);
declare variable KOL1 NUMERIC(18,6);
declare variable cena1 NUMERIC(18,6);
declare variable nds NUMERIC(18,6);
declare variable NACEN_OPT_NDS NUMERIC(18,6);
begin
KOL_ALL=3.0;
cena1=2.035676;
nds=18.0;
kol1 = 0.0;
NACEN_OPT_NDS = 0.0;
CENA1=Round(CENA1*100.0)/100.0;
Kol1=kol1+Round((KOL_ALL*CENA1*NACEN_OPT_NDS)/100.0)+ (KOL_ALL*CENA1);
end

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465

Предыдущая тема: Сравнение двух строк


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.