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

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

Автор: delover
Дата сообщения: 20.07.2012 06:37

Цитата:
Правка свих текстов - удел средней школы,

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


Цитата:
Можно расшифровать аббревиатуры?

Перефразирую.
Хотя, я и побаиваюсь изменений с post_event. Но я же пишу об необходимости изменений? Меня извиняет, что:
1) Срок давности.
2) Вопрос возник вполне естественно - как помните мою шутку не поняли.
3) Ну и отчётливо видно, что задача может иметь вполне безопасные и простые решения.

Аббревиатуры - окошко CPU использую (the CPU Registers pane highlights in red any registers that have changed value since the program was last paused.), FPU и SMID видел, но даже не знаю зачем они.
Автор: OXDBA
Дата сообщения: 20.07.2012 09:03
miwa
delover
Хватит флудить!!!
Автор: delover
Дата сообщения: 20.07.2012 19:32
Работаем над этим
Автор: delover
Дата сообщения: 20.07.2012 23:53
miwa
Я предложил мистеру познакомится с 12-тью предыдущими старичками +2 на удачу. Он согласился. Но у него уйдёт время, по делу он не в теме.
Автор: delover
Дата сообщения: 21.07.2012 14:54
Не хотел высказываться по теме параметризованных исключении (фб 3), но в ветке появился серьёзный ник, которого может интересовать. Да, рад за Вас, что сделали то, что необходимо было сделать, если хочется шагать в ногу со временем. Без этой возможности страдает самый серьёзный клиент – дотнет провайдер. Молодцы что успели, но это только необходимая возможность.
Автор: delover
Дата сообщения: 24.07.2012 22:52
Новая тема если, тут кто-то бывает. - Составной примари кей. Сам по себе имеет право на существование. Для его существования в базе создаётся индекс, используемый для соблюдения уникальности (создаётся - слово не известное в браузере хром). После этого девелопер пишет только одну процедуру испльзующую этот индекс. Остальные 100 процедур не используют индекс. А когда нужно реплицировать - примари кей приходится удалить. Смешение понятий в мозгу учёных оказалость ловушкой, начитавшис про архитектуру баз данных - разработчик думает что он прав когда для локейтов делает состваное поле, а то что программа его никогда не научится таким локейтам его никто не предупреждал. Лес гуще - дровосеки лучше.
Автор: exteris
Дата сообщения: 25.07.2012 05:58

Цитата:
Новая тема если, тут кто-то бывает

И скоро совсем не будет. Я лично слабо понял мысли, которые Вы хотели донести последними постами. Что-то на границе флуда и информационного шума, извиняюсь.
Автор: delover
Дата сообщения: 25.07.2012 06:48
exteris
Я просил сегодня большего чем я специалиста, привести мне пример когда нужен составной PRIMARY KEY из трёх полей? Он ответил:
> Например номер карты, серия, магнитный код.
Я тогда снова спросил - а что это даёт? Он ответил:
> Уникальность связки.
Тогда я пояснил - есть в IBExpert вкладка - ограничения - уникальные. Там это всё можно легко сделать. Вопрос для чего нужен именно составной PRIMARY KEY из трёх полей? И при этом необходимо исключить стандартный вместе с генератором? Он ответил:
> Не знаю.

Я тоже не знаю. Если кто знает отпишите пожалуйста. Просто удалось выбить время на профилактические работы (планирую шаблонные изменения).
Автор: eddoc
Дата сообщения: 25.07.2012 08:39
Комрады, подскажите.

Можно ли с клиента посредством компонентов доступа (FIB+ 7.1, FB 2.1.4 18393, диалект 3, SS(многопольз.)) дропнуть индекс в таблице, предварительно проверив его существование?
Автор: OXDBA
Дата сообщения: 25.07.2012 08:44

Цитата:
Можно ли с клиента посредством компонентов доступа (FIB+ 6.9.9) дропнуть индекс в таблице

Можно

Цитата:
предварительно проверив его существование?

см. в RDB$INDICES
Автор: X11
Дата сообщения: 25.07.2012 09:09
да, можно, там есть компонента для выполнения скриптов, или можно обычную кверю взять
Автор: eddoc
Дата сообщения: 25.07.2012 10:36
X11
OXDBA

Ога, спасибо за наводку. В дельфях получилось примерно так


Код: with TmpDSet_Dest do
begin
if Active then Close;

SelectSQL.Text:= 'SELECT RDB$INDEX_NAME what_index ' +
'FROM RDB$INDICES ' +
'WHERE RDB$INDEX_INACTIVE = 0 AND RDB$INDEX_NAME = ''UNQ_DATE_TBL_VISITMAIN''';
Prepare;
Open;

if not IsEmpty then
begin
TmpQry.SQL.Text:= 'DROP INDEX UNQ_DATE_TBL_VISITMAIN';
TmpQry.ExecQuery;
end;
end;
Автор: X11
Дата сообщения: 25.07.2012 10:49
если обычная кверя, то нужно отключать ParamsCheck
Автор: eddoc
Дата сообщения: 25.07.2012 10:59
X11
создаю в рантайме

Код: with TmpQry do
begin
Database:= FIB_DB_Dest;
GoToFirstRecordOnExecute:= False;
Options:= [qoStartTransaction,qoAutoCommit];
ParamCheck:= False;
Transaction:= TransWriteQryDest;
end;
Автор: OXDBA
Дата сообщения: 25.07.2012 11:23
eddoc
Так не проще?

