Як встановити firebird разом з прогой

Як встановити Firebird разом з прогой?

Вітаю # XA0; майстри! Підкажіть який інсталятор краще використовувати, щоб можна встановити "по тихому", без зайвих рухів тіла користувача огнептіц разом з прогой? Хотілося б щоб сервер стартував автоматом після установки для можливості запуску проги відразу після інсталяції.

Так буде добре: Firebird-2.5_Win32.exe / VERYSILENT # XA0 ;?


> Novicer (08.01.14 13:47)

Firebird він OpenSource, у нього в репозиторії лежить інсталяційний скрипт (на мою InnoSetup), береш його, правиш, використовуєш.

А потім виявиться що іншої такої ж Кулібін по тихому встановив вже йому Фиребирд іншою версією.

Не створюйте проблем користувачам. А то як відгукнеться.
;-)

Можна в інсталятор свій програми звичайно додати інсталяцію FB але ніяк не "по-тихому" а з хмарою попереджень


> Привіт # XA0; майстри! Підкажіть який інсталятор краще
> Використовувати, щоб можна встановити "по тихому", без зайвих
> Рухів тіла користувача огнептіц разом з прогой? Хотілося б
> Щоб сервер стартував автоматом після установки для можливості
> Запуску проги відразу після інсталяції.

> 1. Якщо це саме сервер, то ніяких "silent", за таке тобі відрубають ноги, і правильно зроблять.
ха, а мене спеціально просили зробити режим "silent" Сетап, саме для установки на сервер (як то в командному режимі ставлять, ні в чому кнопки підтвердження натискати).
правда ставлять не файбірд, а "мій" сервіс-сервер "трехвенкі", але все таки.


> Якщо це корпоративний софт - ніхто "відривачі ніг" питати
> Не буде. наприклад так робить із знайомих мені DVR, встановлюючи
> Mysql.

Дуже багато нюансів. Варто сервер FB 1.5. Я в своєму софт використовую 2.5 На 1.5 сидять якісь нитка бази, яким в разі поновлення треба міграцію зробити.
Або, наприклад, зайнятий 3050-й порт.
Зрозуміло, що якщо це на чисту машину ставити, то можна і приховано.


> Ха, а мене спеціально просили зробити режим "silent" Сетап,
> # XA0; саме для установки на сервер (як то в командному режимі
> Ставлять, ні в чому кнопки підтвердження натискати).
> Правда ставлять не файбірд, а "мій" сервіс-сервер "трехвенкі",
> # XA0; але все таки.

я через таких же бажань змінював юніт SvcMgr.pas - випиляв звідти модальні віконця установки / видалення сервісу :)

> Випиляв звідти модальні віконця установки / видалення сервісу :)
а я просто зробив свою реєстрацію "поверх" при установці в "мовчазній" режимі. а в звичайному віконце - візуальне підтвердження, що все поставить і стартувало, немає потреби в логи лізти.

> Antonn Чим краще Embedded?

Чи не залежить від всього іншого.

Embedded працює в мережевому режимі з можливістю доступу до БД з інших ПК? Я читав що підключення можливе лише за локал.протоколу і при підключенні користувача БД блокується. Прлучается що кілька людей не зможуть одночасно працювати з базою?


> Прлучается що кілька людей не зможуть одночасно
> Працювати з базою?

Не зможуть. Там ще купа інших обмежень.

Тоді виходить embedded локальна БД. А потрібна саме мережева :)


> А чи потрібна саме мережева :)

Тоді питання: навіщо ставити мережеву разом з клієнтом? Клієнт окремо, сервер окремо.


> Для Interbase називається gds32.dll, для FB, на кшталт - fbclient.
> dll

До речі, інтербейсовскій gds32.dll цілком може працювати з сервером FB. І саме цю dll встановлює, наприклад, Дельфи в якості клієнта.

Цю длл буде досить включити в дистриб проги, щоб вона змогла потім коннектіться до сервера в мережі?


> Цю длл буде досить включити в дистриб проги, щоб
> Вона змогла потім коннектіться до сервера в мережі?

