Як встановити 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.
Дійсно в синтаксисі, сам знайшов виправив, всі оре як треба :) Дякую всім за допомогу і дружню підтримку!