Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.11.08;
Скачать: CL | DM;

Вниз

Редактирование данных в DBGrid в случае заполнения DBGrid изQuerу   Найти похожие ветки 

 
Maridena ©   (2009-08-06 21:52) [0]

Привет всем.
У меня наверное несколько глупый вопрос, но я действительно не понимаю. Пожалуйста, помогите.
В общем есть несколько таблиц, из которых собирается вьюшка, которую я отображаю в DBGrid.
Меня интересует как можно меня данные в DBGrid?
Ни в самом гриде ни в dbedit и прочих связанных с query компонентами редактирование не получается. Почитала - видимо потому, что вьюшка собирается из нескольких таблиц.
Но как мне все таки отредактировать данные-то?
Самое замечательное, если у кого-то есть просто кусок кода с примером - надеюсь разобраться по нему сама.
Нашла тут на форуме похожий вопрос, вроде как решается с помощью UpdateSQL, но примера не нашла.
Если можно решить другим способом - подскажите, плз!
Спасибо.


 
Игорь Шевченко ©   (2009-08-06 21:56) [1]


> вроде как решается с помощью UpdateSQL, но примера не нашла


у UpdateSQL есть свойства InsertSQL,ModifySQL,DeleteSQL.

Запросы, указанные в этих свойствах, выполняются при DataSet.Insert/Post, DataSet.Edit/Post, DataSet.Delete

Пример кода есть в Program Files\Borland\BDS\...\Demos\Db\CachedUpd\*.*


 
Maridena ©   (2009-08-06 22:02) [2]

Спасибо за такой быстрый ответ.
У меня, к сожалению нет таких примеров, как по ссылкам, указанным тобой.
Program Files\Borland\BDS\...\Demos\Db\CachedUpd\*.
У меня C:\Program Files\CodeGear\RAD Studio\6.0, и образцов кода нет :(
Я в первую очередь туда полезла. В Delphi 7 было, но ее сейчас нет.

У меня проблема-то не в том, чтобы ВСТАВИТЬ данные в таблицу и т.п.
Это бы я сделала.
НО мне надо чтобы пользователь ВИДЕЛ, что он что-то там меняет в связанном с Query компоненте. А компонент этого не дает делать, потому что Query связано с неск.таблицами сразу и данные в компоненте нередактируемые.
Как человеку ввести то, что он хочет-то и видеть это?
Можешь пример кинуть? Если нетрудно, конечно.


 
Anatoly Podgoretsky ©   (2009-08-06 22:15) [3]

> Maridena  (06.08.2009 22:02:02)  [2]

Попробуй сделать поиск по диску на имя Demos


 
Maridena ©   (2009-08-06 22:42) [4]

Спасибо, Анатолий - хорошая идея.
Жаль только, что единственное, что нашлось - \RAD Studio\6.0\Demos\database\projects\samples\  и там про блэкфиш и про датаснап. Больше ничего нет.
Просто видимо дельфи без примеров установили :(
Может кто-нибудь просто пример сюда копи-пастнет?

Можно, конечно, сделанную выборку сохранять в таблицу, а ее вытаскивать в DBGrid и уже тогда редактировать, но это, по-моему, не лучшая идея. :)


 
Игорь Шевченко ©   (2009-08-06 22:49) [5]


> Как человеку ввести то, что он хочет-то и видеть это?


Refresh сделать после Post, он увидит

Пример сделать не могу - база не озвучена


 
Maridena ©   (2009-08-06 22:54) [6]

Игорь, я наверное, невнятно выражаюсь, извините - сейчас у меня основная проблема в том, что человек НЕ МОЖЕТ РЕДАКТИРОВАТЬ компоненты, связанные с Query.
Есть грид, в котором данные из query (выборка из нескольких таблиц).
К этому же query привязаны несколько компонентов типа dbedit, значения которых естественно меняются при движении пользователя по записям в гриде.
Как мне сделать, чтобы человек смог ВВЕСТИ данные в эти же dbedit"ы и видеть то, что он вводит?


 
Maridena ©   (2009-08-06 22:57) [7]

Да, по поводу базы данных - absolute database. (не знаю, можно ли тут ссылки кидать на сайт производителя, потому не добавляю)


 
Игорь Шевченко ©   (2009-08-06 23:09) [8]


> Есть грид, в котором данные из query (выборка из нескольких
> таблиц).
> К этому же query привязаны несколько компонентов типа dbedit,
>  значения которых естественно меняются при движении пользователя
> по записям в гриде.
> Как мне сделать, чтобы человек смог ВВЕСТИ данные в эти
> же dbedit"ы и видеть то, что он вводит?


Выполнить Query.Edit (для пробы присоединить к DataSource dbNavigator - там кнопки есть Add/Edit/Delete)


 
Maridena ©   (2009-08-06 23:18) [9]

Присоединила в тому же датасоурс, что и квери навигатор.
навигатор позволяет только перемещаться по записям. Кнопки редактирования, вставки, как и ожидалось отключены, т.к. квери составлен из неск.таблиц.
Не совсем поняла совет.


 
Maridena ©   (2009-08-06 23:19) [10]

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


 
Anatoly Podgoretsky ©   (2009-08-06 23:37) [11]

У тебя не редактируемый набор данных, на мой взгляд лучшее решение - это редактирование в форме, данные получать из таблиц напрямую и запись обратно по таблицам, в транзакции. Грид же использовать только для навигации.


 
Игорь Шевченко ©   (2009-08-06 23:38) [12]

Maridena ©   (06.08.09 23:18) [9]

У Query надо указать CachedUpdates = true и UpdateObject = UpdateSQL, где написать тексты запросов на вставку/обновление/удаление


 
Игорь Шевченко ©   (2009-08-06 23:39) [13]

Anatoly Podgoretsky ©   (06.08.09 23:37) [11]

Да без разницы


 
Maridena ©   (2009-08-06 23:40) [14]

Да уж... я думала есть какой-то способ.
Просто пользователю было бы удобнее сразу смотреть и в гриде и в dbedit"ах данные и тут же их редактировать.
Хорошо, как решение, наверное, можно использовать доп.форму для редактирования текущей записи по клику на ней пользователем.
Жалко, что нельзя редактировать он зе флай.
(но я еще подумаю :))

Спасибо всем.


 
Anatoly Podgoretsky ©   (2009-08-06 23:42) [15]

> Игорь Шевченко  (06.08.2009 23:38:12)  [12]

Игорь это AbsoluteDB, а у него свои TAbsTable/TAbsQuery


 
Maridena ©   (2009-08-06 23:43) [16]

Да, к сожалению с абсолютом кэшед апдейтс не проходит, но спасибо все равно :)


 
Anatoly Podgoretsky ©   (2009-08-07 00:02) [17]

У AbsDB своя справка и свои Демос, очень приличные.
Попытаться можно сделать или через TClicentDataset, или через InMemoryTable - небольшие примеры есть в Демос. Но это за счет довольно серьезных усложнений и стоит подумать стоит ли. А так AbsDB очень мощная СУБД и позволяет делать невероятные вещи, например ДБ только из одного ехе файла, без файла БД или ReadOnly DB на CD


 
Maridena ©   (2009-08-07 00:12) [18]

Инмемори тэйбл - да, я уже как раз смотрю, спасибо, что надоумили меня выше в примеры посмотреть :)


 
turbouser ©   (2009-08-07 00:12) [19]


> Maridena ©

Вьюхи (Views) могут (имхо, обязаны!!) быть не редактируемы.
Надо делать все по человечески...


 
Maridena ©   (2009-08-07 00:16) [20]

Ты прав, турбо.  Вопрос в том, что делать-то ? :)
Сами ВЬЮХИ никто и не собирался редактировать - я об этом в самом начале написала.
Надо редактировать данные в таблицах.
Вопрос был как сделать так, чтобы юзеру было просто и удобно и в тоже время мне не пришлось бы городить огород.
Я уже решила - буду делать через доп.формы, как было предложено.
Сорри, если неточно донесла с самого начала.

Тему можно закрывать - всем спасибо !


 
Игорь Шевченко ©   (2009-08-07 00:17) [21]

Anatoly Podgoretsky ©   (06.08.09 23:42) [15]

Тогда извиняюсь


 
Anatoly Podgoretsky ©   (2009-08-07 07:27) [22]

> Игорь Шевченко  (07.08.2009 00:17:21)  [21]

У него свой наследник TDataset (обосновано), вот это и потребовало других наследников.


 
имя   (2009-09-17 14:24) [23]

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



Страницы: 1 вся ветка

Текущий архив: 2009.11.08;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.017 c
2-1253744769
Chorniyy
2009-09-24 02:26
2009.11.08
Можно ли занять память таким способом


15-1252699551
DVM
2009-09-12 00:05
2009.11.08
День программиста утвержден!


2-1253681952
Ksandr
2009-09-23 08:59
2009.11.08
Access без ODBC... как...???


1-1222948814
Alex_C
2008-10-02 16:00
2009.11.08
Косвенное создание формы


15-1252382165
AleKo
2009-09-08 07:56
2009.11.08
Опции ilink32.exe