Спасибі велике всім за короткі, але корисні відповіді! Якщо можна порадьте плиз чого почитати про огнептіц (книги, сайти)? Ази для чайника :)

Тобі-ж дали посилання. Ну і "Мир Interbase" Козявин читай

Ковязіна, блджад!
Весь час плутаю.

> Ні, не достатньо.

Чому ні? Для клієнта. наскільки знаю, більш ніж.

Я так розумію після установки проги і Firebird треба прописати демо-базу на сервері. Як це можна зробити? Досить прописати в настройках підключення шлях, логін і пароль (на всіх ПК в мережі)? Довірити користувачеві в віконці ввести потрібні дані?

Яку базу? Який проги? Телепатор не працює, вибач вже.
Все залежить від завдання, компонент для роботи з БД і т.д.


> Я так розумію після установки проги і Firebird треба прописати
> Демо-базу на сервері.

Яку ще демо базу? Після установки сервера базу треба створити, або з нуля, або з SQL скрипта. Для створення з нуля зручно користуватися IBExpert.
Бажано налаштувати права доступу до бази і поміняти пароль користувача SYSDBA. Бажано поставити алиас файлу бази. Як це все робиться написано в докумнтаціі.


> Досить прописати в настройках підключення шлях, логін
> І пароль (на всіх ПК в мережі)? Довірити користувачеві в віконці ввести
> Потрібні дані?

Для віддаленої бази: сервер, порт, алиас бази, логін, пароль, роль
Для локальної: алиас, логін, пароль, роль

> [39] Novicer # XA0; (15.01.14 00:42)
> TIBTable

Для статистики?

> [39] Novicer # XA0; (15.01.14 00:42)
> До бази конекчусь на OnShow головною форми без помилок

Мсьє знає толк в збоченнях.

> Inovet З Firebird працюю перший раз, підкажіть як треба правильно, якщо не складно.

> DVM Базу зробив з нуля в IbExperte. Після установки проги потрібна її реєстрація на сервері або можна просто підключити вказавши шлях до неї?


> # XA0; Після установки проги потрібна її реєстрація на сервері або
> Можна просто підключити вказавши шлях до неї?

Просто шлях на сервері. А ще краще алиас зробити і його вказувати, тоді не важливо де база лежить і при переміщенні її, клієнтів перенастроювати не доведеться (файл aliases.conf в папці сервера).


> Novicer (15.01.14 10:29) [41]
>> Inovet З Firebird працюю перший раз, підкажіть як треба
> Правильно, якщо не складно.

Ти роздягли дані і уявлення. Форми окремо, підключення до бази окремо. Для будь-яких різних невізуальних компонентів типу з'єднання з базою даних та ін є DataModule на нього і поклажі. Підключатися має сенс до створення головної форми, адже як правило від користувача потрібно введення логіна пароля для доступу до бази, тому послідовність приблизно така:

1) Старт програми
2) Показ форми із запитом пароля
3) Спроба підключення
4) Якщо підключилися відображаємо головну форму, якщо немає то помилку і знову до 2) або вихід.

Зробив підключення через try-except щоб показати користувачеві повідомлення про помилку якщо що, але для експерименту змінив ім'я файлу бази і спробував пріконектіться. Замість повідомлення вилітає помилка IDE "файл не знайдено". Чому не працює try-except?


> Закривати їх треба обов'язково і швидше.

Read / ReadCommited / RecVersion / NoWait може жити скільки завгодно без навантаження на сервер.

Як встановити курсор на потрібний рядок DBGrida використовуючи IBQuery.Locatе? Або це можна зробити?


> Чи це не можна зробити?


> Використовуючи IBQuery.Locatе?

Так і використовуєш: IBQuery.Locate # XA0; Якщо знайде щось, що задовольняє параметрам, то встане саме. Якщо не знайде, то не встане.

Пробував так:
Form1.IBQuery1.Open;
Form1.IBQuery1. Locate ( "COL1", Edit1.Text, [loCaselnsensitive, loPartialKey]);
Form1.IBQuery1.Close;
Чи не дізнається компілятор loCaselnsensitive і loPartialKey # XA0; :(

Додав в uses DB допомогло :)

