Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как при вставке задать полям знач-я по умолч., те что в БД заданы


Страницы:   1 2

TheEd ©   (2006-02-22 02:24:00) 

Господа мастера, собственно subj.
Подробности: тип БД - IB7
поле имеет default-значение.
По идее, после вставки если юзверь ничего не ввёл оно должно быть присвоено, но это не происходит, более того, хотелось бы это значение получить сразу после вставки.

ps:ответ типа: задать полю DefaultExpression, и в OnNewRecordделать SomeField.Value := SomeField.DefaultExpressionне катит, так как это уже програма влазит в значения по умолчанию, а корректнее когда это делает СУБД (мухи отдельно, котлеты - отдельно)...


TheEd   (2006-03-06 19:10:00) [1]

Удалено модератором


Виталий Панасенко   (2006-03-01 12:02:00) [2]

Странно, оказывается в Devrace одни тупицы и извращенцы.. Не знал.. Теперь буду знать. Спасибо..


msguns   (2006-03-01 11:29:00) [3]

>Reindeer Moss Eater ©   (01.03.06 10:55) [19]
>Дата для новой записи может генериться на клиенте и без дефолт значений.
Получается, что default констрейнты используются вместо словаря данных.
Это и зовется извратом.

Согласен.
Если так уж непременно хочется "задефолтить" такие реквизиты, как дата, № и т.д. документа (хотя мне лично непонятно нафига, но кому пиво, а кому дефки), то почему бы это не сделать посредством какого-нибудь ini-файла. Во-первых, каждый юзер может настроить их "под себя". Во-вторых, для их правки "вручную" не надо никаких Ибэкспертов или Ибконсолей. Да и вообще сервера. В-третьих, это просто грамотнее с т.зр. проекта в целом ибо забивать бизнес-логику такой галиматьей - искать приключения на собственную задницу


Виталий Панасенко   (2006-03-01 11:10:00) [4]

Странно, Access так же делает.. Ну, тут ясно, в Мелком Софте сплошные извращенцы..:-)))


Reindeer Moss Eater   (2006-03-01 10:55:00) [5]

>когда сразу вижу дату документа, ДО записи, а не после.
Дата для новой записи может генериться на клиенте и без дефолт значений.
Получается, что default констрейнты используются вместо словаря данных.
Это и зовется извратом.


Виталий Панасенко   (2006-03-01 10:52:00) [6]

Нужно быть либеральней в отношении вкусов других.:-). От того, что мне нравится пиво, а кому-то нет, я не считаю его извращенцем.:-)) Зато я от вина не "фтыкаю"...А по поводу темы: мне приятней(да и пользователю), когда сразу вижу дату документа, ДО записи, а не после. При этом можно оперативней среагировать, допустим, если ты проводишь вчерашние документы сегодня(ну, получилось так !)


Reindeer Moss Eater   (2006-03-01 10:45:00) [7]

Оттого, что извращения кому-то нравятся, они не перестают быть извращениями.
Default значения для полей придуманы как раз для того, что бы поля эти не перечислять в инсерте. Тогда-то они и получают свои default значения.


Виталий Панасенко   (2006-03-01 10:33:00) [8]


> Reindeer Moss Eater ©   (01.03.06 09:44) [15]
> Да уж...
> Чудесатый полет мысли.
> Сначала делают поле с default значением, затем с клиента
> пытаются узнать это значение и после вставляют с клиента
> это значение.

Кому как. Мне нравится."На вкус и цвет.."


Reindeer Moss Eater   (2006-03-01 09:44:00) [9]

Да уж...
Чудесатый полет мысли.
Сначала делают поле с default значением, затем с клиента пытаются узнать это значение и после вставляют с клиента это значение.


Виталий Панасенко   (2006-03-01 09:31:00) [10]


> зы: если найдётся нежадный чел + если эта FIBPlus стоит
> того - могу на пиво WM подкинуть, или напр. на мобилу деньгу
> перевести.

На самом деле библиотека стОит нааамного дороже. Но нам, бедным, цену опустили до "нимагу"... Даже пиратские сайты, когда узнают, сколько это стоит для бывшего Союза, убирают дистрибутивы... 15 у.е. за эту великолепную(честно!) библиотеку не жалко...


Deniz   (2006-03-01 07:18:00) [11]

http://www.devrace.com/ru/shop/fibplus.php
не на много дороже чем ... могу на пиво WM подкинуть, или напр. на мобилу деньгу перевести.


TheEd   (2006-03-01 00:40:00) [12]

Удалено модератором
Примечание: Варез за углом


Виталий Панасенко   (2006-02-28 09:15:00) [13]


> Johnmen ©   (27.02.06 22:52) [10]
> Берёшь библиотеку FIBPlus, компонент TpFIBDataSet, выставляешь
> опцию pfImportDefaultValues из PrepareOptions вTrue.
> И всё!

Я об этом сказал еще в посте 2..:-)) Только человек не хочет слушать. Хочет пределать IBX, наверное


Johnmen   (2006-02-27 22:52:00) [14]

Берёшь библиотеку FIBPlus, компонент TpFIBDataSet, выставляешь опцию pfImportDefaultValues из PrepareOptions вTrue.
И всё!


TheEd   (2006-02-27 21:39:00) [15]

И всё же...
Ответа конкретного не увидел:
TDBStringGrid (SG) "натравлен" на TDataSourse, который с TIBQuery (ну или TIBTable) завязан. Как при добавлении в SG записи на момент редактирования, т.е. до Postустановить Default-значения из базы, т.е. не дублируя их в полях SG?

Нельзя, так нельзя, ну или если гемора много, тогда буду делать задать полю DefaultExpression, и в OnNewRecord делать SomeField.Value := SomeField.DefaultExpression :(


evvcom   (2006-02-27 09:21:00) [16]


> да, но визуальный компонент отправляет этот запрос видимо
> в момент когда проходит Post, т.е. до этого момента визуальный
> компонент сам берёт на себя обязанности по определению всех
> введенных пользователем записей

Визуальный компонент работает только с невизуальным абстрактным TDataSet его методами First, Last, Next, Prev, MoveBy, Append, Insert, Edit, Delete, Post или частью из них. Отправка же запросов на сервер лежит на совести конкретных компонентов-потомков от TDataSet, а также совести программиста, настраивающего эти компоненты.


Deniz   (2006-02-27 06:34:00) [17]

Визуальный компонент ничего не отправляет.
IBQuery.Refresh работает нормально, только надо его правильно настроить.
1. В запросе на Refresh должно быть нечто вроде:
select ... from ... where PrimaryKey = :OLD_PrimaryKey
2. Настроить PrimaryKey на генератор.
3. Наслаждаться.
Более подробно можно прочитать почти в любой книжке по Delphi+DB.
Здесь все это рассказывать слишком долго.


TheEd   (2006-02-26 18:29:00) [18]


> Как бы ты не извращался с визуальными компонентами, все
> равно на сервер придет запрос типа insert into table(...
> ) values(...), а вот кто и как его отправит, это уже другой
> вопрос.

да, но визуальный компонент отправляет этот запрос видимо в момент когда проходит Post, т.е. до этого момента визуальный компонент сам берёт на себя обязанности по определению всех введенных пользователем записей, а когда он смещается на строку выше-ниже или иным способом делает post, тогда посылает серверу Insert.


> Close + Open чего? Dataset'а или DataBase'a?

к примеру TIBQuery (т.е. Dataset'а)


Deniz   (2006-02-26 07:05:00) [19]

>TheEd   (25.02.06 22:27) [4]
>я имел в виду, когда не SQL-оператором добавляем, а в DBGrid вставляем новую запись.


Как бы ты не извращался с визуальными компонентами, все равно на сервер придет запрос типа insert into table(...) values(...), а вот кто и как его отправит, это уже другой вопрос.

>и ещё: в * - рефрешь делать dataset'у наверно имелось в виду
Конечно.

>если делаешь рефрешь, то не работает почему-то, а Close+Open - нормально
Close + Open чего? Dataset'а или DataBase'a?
Если DataBase'a - то уровень изоляции транзакции http://www.ibase.ru/develop.htm#trans
Если Dataset'а - то тебе надо поподробнее рассказать про твою проблему.


TheEd   (2006-02-25 22:27:00) [20]


> Deniz ©   (22.02.06 06:33) [1]
>
> Если сделать Refresh только что добавленной записи *, то поля
> имеющие default значения должны показать их(default значения).
>  Но здесь есть грабли.
> К примеру:
> Create table t (i integer, s varchar(10) default '111')
> так вот если послать запрос
> insert into TEST(i) values(1)
> то s примет значение '111'
> а если послать запрос
> insert into TEST(i, s) values(2, null)
> то в s будет null, и default не отработает.
> Default подставляется только если поле не указано в запросе.
>


я имел в виду, когда не SQL-оператором добавляем, а в DBGrid вставляем новую запись.

и ещё: в *- рефрешь делать dataset'у наверно имелось в виду, и есть ещё момент: если делаешь рефрешь, то не работает почему-то, а Close+Open - нормально. В чём глюк?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо