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

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

Как редактировать поля таблицы в IB...? [D6, IB6.x]


Страницы:   1 2

iusupp ©   (2003-04-14 23:20:00) 

Как редактировать поля таблицы IB при запущенной проге в DBGrid...?
Типа как в Парадокс Edit:= True...?


iusupp   (2003-04-19 14:37:00) [1]

Всем спасибо...


Anatoly Podgoretsky   (2003-04-19 09:34:00) [2]

Zacho © (18.04.03 11:04)
Тенцер недавно поставил точку в СК, а ты помнишь он был одним из активных участников той дисскуссии, в данный момент он сказал, как только мы вносим хоть какой либо смысл в суррогатный ключ, так он сразу становится естественный. Хотя ранее был немного другого мнения.


Johnmen   (2003-04-19 01:25:00) [3]

Все очень просто. Статически прописываешь SelectSQL, InsertSQL и т.д., указывая параметры. Имена параметров должны совпадать с именами соотв. полей. При этом, при вызове метода Post (явном или нет) будет выполнен соответствующий запрос (добавление, обновление), где значения параметров будут заполнены автоматически из текущих значений полей НД. Учитывай, если надо, особенности обновления ключевых полей, как сказал Zacho ©.
Если параметр в SelectSQL, то его значение указывай явно перед открытием НД, либо оно будет определено автоматически при наличии ведущего (мастерного) НД.
Остальные нюансы прочувствуешь потом...:)


iusupp   (2003-04-18 23:57:00) [4]

Круто оперировать Вам известными словами(понятиями)...
Так никто не объяснил (для начинающего) как редакторовать поля таблицы в DBGrid...
БД созданной в IBExspert...
>Zacho © И IBExpert - это не база, а все лишь инструмент для работы с IB.
Понятно что для создания БД...
А не работает именно редактирование...
> Жук
Не очень понятно, зачем динамически создавать SQL for Insert and Modifi
А как же их update по другому...?


Johnmen   (2003-04-18 11:09:00) [5]

>Zacho © (18.04.03 11:04)
>Надеюсь, история не пойдет по кругу

Не пойдет...:)
Ты меня понял, я тебя понял...Кто не понял - мы не виноваты. Ж;-)



Zacho   (2003-04-18 11:04:00) [6]


> Johnmen © (18.04.03 10:45)

Не, это полуреальный ПК :-) Полностью реальным он был бы, если бы первое поле было не искуственно сгенеренное (и не несущее никакой осмысленной информации) ID_OS, а, например, инвентарный номер объекта. :-))
Впрочем, это зависит от интерпретации слова "реальный" :)
Кажется мне, что запахло старым знаменитым фидошным флеймом "СК против ЕК" :-) Надеюсь, история не пойдет по кругу :-))))


Johnmen   (2003-04-18 10:45:00) [7]

>Zacho © (18.04.03 10:28)
>Я еще не проснулся :),

А незачем допоздна зависать в инете...:)))

То, что ты написал, я понял. По сутиу тебя не PK, а именно UNIQUE INDEX ! Изменяемый. В отсутствии реальногоPK. Тогда понятна необходимость в OLD_.
Что ж, такой подход, я думаю, может быть оправдан...:)

>Anatoly Podgoretsky © (18.04.03 10:32)
>Но никакого запрета на это в теории и в реализации нет.

Ну с этим-то я и не спорил...:))



Anatoly Podgoretsky   (2003-04-18 10:32:00) [8]

Johnmen © (18.04.03 09:46)
Можно, само понятие первичный ключ ни чего не говорит о запрете редактирования, только об одном этот улюч должен одназначно идентифицировать запись, другое дело нужно или и можно ли по самой задаче. Но никакого запрета на это в теории и в реализации нет.


Zacho   (2003-04-18 10:28:00) [9]


> Johnmen © (18.04.03 09:46)

Ну вот пример. Довольно простая системка по амортизации основных фондов. Есть таблица OS в которой содержатся постоянные атрибуты основных средств (название, инв. номер и т.п.) И есть таблица движения ОС, т.е. история атрибутов, могущих меняться (балансовая стоимость и т.п.), причем для одного ОС может быть только одна операция движения в месяц. В этой таблице есть поле ID_OS - foreing key на искуственный ПК в таблице OS и поле ACC_DATE - дата операции. (в триггере before insert, update день в этой дате принудительно устанавливается в 1). Естественно, что эти два поля и составляют ПК таблицы. И естественно, что дата может редактироваться. Можно конечно сделать искуственный ПК, а на ID_OS и ACC_DATE создать UNIQUE INDEX, но зачем ? Это было бы еще оправдано, если бы были таблицы ссылающиеся на эту, но их нет, и не предвидится. Ну и зачем там еще одно искуственно генеренное уникальное поле ?
P.S. Я еще не проснулся :), объяснение какое-то сумбурное получилось, но надеюсь понятно. Счас кофе выпью, и проснусь окончательно :-)


Жук   (2003-04-18 09:48:00) [10]

>iusupp © (17.04.03 01:01)
Не очень понятно, зачем динамически создавать SQL for Insert and Modifi.


Johnmen   (2003-04-18 09:46:00) [11]

>Zacho © (18.04.03 09:41)
>От задачи зависит

Пример, пожалуйста.

>но ПК (точнее одно поле ПК) может (и даже должно) редактироваться

Не должно ! А впрочем давай аргументы...


Zacho   (2003-04-18 09:41:00) [12]


> Johnmen © (18.04.03 09:33)

От задачи зависит. У меня - все в порядке :-), но ПК (точнее одно поле ПК) может (и даже должно) редактироваться. А еще есть люди, использующие естественные ПК :-)


Johnmen   (2003-04-18 09:33:00) [13]

>Zacho © (18.04.03 00:55)

Если это так, то я этого не знал, т.к. никогда не приходило в голову редактировать PK ! (Что само по себе (возможность ред-ия PK) наводит на мысли, что не все в порядке...)
:^)))))))


Zacho   (2003-04-18 00:55:00) [14]


> Johnmen © (18.04.03 00:16)
> Конечно не будет ! Что такое OLD_DATEIS ?????

Вот как раз это для TIBDataSet вполне нормально :) Вот огрызок из моего текущего проекта:
SelectSql: SELECT bla-bla, ACC_DATE,..
ModifySql: UPDATE bla-bla ... WHERE (ID_OS = ?ID_OS) AND (ID_OPERATION = ?ID_OPERATION) AND (ACC_DATE = ? OLD_ACC_DATE)
Префикс OLD_ поддерживается еще с FIBC. Да и как иначе, если первичный ключ может редактироваться ?
В посте iusupp © (17.04.03 01:01) у меня вызывает подозрение InsertSql. Но, за недостатком информации, подозрение не есть уверенность, можно и ошибиться :-)


Johnmen   (2003-04-18 00:16:00) [15]

Конечно не будет ! Что такое OLD_DATEIS ????? Откуда взялось ?
Забудь про идеологию применения объекта типа TUpdateSQL !
А еще лучше и надежнее - читай хелп и иди на ibase.ru


Zacho   (2003-04-18 00:05:00) [16]

Как именно не работает ? Выдает ошибку ? Какую ? И что в твоей таблице первичный ключ, и как он формируется ? В общем напиши все подробнее, если хочешь получить полезный тебе ответ.
И IBExpert - это не база, а все лишь инструмент для работы с IB. К работе с БД в Дельфи никакого отношения не имеет.


iusupp   (2003-04-17 01:01:00) [17]

Zacho ©
Не работает...

IBDataSet1.Active:= False;
IBDataSet1.selectsql.Text:="SELECT TARIF,NALOG1,dateis,subjectid from ORDERS" ;
IBDataSet1.modifysql.Text:="update orders Set TARIF=:TARIF,NALOG1=:NALOG1 where orders.DATEIS=:OLD_DATEIS and orders.SUBJECTID=:OLD_SUBJECTID" ;
IBDataSet1.InsertSQL.Text:="insert into ORDERS (TARIF,NALOG1) values (:TARIF,:NALOG1)";
IBDataSet1.Active:= True;


Zacho   (2003-04-15 22:22:00) [18]

Ну а в чем проблема ? Наталья тебе правильно ответила. Если не понял - опиши свои затруднения конкретнее, с телепатами сейчас напряженка :-)
P.S. Извени, но твой пост > iusupp © (15.04.03 18:48)- бред. Не обижайся, но почитай хоть что-нибудь о работе с БД в Дельфи и о IB.


iusupp   (2003-04-15 19:40:00) [19]

kravchuk ©
Точнее не бывает...


kravchuk   (2003-04-15 19:00:00) [20]

в смысле перевести в режим редактирования? TDataSet.Edit?


Страницы:   1 2

Наверх

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