Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » InterBase и FireBird: вопросы по работе и их решение

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

Открыть новую тему     Написать ответ в эту тему

xpin2013



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
noisy
- Ты сегодня разговаривал с Гуглом?
- Ну да.
- И что он тебе рассказал?
- Да как всегда, "Страница не найдена".
 
Я думаю это дети. Это они странички выдирают.

Всего записей: 291 | Зарегистр. 16-01-2014 | Отправлено: 23:02 26-12-2014
SuPriTo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите компонент Delphi для работы с Firebird embedded, который можно использовать в windows service? Без всяких оконных компанент.

Всего записей: 1474 | Зарегистр. 24-03-2009 | Отправлено: 15:25 12-01-2015
Chukotka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Подскажите компонент Delphi для работы с Firebird embedded
Работа с embedded ничем не отличается от desktop - так что хоть стандартные IBX, хоть FIbPlus или IbDac какой-нить

Всего записей: 428 | Зарегистр. 01-11-2006 | Отправлено: 17:26 12-01-2015
SuPriTo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Chukotka

Цитата:
Работа с embedded ничем не отличается от desktop - так что хоть стандартные IBX, хоть FIbPlus или IbDac какой-нить  

Я знаю, что работа с embedded ничем не отличается. Можно эти компаненты использовать в службах windows или есть ограничения?

Всего записей: 1474 | Зарегистр. 24-03-2009 | Отправлено: 17:31 12-01-2015 | Исправлено: SuPriTo, 17:32 12-01-2015
ant0ni02004

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SuPriTo
а вы уверены что сам сервис Окажется "Без всяких оконных компанент"?
там же (SvcMgr.pas) ссылки на Forms...

Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 21:14 12-01-2015
xpin2013



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ant0ni02004

Цитата:
там же (SvcMgr.pas) ссылки на Forms...

Да им там нужно переопределить компонент TApplication. Даже если будут формы, но TService.Interactie = false, то ни одно окно не появится.

Всего записей: 291 | Зарегистр. 16-01-2014 | Отправлено: 21:52 12-01-2015
Shaman2

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Даже если будут формы, но TService.Interactie = false, то ни одно окно не появится.

 
чтобы не открывать вопрос в отдельной ветке, может подскажите способ взаимодействия с безоконным сервисом? Я о управлении и командовании ним из основного приложения. Встал вопрос получения данных из него, так как в windows 2008 окна сервиса невидно

Всего записей: 358 | Зарегистр. 18-07-2003 | Отправлено: 22:02 12-01-2015
xpin2013



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shaman2

Цитата:
так как в windows 2008 окна сервиса невидно

В любой виндовс не видно. Оконные хендлы сервиса - это одно пространство, оконные хендлы сессии юзера - другое пространство. Это же касается Мьютексов и многих других хендлов. Приемлемый для меня способ TCP/IP порт.

Всего записей: 291 | Зарегистр. 16-01-2014 | Отправлено: 22:22 12-01-2015
SuPriTo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
чтобы не открывать вопрос в отдельной ветке, может подскажите способ взаимодействия с безоконным сервисом?  

Pipes, FileMapping, TCP/IP. Сейчас пишу библиотеку для обмена сообщениями на базе FileMapping.
_http://msdn.microsoft.com/en-us/library/windows/desktop/aa366537%28v=vs.85%29.aspx

Всего записей: 1474 | Зарегистр. 24-03-2009 | Отправлено: 23:40 12-01-2015
ant0ni02004

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xpin2013
TCP однозначно. Хотя бы потому, что расширяемо до удалённого управления/мониторинга сервисом с другого компьютера.

Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 04:51 13-01-2015
xpin2013



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SuPriTo

Цитата:
Сейчас пишу библиотеку для обмена сообщениями на базе FileMapping.  

Отпишите плиз, получается ли? Я подозревал что FileMapping тоже не доступен.
 
Добавлено:
Или нужно указывать \"System.Spacename"\fname

Всего записей: 291 | Зарегистр. 16-01-2014 | Отправлено: 06:29 13-01-2015
SuPriTo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Отпишите плиз, получается ли? Я подозревал что FileMapping тоже не доступен.  

Я пока не тестировал. В help написано, что имя нужно указывать следующим образом "Global\Name" - для глобальных сессий (возможно потребуются еще права) и "Local\Name" - для локальных сессий.

Всего записей: 1474 | Зарегистр. 24-03-2009 | Отправлено: 10:20 13-01-2015
mrUlugbek



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет всем
Дайте пример заполнение мастер детайл (инвойс) одним хранимой процедурой?  
Хотел спросить можно ли заполнить мастер детайл (инвойс) одним хранимой процедурой?..
Использую компонент Devart Ibdac
Примерно делаю так
Главная форма+ДбГрид+Датасет='select * from view order by 1'
Три кнопки Добавить,Редактировать,Удалить
При нажатия кнопки Добавить открываю вторую форму детали
для редактирование использую два датасета у обоих cachedUpdate = true стоит
1 - МастерДатасет = 'select * from master where id=-1'
2 - Детайл = 'select * from master where id=:master_id'
 
