FBDataSet (библиотека доступа к данным FireBird/Interbase.)

Модератор: Модераторы

Сообщение Сергей Смирнов » 29.08.2007 15:49:28

Вот ещё какая мысль есть: для генерации первичного ключа при инсерте использовать не только генератор, но и хранимую процедуру. Просто у меня иногда используется ХП, которая генерит коды в отведённом диапазоне (это если надо генерить уникальные идентификаторы в нескольких однотипных базах, а потом сливать их в одну). Или в твоём датасете уже так можно делать?
Аватара пользователя
Сергей Смирнов
энтузиаст
 
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва

Сообщение alexs » 29.08.2007 15:54:49

просто интерфейс ХП может быть очень разным - как его в автогенератор запихнёш?
а если ты руками будеш выфетчивать его до вставки в датасет - то пожалусата - сразу после вставки - присвой полю - первичному ключу это значение - а дальше как обычно (рефреш работает по принципу - что указал в качестве параметров рефреш запроса - то берём из тукущего буфера - выполняем запрос и обновляем буфер)
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение Сергей Смирнов » 29.08.2007 16:22:19

Я сейчас так и делаю, но часто это лишний обработчик и пара строк в нём. А интерфейс там где разный? Если ХП возвращает инт или бигинт, то всё ОК, иначе - исключение. Если у ХП есть параметр, то только прямо текстом его и втыкать, так что особых нюансов не вижу, если их себе на одно место специально не искать. Ну типа как-то так: есть текстовое свойство, куда вписываем что-то типа:

"GET_NEW_ID('MYTABLE')"

Потом пихаем это в селект (типа SELECT ID FROM GET_NEW_ID('MYTABLE')), или как там с GEN_ID сделано, и считываем результат. В данном случае ХП принимает 1 параметр - имя таблицы. Вот как-то так...
Впрочем, я далеко не настаиваю... так, если вдруг образуется время и желание...
Аватара пользователя
Сергей Смирнов
энтузиаст
 
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва

Сообщение alexs » 29.08.2007 16:29:36

ну в приницпе мысль здравая - сделать можно - посмотрим
по крайней мере в список хотелок занесу :D
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение Сергей Смирнов » 29.08.2007 16:34:42

OK :)
Аватара пользователя
Сергей Смирнов
энтузиаст
 
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва

Новая версия FBDataSet - 1.26

Сообщение alexs » 12.09.2007 11:13:07

12.09.2007
ver 1.26
+ Включена поддержка BigInt полей для Lazarus
+ В Lazarus отказался от поодержки полей типа TFBTimeField - используется
стандартный TTimeField (fcl-db работает нормально)
+ В папке lazUIBEditors находится перенесённый из Delphi пакет времени
разработки для настройки свойств компонентов UIB - оригинальные исходники
взяты из uib
- Исправлена регистрация TFBAnsiMemoField - для нормальной работы дизайнера
- Исправлен критический баг при работе в пежиме CashedUpdates

адрес:
http://alexs75.narod.ru/fpc/fbdataset/alexsDataSet_1_26.zip
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение alexs » 20.09.2007 01:21:53

Вопрос тем кто использует компоненту. Нужна ли будет следующая фича:
ввести флаг в опциях poRefresBeforeEdit - перед переводом набора данных в режим редактирования взять из БД актуальное состояние записи.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение Сергей Смирнов » 20.09.2007 17:38:32

Несомненно полезная фича, но назвать лучше poRefreshBeforeEdit :)
Аватара пользователя
Сергей Смирнов
энтузиаст
 
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва

Сообщение Сергей Смирнов » 25.09.2007 15:51:04

Назрел у меня вопрос по Master-Detail... Допустим, я в Detail что-то меняю или запись новую вставляю. Потом забываю сохранить и перехожу на другую запись в Master. Вот тут у меня Detail и клинит, пока вручную изменения не сохранишь. Это можно автоматизировать только обрабатывая, например, BeforeScroll в Master или есть какая-то хитрая опция или свойство в компоненте?
Аватара пользователя
Сергей Смирнов
энтузиаст
 
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва

Сообщение alexs » 25.09.2007 16:23:50

Это злобный глюк
(я сам не пишу ввод напрямую из grid-ов - только через формы - поэтому и не отловил) - подправим
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение alexs » 25.09.2007 16:34:37

Кстати - а что народ хочет в этом случае - есть 4 вариант

1. Жёстко делать Post
2. Жёстко делать Cancel
3. Ничего не делать (как сейчас) :D
4. Ввести опцию на настройку этого поведения

мне больше нравится вариант 2 - но что нужно народу?
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение Сергей Смирнов » 25.09.2007 16:35:05

Похоже, нужна опция, т.е. п.4
Фактически, конечно, наибольший смысл имеет Post, но что делать, если нужна какая-то хитрая обработка?
Аватара пользователя
Сергей Смирнов
энтузиаст
 
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва

Сообщение alexs » 25.09.2007 16:49:17

ок. в следующей версии будет поправлено

сейчас если критично то можеш сам поправить код метода

Код: Выделить всё
procedure TFBCustomDataSet.MasterUpdate(MasterUpdateStatus:TMasterUpdateStatus);


PS.
Как можно назвать этот флажок - а то у меня уже фантазия не работает :D
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение Сергей Смирнов » 25.09.2007 17:01:07

Ну, что-то типа MasterScrollBehavior
Может быть и другие идеи будут...
Аватара пользователя
Сергей Смирнов
энтузиаст
 
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва

Сообщение Сергей Смирнов » 27.09.2007 12:17:29

Похоже, есть ещё один "косячок": Если в Master добавить запись, то в Detail остаются данные с той записи Master, которая была текущей до вставки.
Также я заметил, что если отменить вставку записи (Cancel), то AfterScroll не происходит. Может быть логически это и правильно, но из-за этого, например, не происходит подгрузка картинки, которая "повешена" на данное событие.
Аватара пользователя
Сергей Смирнов
энтузиаст
 
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва

Пред.След.

Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru