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

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

Автор: Kursist
Дата сообщения: 24.06.2009 16:03

Цитата:
Потом в папке IBExpert'а Languages заменяешь Russian.lng на это

Я скачал IBExpert, разархивировал и всё.

В папке только:
IBExpert.exe
zCube.dll
папка "Blocks" с примерами и файлами, с расширением .ibeblock
Папки Languages нету.
Автор: volser
Дата сообщения: 24.06.2009 16:06
Kursist

Русскую версию можешь глянуть здесь.

Добавлено:

Цитата:
Обозвал таблицу CLIENTS теперь ее удалить даже не могу! Выдает сообщение, что системную таблицу удалять нельзя! (А почему при создании таблицы не проверялось ее название на идентичность с другими таблицами!?)
И что делать?


Какое сообщение об ошибке?
Автор: data man
Дата сообщения: 24.06.2009 16:09
Kursist

Инсталлируешь сначала это.
Только не обязательно ставить все.
Лучше выбрать только IBExpert.
Там некоторые продукты триальные.
Автор: Kursist
Дата сообщения: 24.06.2009 16:21
volser
Так я оттуда и скачал: http://ibexpert.com/rus/

jonikDk
Извини, я правда не люблю людей дергать по пустякам. Видимо, я запутался в линках. Я люблю учиться, но объем и особенно разнообразие информации зашкаливает.
(поэтому начал себе писать мануал - выписываю самое важное).

1. этап. Скачал и проинсталлировал FireBird и забыл о нем.
2. этап. Скачал и проинсталлировал IBExpert. В нем создаю базу данных и таблицы...
Разбираюсь в нем опытным путем и задаю вопросы на форуме

3 этап. Программирование клиента в Дельфи (Delphi2007)
Осваиваю компоненты Interbase:
Почерпнул информацию из
http://ibase.ru/devinfo/ibx.htm
Читаю книгу Архангельского,
а также задаю вопросы на форуме.

FIBPlus пока не использую, но почитал:
http://www.devrace.com/ru/fibplus/articles/

Вот все мои действия.
Автор: data man
Дата сообщения: 24.06.2009 16:26
Kursist
4 этап - заглянуть в папку Delphi Demos\Db
Автор: Kursist
Дата сообщения: 24.06.2009 16:27
data man
В папке с IBExpert Russian language, туда скинул папку с файлом rus_lng. После перезагрузки интерфейс стал русским.
Сразу легче стало.
Автор: X11
Дата сообщения: 25.06.2009 09:59

Цитата:
Можете подсказать, как в IBExpert в уже созданной таблице удалить поле?



Добавлено:

Цитата:
Опять натолкнулся на проблему:
Пытаюсь связать 2 таблицы (ORDERS и CLIENTS),

Вот такой скрипт получается:

ты данные все удали из таблиц

Добавлено:

Цитата:
В папке с IBExpert Russian language, туда скинул папку с файлом rus_lng. После перезагрузки интерфейс стал русским.
Сразу легче стало.

Да зайди ты в настройки и на первой странице выбери русский язык!
Автор: Kursist
Дата сообщения: 25.06.2009 23:05
data man
Спасибо, про уникальные и инкрементные ключи я знал, в каждой таблице у меня есть поле-ключ с генератором.

X11
русский появился, до этого в настройках его не было (я туда лазил до этого).

Про удаление поля (просто не догадался, что "drop" = "delete", в русском варианте по-русски написано "удалить". Сразу понятно!

А в остальном - мне надо изучать самые азы. Пока в самых элементарных вещах путаюсь.
Автор: data man
Дата сообщения: 26.06.2009 08:50
Ну а если знал, зачем связывать таблицы по имени полей ?

Цитата:
Вот такой скрипт получается:

alter table ORDERS
add constraint FK_ORDERS_1
foreign key (CLIENTS_NAME)
references CLIENTS(NAME)


А если будет два "Ивановых", или три ?
Автор: XDC
Дата сообщения: 26.06.2009 12:39
Доброго времени суток Всем!

Честное слово, уже не знаю что делать, поэтому прошу помощи.
Позвольте объяснить:
Пишется приложение, работающее с СУБД FireBird 2.0.1-SuperServer.

Цель: нужно в программе работать одновременно в 2 базами, используя FIBPlus(v6.8.424).

Чтобы проще описать проблему - такой пример(эксперимент):
1.кидаем на форму по 2 компоненты TIBDatabase, TIBTransaction и TIBDataSet;
2.прописываем каждому TIBDatabase свой альяс/параметры и свой TIBTransaction;
3.указываем каждому DataSet свой DataBase, соединяемся с базами;
4.в SelectSQL у каждого DataSet пишем простой запрос на выборку;
5.устанавливаем Active=true у каждого датасета;
6.все работает.

Пробуем аналогичное сотворить с помощью FIBPlus:
1. в первом(любом) из датасетов прописываем запрос ->active - все нормально.
2. пробуем второй датасет - при попытке открыть редактор запросов выскакивает сообщение Transaction is active.
3. пытаемся активировать первый датасет - и там уже Transaction is Active.

Вопрос: в чем причина?

P/s.
Читал на devrace.com статьи про транзакции, там есть про коннект к двум базам.
Но...
Google и yandex ничего путнего не выдали.
Автор: volser
Дата сообщения: 26.06.2009 12:48
Как настроены компоненты для FIBPlus? Связь база-транзакция установлен верно?
Автор: data man
Дата сообщения: 26.06.2009 12:48
XDC
А у FIB'овских Database тоже свои TFIBTransaction ?
Автор: volser
Дата сообщения: 26.06.2009 12:50
Последняя версия 6.9.6. Может стоит обновить компоненты?
Автор: X11
Дата сообщения: 26.06.2009 13:09

Цитата:
Пробуем аналогичное сотворить с помощью FIBPlus:

Ты уверен, что у каждой базы свой отдельный несвязанный набор транзакций?

Добавлено:

Цитата:
Последняя версия 6.9.6. Может стоит обновить компоненты?

Интересно, до какой версии?
Автор: volser
Дата сообщения: 26.06.2009 13:12
X11

Он использует
Цитата:
FIBPlus(v6.8.424)
, я предложил обновить до
Цитата:
6.9.6


Или в чем вопрос?
Автор: and23
Дата сообщения: 26.06.2009 14:25
2XDC: Обновитесь хотя бы до 6.8.5:
Цитата:
Что нового в версии 6.8.5?
<skip>
Исправленные ошибки:
1. Исправлена ошибка, возникавшая при работе с одной транзакцией на
несколько компонентов TpFIBDatabase. Иногда она также проявлялась при
удалении компонента TpFIBDatabase.
2. Исправлена ошибка, возникавшая при доступе к нескольким базам данных из
одной программы.
Автор: XDC
Дата сообщения: 26.06.2009 14:51
Ок. Всем спасибо.
Будем обновляться.
Автор: Kursist
Дата сообщения: 28.06.2009 12:34
Попытался создать демонстративные базы данных, что идут с инсталляцией IBExpert (в папке IBExpertDemoDB). Запускал SQL-скрипт для исполнения. Каждый скрипт обрывался из-за ошибок (вот лог из выполнения db1.sql) (Список длинный, я вырезал только заголовки):


=== Line: 11493 ===

********* Error:
This operation is not defined for system tables.
unsuccessful metadata update.
DEFINE TRIGGER failed.
Malformed string.

=== Line: 11598 ====
********* Error:
Invalid token.
invalid request BLR at offset 419.
function GETRANDOM is not defined.
module name or entrypoint could not be found.
Error while parsing procedure CREATE_CUSTOMER's BLR.

=== Line: 11702 ====
********* Error:
Invalid token.
invalid request BLR at offset 254.
function GETRANDOM is not defined.
module name or entrypoint could not be found.
Error while parsing procedure CREATE_MORE_ORDERS's BLR.

=== Line: 11777 ====
********* Error:
Invalid token.
invalid request BLR at offset 310.
function GETRANDOM is not defined.
module name or entrypoint could not be found.
Error while parsing procedure CREATE_ORDERS's BLR.

=== Line: 11854 ====
********* Error:
Invalid token.
invalid request BLR at offset 370.
function GETRANDOM is not defined.
module name or entrypoint could not be found.
Error while parsing procedure CREATE_PRODUCTS's BLR.

То есть, демки не юзабельные?
Автор: data man
Дата сообщения: 29.06.2009 13:41
Kursist
Там на 10-ой строке ошибка - 'masterke' вместо 'masterkey'.
Автор: Kursist
Дата сообщения: 30.06.2009 18:13
data man
Я читал, что значение имеют лишь 8 символов, поэтому masterke=masterkey=masterkek...


----------------------------------------
Вот ссылка на файл - в нем база данных и клиент с исходниками.
http://files.wyw.ru/3744134

CodeGear Delphi2007, FireBird 2.5 Beta, компоненты InterBase

Может быть можете прокоментировать, почему созданные в IBDataSet 2 lookup поля не отображаются (или частично отображаются) и как с этим бороться?
Автор: volser
Дата сообщения: 30.06.2009 20:51
Kursist

Возможно ошибка в длине поля.
Автор: Kursist
Дата сообщения: 30.06.2009 21:32
volser
Я об этом думал.
В IBExpert - поле в таблице имеет тип char[20], в Дельфи lookup-полю выставлял типы string[20], ibstring[20], widestring - без разницы.
В базе, в таблице, в полях стоит кодировка (NONE).

Поискал в интернете - обнаружил, что народ уже сталкивался с такой проблемой, но никто на вопрос - что это и как с этим бороться не отвечал.

В выложенном примере с исходниками сразу видна эта проблема.

Очень нужны lookup-поля.
Автор: volser
Дата сообщения: 30.06.2009 21:38
Kursist

Я уже писал что Delphi2007 практически не умеет работать с unicode. Поскольку это новый проект лучше сразу перейти на Delphi2009.
Автор: Kursist
Дата сообщения: 30.06.2009 21:45
Автор: volser
Дата сообщения: 30.06.2009 21:48
Kursist

И что на этом скриншоте не так? Можно попробовать увеличить длину поля. Компонента не правильно определяет длину поля, потому что для unicode символ занимает больше 1 байта.
Автор: Kursist
Дата сообщения: 30.06.2009 21:50
volser
То есть, это из-за unicode? То есть, кодировка NONE фактически означает, что база у меня юникодовская?

Добавлено:
volser
Как что не так?! Я же подписал и стрелки указал - где lookup-поля там пусто (а я хотел, чтобы каждая строка была заполнена). Правда, в некоторых запись иногда проявляется, а потом исчезает!
Автор: volser
Дата сообщения: 30.06.2009 21:54
Kursist
Нет, нужно смотреть с какой кодировкой база создавалась. Если создавалась с NONE, то кодировка не указана.
Автор: Kursist
Дата сообщения: 30.06.2009 21:55
увеличение размера поля не помогло. Грустно.

Кстати, читал, что в D2009 проблема в работе с базами данных InterBase...
Автор: volser
Дата сообщения: 30.06.2009 21:56
У меня не установлен сейчас FireBird 2.5. Так что точно ничего не скажу.
Автор: RedPromo
Дата сообщения: 02.07.2009 01:06
Kursist
Почитай тут очень наглядно про кодировку расписано, если что я думаю тебе не так сложно пересоздать базу скриптом с необходимой кодировкой, и наверно стоит обратить внимание на указанную кодировку при соединении в параметрах IBX.

А здесь про поддержку Unicode Delphi 2009
http://www.ibase.ru/unicode_faq.html

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465

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


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