Тепер IDE Компільо без помилок але після виконання
Form1.IBQuery1.Open;
Form1.IBQuery1. Locate ( "COL1", Edit1.Text, [loCaselnsensitive, loPartialKey]);
Form1.IBQuery1.Close;
DBGrid очищається, а не ставить курсор на рядок з збігом. Чому?

> [55] Novicer # XA0; (16.01.14 19:07)
> Чому?

Тому що в DBGrid немає даних.

Дані в гріді є, а після виконання локейт зникають :(


> Novicer # XA0; (16.01.14 19:07) [55]
> Тепер IDE Компільо без помилок але після виконання
> Form1.IBQuery1.Open;
> Form1.IBQuery1. Locate ( "COL1", Edit1.Text, [loCaselnsensitive,
> # XA0; loPartialKey]);
> Form1.IBQuery1.Close;
> DBGrid очищається, а не ставить курсор на рядок з збігом.
> # XA0; Чому?

Ось чому.


> Novicer # XA0; (16.01.14 19:38) [57]
> Дані в гріді є, а після виконання локейт зникають
> :(

Їх там немає. Не дури нас.

Ні, так немає й фіг з ними. Як отримати true або false в результат пошуку без відображення даних в гріді. В Едіт ввожу запит наприклад вишня, в списку бази (одна колонка) перелік продуктів. Хочу дізнатися чи є вона чи ні? Треба використовувати sql-запит щоб дізнатися чи якось перебором і порівнянням даних в рядках # XA0; і Едіті?

Беремо дані з едіта, шукаємо. Якщо є то ShowMessage (знайшли) а якщо немає то ShoMessage (немає, звиняй братан) якось так :)

Зробив пошук sql-запитом, дані знаходить і показує в dbgrid, а мені їх бачити не обов'язково, хочу просто знати є потрібне в таблиці чи ні? При необхідності можна потім відобразити дані :)

Тут, цього сантехніку, вже основи почитати пропонували або проводять навчання онлайн?

Пропонували :) читаю. але поки до профі мені як пішки до Марса :) за три дні з нуля навчився як підключитися до бази, як внести дані в базу, як змінити дані, як видалити, як знайти точно то шо треба, як знайти схоже на те що треба і все це показати собі коханому :) на цьому успіхи закінчилися і почалися питання до профі. ;)

> [64] Novicer # XA0; (16.01.14 23:43)
> Хочу просто знати є потрібне в таблиці чи ні?

SELECT COUNT (*) WHERE
отделная запитом і провереіть скільки там повернулося.

Можна передати дані з запиту в змінну і вже її порівнювати?

> [68] Novicer # XA0; (17.01.14 10:16)
> Можна передати дані з запиту в змінну і вже її порівнювати?

IBQuery1.FieldByName ( "ChoToTam"). AsInteger
або для лічильника відомо, що у тебе взагалі точно одне поле
IBQuery1.Fields [0] .AsInteger

І запит і рядки таблиці тип String. Так буде правильно :
if Edit1.text = IBQuery1.FieldByName ( "Col1"). AsString then ShowMessage ( "Знайшли")
У таблиці одна колонка Соl1
Я так розумію можна також не вказувати явно ім'я поля за яким роблю пошук, а вказати лише індекс Fields [0]? Що дасть можливість перебору і пошуку в циклі по всім полям таблиці. Вірно?


> [70]

Якщо доводиться вдаватися до пошуку по полях таблиці, значить, база криво спроектована. СУБД заточена на пошук по записах.

Мав на увазі по записах, "плаваю" поки в термінах огнептічкі :)

Чи не оре :( показує на поточний запис, а потрібен пошук.

> [70] Novicer # XA0; (17.01.14 10:45)
> І запит і рядки таблиці тип String

У запиті COUNT, а це Integer.

Запит вводжу в Едіт, мав на увазі пошуковий запит, а не sql. По простому: я шукаю, а програма говорить є чи ні :) без відображення результату пошуку в гріді, як-то так. ;)

Каунт вважає кол.строк в таблиці я так розумію. Їх завжди більше нуля у мене :) цікавить конкретно наявність шуканої записи.


> Novicer # XA0; (17.01.14 12:38) [77]
> Каунт вважає кол.строк в таблиці я так розумію. їх завжди
> Більше нуля у мене :) цікавить конкретно наявність шуканої
> Записи.

А ти в WHERE чаго написав?

Хочу додати в ComboBox всі записи з таблиці виключаючи дублювання. Потрібно робити sql-запит або якось можна переглянути всі записи?


> А вони ж для сервера потрібні, а не для клієнта, нє? Якщо чесно,
> # XA0; то з FB великого досвіду немає, ми Інтербейс юзаем.

msg - там повідомлення, з сервера йде тільки код, а форматує його клієнт. Працювати буде, просто буде видавати "cant format message."
firebird.conf потрібен для вказівки rootdir якщо записи в реєстрі немає. Втім, пишу по пам'яті, я історично просто ставлю клієнт інсталятором, плюс мій інсталятор ще порти відкриває в брандмауері віндового. )
> Наскільки добре працює? А то з fbclient.dll 2.5 → Firebird
> 1.5 проблеми виникають, наприклад.

Ніяк не працює. Точніше, клієнт від IB6.0 буде працювати з FB1.0, але нафіг не нать таке. Версія клієнта повинна точно відповідати версії сервера, аж до билда.

У таблиці MyTable дві колонки: ID і COL1. Хочу вибрати всі записи другий колонки (COL1) таблиці # XA0; виключивши дублікати і відсортувавши отримані дані за алфавітом. Пишу для IBQuery такий запит:
select distinct COL1 from MyTable order by COL1
отримую помилку Filed ID not found. Якщо змінити запит на такий:
select distinct * from MyTable order by COL1
то прокатує без помилок, але виводить дублі :(
Як правильно сформулювати запит для отримання потрібного результату?

Знайшов помилку, тепер запит select distinct COL1 from MyTable order by COL1 працює нормально, але якщо відрізняється регістр символів всерівно дублі дає. Яблуко і яблуко різні слова :) Ось як би скласти запит щоб були однакові (незалежно від регістру (?

> [84] Novicer # XA0; (17.01.14 18:39)
> Яблуко і яблуко різні слова :)

upper?

ПС. Швидко книжки прочитав. Заздрю.

Написав так: select distinct COL1 from MyTable where upper (COL1) like ""% "" order by COL1 Не допомогло :(

А якщо select distinct COL1 from MyTable where upper (COL1) like upper ( ""% "") order by COL1 та ж петрушка, все-одно дублі дає :(

> [87] Novicer # XA0; (17.01.14 19:46)

Тепер прибери where і кількість варіанов перебору місць вставки upper скоротиться.

Запит select distinct Upper (COL1) from MyTable order by COL1 возврашает помилку "невідома колонка COL1": /

> [89] Novicer # XA0; (17.01.14 21:06)

Це в якому місці він повертає? Невже прямо в IBExpert?

> [91] Novicer # XA0; (17.01.14 21:32)

Натяк про IBExpert не досяг мети.

У експерта треба тестувати запити так. )

select distinct Upper (COL1)
яке ім'я поля буде? Хоч би в билдер делфійском відкрив для пристойності чи що.

> Запит select distinct Upper (COL1) from MyTable order by COL1 возврашает помилку "невідома колонка COL1": /

тому, що в вибирає select-му наборі такий колонки немає

> Запит select distinct Upper (COL1) from MyTable order by COL1 возврашает помилку "невідома колонка COL1": /

тому, що в вибирає select-му наборі такий колонки немає

Додав поля ID і COL1 в IbQuery1, тепер при виконанні запиту вилітає помилка "невідоме поле ID" :( Ніяк не збагну в чому справа, напевно все-таки неправильний синтаксис запиту: select distinct Upper (COL1) from MyTable order by COL1

це все марно

> [100] Novicer # XA0; (18.01.14 12:42)

1. Ти в IBExpert вже подивився результат?
2. У книжках прочитав про AS?
3. Гаразд, про додавання полів після 1 і 2.

Дійсно в синтаксисі, сам знайшов виправив, всі оре як треба :) Дякую всім за допомогу і дружню підтримку!