Мастер Сиквенс беру при инсерте. Заполняю мастера потом заполняю детали много товара если нажимать на отмену то все отменяется в базе ничего ни пишется если нажимать сохранить то все сохраняеться.. и обновляю Главную форму датасет..
Мне не нравиться в этом подходе что генерация сиквенса при инсерте если отменяет юзер то секвенс уже генерировался.
 
Как та можно все это в одном процедуре сделать
Примерно заполнил шапку инвойса потом детали к нему... и сохранить
Try
СтартТранзакция
вызов процедуры
Коммит
except
Роллбек
 
Рефреш датасет
 
ХП Процедура примерно
 
insert into master (gen(seq,1),name)
returning id into :id
 
insert detail (mastid)
:id
 
Как такое реализовать
 
Детали как буду передавать в цикле? Или есть какойта способ пакетно передача  

Всего записей: 878 | Зарегистр. 04-04-2011 | Отправлено: 10:39 29-01-2015
SuPriTo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Try
СтартТранзакция
вызов процедуры
Коммит
except
Роллбек  

Все эти действия нужно выполнять в хранимой процедуре.
 

Цитата:
insert into master (gen(seq,1),name)
returning id into :id
insert detail (mastid)
:id  

Создаешь хранимую процедуру, передаешь туда необходимые параметры. В хранимой процедуре делаешь всю логику по добавлению данных и возвращаешь результат.
Конкретный пример не приведу, т. к. давно этим занимался.

Всего записей: 1474 | Зарегистр. 24-03-2009 | Отправлено: 11:08 29-01-2015
mrUlugbek



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SuPriTo
Можете пример как передать параметры
Передача данных как идет?  

Всего записей: 878 | Зарегистр. 04-04-2011 | Отправлено: 12:50 29-01-2015
SuPriTo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mrUlugbek
Все зависит от компонентов, которые вы используете. Например, в FireDac есть специальный компонент TFDStoredProc, при помощи которого можно обратиться к хранимым процедурам на стороне сервера.
А в целом работа с хранимыми процедурами ничем не отличаются от работы с запросами.
http://www.firebirdsql.org/refdocs/langrefupd21-ddl-procedure.html
http://www.ibase.ru/devinfo/sp_call.htm

Всего записей: 1474 | Зарегистр. 24-03-2009 | Отправлено: 13:45 29-01-2015 | Исправлено: SuPriTo, 13:56 29-01-2015
Andryshok



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ничего не зависит от компонентов которые используете - это лишь обертка над API субд
 
Пример бы дал да не стоит у мню фаер а ставить лень, все на самом деле просто
В самом теле процедуры получаете значние генератора первичного ключа поля мастера - читать тут http://www.firebirdsql.org/manual/ru/generatorguide-sqlsyntax-ru.html
Пишите полученный ключ во внейшний детайла .... и т.д., делов то...  

Всего записей: 649 | Зарегистр. 03-06-2009 | Отправлено: 16:54 29-01-2015 | Исправлено: Andryshok, 16:57 29-01-2015
OXDBA

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Andryshok
SuPriTo
 
mrUlugbek жаждет передать неопределенное количество параметров в хранимую процедуру(что невозможно без извращений, да на самом деле и не нужно) ибо не знает количество detail'ов.

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 08:56 30-01-2015 | Исправлено: OXDBA, 08:56 30-01-2015
chAlx

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Andryshok
OXDBA
 
Такая постановка задачи, что каждый понимает по-своему ;) Я вот понял, что проблема в убегающем автоинкременте, который по-любому должен оставаться независимым от транзакций. Ну, можно после роллбэка его вручную перекрутить на max(id)+1, но это, опять же, может совпасть с параллельным инсертом...

Всего записей: 1691 | Зарегистр. 19-03-2003 | Отправлено: 11:26 30-01-2015
jonikDk



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mrUlugbek
Как мне видится тут 3 варианта
1. Передавать все параметры в ХП и в ней уже раскидывать по мастер и детали. Но возникает проблема с количеством параметров. (пример проблемы: в детальную таблицу нужно записать несколько записей)
2. Использовать механизм CasheUpdates (по моему так называется) - тут зависит наверное от конкретной реализации этого механизма в компонентах. (Если честно, сам пробовал этот механизм около 10 лет назад, но результат не помню)
3. Использование In Memory DataSet - заполняем все данные, проверяем и только затем передаем на сервер. Сохраняя в начале запись в мастере, а затем в подчиненных таблицах.
 
У всех методов есть недостатки...

Всего записей: 1599 | Зарегистр. 01-03-2004 | Отправлено: 11:42 30-01-2015
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » InterBase и FireBird: вопросы по работе и их решение


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru