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

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

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

Сообщение alexs »

RustemNur писал(а):То, что полям можно присваивать значения, не переводя набор в состояние dsEdit - это баг или фича?

Ну это надо у разрабов TDataSet-а спросить.
Этот код находится там.
RustemNur
новенький
Сообщения: 61
Зарегистрирован: 20.02.2011 10:21:14
Откуда: Уфа

Сообщение RustemNur »

Что-то я очень поздно заметил: а что ж при вставке в Детальные наборы в качестве id вставляется не значение генератора, полученное через настройки AutoUpdateOptions, а значение id Мастера (зачем-то)???
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Там флажок на это дело есть.
В хорошо проектированных БД поля для связки называются одинаково - одну и туже сущьность не надо называть по разному.
А это поведение - для облегчения кодинга - меньше писать кодя для поддержки связей между таблицами.
RustemNur
новенький
Сообщения: 61
Зарегистрирован: 20.02.2011 10:21:14
Откуда: Уфа

Сообщение RustemNur »

Спасибо за ответ, а то я уже подумывал сам генератор в базе дергать в deforePost.
alexs писал(а):Там флажок на это дело есть.

Алекс, пожалуйста, ткни носом во флажок, а то я все глаза проглядел.

alexs писал(а):В хорошо проектированных БД поля для связки называются одинаково - одну и туже сущьность не надо называть по разному.

Так я "одну и ту же сущность" (в данном случае первичный ключ) и называю одинаково - "ID".
Мне вот во многих случаях гораздо удобнее знать, что во всех таблицах у меня ПК - это поле с именем "ID".
Вообще, стандарт SQL вовсе на этом не настаивает, так что .
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

RustemNur писал(а):Так я "одну и ту же сущность" (в данном случае первичный ключ) и называю одинаково - "ID".

Ваша неправда.
Перичный ключ от клиента и первичный ключ от товара - это две большие разницы :-)
у меня:

Код: Выделить всё

TB_CLIENT_ID
SPR_GOODS_ID

Чувствуете разницу? Я всегда знаю посмотрев на поле, вне зависимости от таблицы - что это такое.
Вот именно для этого такое поведение и придумано.
RustemNur писал(а):Алекс, пожалуйста, ткни носом во флажок, а то я все глаза проглядел.

Код: Выделить всё

poAutoParamsToFields

Посмотри код процедуры DoOnNewRecord;
RustemNur
новенький
Сообщения: 61
Зарегистрирован: 20.02.2011 10:21:14
Откуда: Уфа

Сообщение RustemNur »

Три минуты на функцию дерганья генератора для всех Мастеров в их beforePost -, и можно обойтись без теоретических споров. :)
v-t-l
энтузиаст
Сообщения: 744
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Сообщение v-t-l »

RustemNur писал(а):То, что полям можно присваивать значения, не переводя набор в состояние dsEdit - это баг или фича?

Если правда, то, конечно, фича. :D
Оченно может быть полезно при работе с полями, вычисляемыми на стороне сервера. Отправил запись, тут же отдельным запросом перечитал ее и правильно отобразил.
RustemNur
новенький
Сообщения: 61
Зарегистрирован: 20.02.2011 10:21:14
Откуда: Уфа

Сообщение RustemNur »

v-t-l писал(а):Оченно может быть полезно при работе с полями, вычисляемыми на стороне сервера. Отправил запись, тут же отдельным запросом перечитал ее и правильно отобразил.

Эээ... А SQLRefresh (или в других датасетах RefreshSQL) для такого и сделан давным-давно. Или я не понял, о чем речь.
Причем, замечу, что значения полей, присвоенные в режиме датасета dsBrowse, сбрасываются в актуальные при переходе к другой записи - это я поясняю, как эта "фича" у меня на компе работает. Если у тебя такое поведение не воспроизводится, тогда начинаю подозревать, что таки Алекс что-то нахимичил.
vicvala
новенький
Сообщения: 27
Зарегистрирован: 11.06.2011 17:55:25

Сообщение vicvala »

не прав.
RustemNur
новенький
Сообщения: 61
Зарегистрирован: 20.02.2011 10:21:14
Откуда: Уфа

Сообщение RustemNur »

Alexs!
У меня ровно такая же ошибка, как и viewtopic.php?f=26&t=2523&p=36115&hilit=fbdatasetoptions.ini#p36062
Lazarus 0.9.30.2

Как забороть?


Так, решилось созданием нового пользователя с именем без кириллицы.
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

RustemNur писал(а):У меня ровно такая же ошибка,

Пробуй - исправил (по крайней мере - попытался).
xcod
постоялец
Сообщения: 108
Зарегистрирован: 07.08.2009 12:37:23

Сообщение xcod »

Добрый день!
Возникли проблемы с полем подстановок(lookup полями) в FBDataSet.
Есть две таблицы в одну из которых данные берутся из другой посредством лукап поля
в общем при выборе возникает ошибка "Invalid variant type cast"
типы полей в базе одинаковые
мои данные:
Lazarus 0.9.31 34417
FPC 2.5.1
UIB и FBDataSet последние
все качал сегодня из снапшотов
FireBird 2.5.1 26351

Тестовый проект и база прилагаются по ссылке http://ifolder.ru/27834864 т.к. файл почему то не добавляется :)
лукап поле в правой таблице

простите объяснил как смог :)
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Это точно проблема FBDataSet-а?
На других типах наборов данных ошибка не повторяется?
xcod
постоялец
Сообщения: 108
Зарегистрирован: 07.08.2009 12:37:23

Сообщение xcod »

попробовал подключиться к базе из палитры SQLDb
все работает
попробовал на всякий создать такуююже базу в формате DBase с использованием TDBF тоже работает лукап поля
вот и подумалось что проблема в FBDataSet :?
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Хорошо, постараюсь посмотреть.
Ответить