Код:
execute block(AIndexName varchar(31) =:AIndexName)
as
declare variable lIndexName varchar(31);
begin
select i.rdb$index_name
from rdb$indices i
where i.rdb$index_name = upper(:AIndexName)
into :lIndexName;
if (lIndexName is not null) then
execute statement 'drop index '||lIndexName;
end
Автор: exteris
Дата сообщения: 25.07.2012 13:42

Цитата:
Так не проще?

Те же яйца, вид со стороны базы
Мож человеку на клиенте надо.
Автор: Maximus777
Дата сообщения: 25.07.2012 15:23
Пипл! Подскажите, почему не работает такая конструкция:

Код: SELECT * FROM CLIENT_CATALOG WHERE upper(CLIENT_CATALOG.ITEM_NAME) containing 'СТРОЙ' ORDER BY CLIENT_CATALOG.ITEM_DATA
Автор: OXDBA
Дата сообщения: 25.07.2012 16:08
Maximus777
предикат containing независим от регистра.
Автор: Maximus777
Дата сообщения: 25.07.2012 17:30
OXDBA
Цитата:
предикат containing независим от регистра.

Тогда почему 'Строй' отрабатывает, а 'СТРОЙ' не выдаёт ничего?
Автор: eddoc
Дата сообщения: 25.07.2012 18:20
exteris

Цитата:
Мож человеку на клиенте надо.

Абсолютно верно. Приходится смотреть на мир глазами юзверя.

OXDBA
Спасибо. В копилку знаний

Добавлено:
Maximus777

Цитата:
Тогда почему 'Строй' отрабатывает, а 'СТРОЙ' не выдаёт ничего?

Чаще всего, если буквы в искомом слове набраны из разной раскладки клавы. Проверьте.
Автор: delover
Дата сообщения: 25.07.2012 19:46

Цитата:
Просто удалось выбить время на профилактические работы

На сервере кто-то менял дату, только дату. После этого поехали логи. Есть стандартные способы приводить логи в порядок? Мне приходит на ум только вычислить изменение и сделать апдейт, но как организовать вычисление такого момента в логах? Логи не полные.

Планирую востановить инфу в логах - в бэкапах она есть.
Автор: Maximus777
Дата сообщения: 25.07.2012 20:26
eddoc
Цитата:
Чаще всего, если буквы в искомом слове набраны из разной раскладки клавы. Проверьте.

Смотрите сами. Без переключения раскладки - скринкаст. Хотя это уже Линукс, но FB же одинаково должен работать?
Автор: AlexCoRu
Дата сообщения: 25.07.2012 21:29
Maximus777, что-то с кодовыми таблицами. Ему (ФБ), да и мне тоже, 'Й' не нравится. А попробуй-ка поиск по другим буквосочетаниям. База-то большая должно быть.
Автор: Maximus777
Дата сообщения: 25.07.2012 21:57
AlexCoRu
Неа, если убираю вообще из запроса "Й", т.е. оставляю 'СТРО', не выводит. А 'Стро' выводит. Всё-таки есть там регистрозависимость. Но вот как её обойти?

Опс! Вроде нашёл причину. У этого поля не задан Charset. Но в свойствах данный параметр недоступен. Как это можно исправить?
Автор: SevereK20
Дата сообщения: 25.07.2012 22:06
Maximus777
uppercase
Автор: Maximus777
Дата сообщения: 26.07.2012 06:52
SevereK20
Цитата:
uppercase

Не работает upper, я же выше об этом написал. Проблема решилась по другому. Оказывается, при создании поля обязательно надо указать кодировку, тогда регистр действительно роли не играет в выборках ... containing ... Вобщем мне повезло, что база молодая, я просто пересоздал её и всё завелось. Было вот так:

Код: CREATE TABLE CLIENT_CATALOG
(
ITEM_ID Varchar(10) NOT NULL,
ITEM_NAME Varchar(200) NOT NULL,
ITEM_CONTACTS Varchar(60),
ITEM_DATA Date NOT NULL,
ITEM_CONTACT_NAME Char(200) CHARACTER SET WIN1251,
ITEM_CONTACT_PROFESSION Char(100),
ITEM_KOMPLEKT Char(10) CHARACTER SET WIN1251,
ITEM_DATA_NEXT Date,
ITEM_KOMMENT Char(200) CHARACTER SET WIN1251,
ITEM_USER Char(20) CHARACTER SET WIN1251,
PRIMARY KEY (ITEM_ID)
);
Автор: delover
Дата сообщения: 26.07.2012 07:25

Цитата:
Я просил сегодня большего чем я специалиста


Цитата:
На сервере кто-то менял дату

Ну и он говорит что бэкап не меняет порядок записей. Следовательно апдейт мне не нужен - можно просто показывать дату только ту которая была на начало дня. Сори, задача решена.
Автор: AlexCoRu
Дата сообщения: 26.07.2012 08:00
Maximus777

Цитата:
Оказывается, при создании поля обязательно надо указать кодировку

Необязательно, если при создании базы указать

Код: CREATE DATABASE 'base.fdb'
DEFAULT CHARACTER SET WIN1251 COLLATION WIN1251;
Автор: OXDBA
Дата сообщения: 26.07.2012 08:32
Maximus777
ITEM_ID Varchar(10) NOT NULL
Надеюсь использование varchar для хранения id - суровая небходимость?
ITEM_CONTACT_NAME Char(200)
Интересно почему именно char, а не varchar?
Автор: eddoc
Дата сообщения: 26.07.2012 09:29
OXDBA
имхо, отсутствие "базовых знаний" на этапе проектирования базы знаний (каламбур однако)

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465

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


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