Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не редактируются ячейки DBgrid. 
V
    Опции темы
Vavik
Дата 6.5.2009, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 19.4.2007
Где: РнД

Репутация: нет
Всего: нет



Вывожу данные в DBgrid через ADOQuery. Жму кнопку "редактировать" выделеная ячейка DBGridа пеерходит в режим редактирования, но ничего не редактируется. Почему ? Readonly:=false, RequestLive не предлагать, у ADOQuery его нет, свойство Active=True.

Нашёл маленький проект, в нём через ADOQuery подключена база Access, всё редактируется. Подключился к своей бд postgresqlя и всё, нифига не работает.

Я конечно могу вбивать данные через Editыi, но это изврат, куда мне их 24 штуки пихать ? Через DBgrid удобней, а он не работает:(



Это сообщение отредактировал(а) Vavik - 6.5.2009, 08:47
PM MAIL   Вверх
Rodman
Дата 6.5.2009, 09:00 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Цитата(Vavik @  6.5.2009,  08:42 Найти цитируемый пост)
Нашёл маленький проект, в нём через ADOQuery подключена база Access, всё редактируется. Подключился к своей бд postgresqlя и всё, нифига не работает.

нам нудно найти 3 отличия?
или примеры покажешь?
PM MAIL WWW Skype GTalk YIM MSN   Вверх
insoft
Дата 6.5.2009, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 14.2.2007
Где: Тюменская область , г.Тобольск

Репутация: 3
Всего: 3



Vavik, используй ADODataSet и воспользуйся поиском ishimsity уже задавал такой вопрос и получил на него ответ
PM MAIL WWW   Вверх
Vavik
Дата 6.5.2009, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 19.4.2007
Где: РнД

Репутация: нет
Всего: нет



Цитата(Rodman @ 6.5.2009,  09:00)
Цитата(Vavik @  6.5.2009,  08:42 Найти цитируемый пост)
Нашёл маленький проект, в нём через ADOQuery подключена база Access, всё редактируется. Подключился к своей бд postgresqlя и всё, нифига не работает.

нам нудно найти 3 отличия?
или примеры покажешь?

Ну вот этот проект, ток Бд на диск D кинуть надо.

Цитата(insoft @ 6.5.2009,  09:30)
Vavik, используй ADODataSet и воспользуйся поиском ishimsity уже задавал такой вопрос и получил на него ответ

Попробую...


Присоединённый файл ( Кол-во скачиваний: 12 )
Присоединённый файл  ___________.rar 11,80 Kb
PM MAIL   Вверх
insoft
Дата 6.5.2009, 10:59 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 14.2.2007
Где: Тюменская область , г.Тобольск

Репутация: 3
Всего: 3



Цитата(insoft @  6.5.2009,  09:30 Найти цитируемый пост)
ishimsity уже задавал такой вопрос и получил на него ответ

http://forum.vingrad.ru/forum/topic-256453...ml#st_15_view_0
PM MAIL WWW   Вверх
Akella
Дата 6.5.2009, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Vavik, видишь ли, есть понятие "нередактируемый запрос".
PM MAIL   Вверх
Kbl4AH
Дата 6.5.2009, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 6
Всего: 15



Цитата(Akella @  6.5.2009,  12:57 Найти цитируемый пост)
есть понятие "нередактируемый запрос".

а можно подробнее об этом?!
я раньше всегда думал, что в редактируемом запросе должно присутствовать какое-то уникальное поле (MySQL, Oracle)...
и мне действительно не понятна проблема Vavik... еще по прошлой его теме я заинтересовался и пошарил в нете...
и ничего не смог найти... возникло чувство (наверняка ошибочное), что в postgresql на самом деле нельзя юзать автоматически редактируемые НД...


но больше всего меня удивило, что, например, TADODataSet может редактировать набор из Oracle, полученный запросом select * from table,
а TOracleDataSet - не может (ему необходим запрос select t.*, t.rowid from table t)...
причем 1-й запрос вроде как "нередактируемый" получается...

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

Это сообщение отредактировал(а) Kbl4AH - 6.5.2009, 13:27
PM MAIL ICQ   Вверх
Kbl4AH
Дата 6.5.2009, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 6
Всего: 15



Vavik, у тебя запрос типа select * from table?
Кажется, нашел решение... Попробуй использовать запрос типа select oid, * from table...
Цитата

Редактируемый набор записей должен содержать поле - идентификатор записи с уникальными значениями, используемый для связывания записей таблицы базы данных и строк набора. Необходимо явно включать это поле в список запрашиваемых полей запроса SELECT. Для различных СУБД существуют различные подходы к реализации механизма связывания записей таблицы и строк набора.
- Некоторые СУБД имеют 'скрытые' поля - идентификаторы записей для каждой хранимой таблицы (ROWID в Oracle, OID в PostgreSQL). Эти поля создаются неявно, даже если вы не включали его описания в список полей оператора CREATE TABLE. 

ЗЫ. Akella и др. форумчане, мой вопрос актуален...


Это сообщение отредактировал(а) Kbl4AH - 6.5.2009, 13:21
PM MAIL ICQ   Вверх
Akella
Дата 6.5.2009, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(Kbl4AH @  6.5.2009,  13:05 Найти цитируемый пост)
а можно подробнее об этом?!

Ссылка выше моего сообщения, там я написал, почему запрос не является "редактируемым"
PM MAIL   Вверх
Vavik
Дата 6.5.2009, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 19.4.2007
Где: РнД

Репутация: нет
Всего: нет



Цитата(Kbl4AH @ 6.5.2009,  13:21)
Vavik, у тебя запрос типа select * from table?
Кажется, нашел решение... Попробуй использовать запрос типа select oid, * from table...
Цитата

Редактируемый набор записей должен содержать поле - идентификатор записи с уникальными значениями, используемый для связывания записей таблицы базы данных и строк набора. Необходимо явно включать это поле в список запрашиваемых полей запроса SELECT. Для различных СУБД существуют различные подходы к реализации механизма связывания записей таблицы и строк набора.
- Некоторые СУБД имеют 'скрытые' поля - идентификаторы записей для каждой хранимой таблицы (ROWID в Oracle, OID в PostgreSQL). Эти поля создаются неявно, даже если вы не включали его описания в список полей оператора CREATE TABLE. 

ЗЫ. Akella и др. форумчане, мой вопрос актуален...

Не, так тож не хочет. 
Мне тут на другом форуме подсказали, что такое возможно когда ключевые поля незаданы.
Хотя кажется не в этом дело...подключился к БД Accessa, с одной таблицей без ключевых полей, всё норм редактирует.

Это сообщение отредактировал(а) Vavik - 6.5.2009, 14:07
PM MAIL   Вверх
Akella
Дата 6.5.2009, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(Kbl4AH @  6.5.2009,  13:05 Найти цитируемый пост)
select * from table,


Цитата(Kbl4AH @  6.5.2009,  13:05 Найти цитируемый пост)
причем 1-й запрос вроде как "нередактируемый" получается...


так это как раз и есть редактируемый запрос.

Добавлено через 9 минут и 17 секунд
Kbl4AH, по идее, если в запросе участвуют несколько таблиц, то такой запрос будет нередактируемый. Ну да, и ключевое поле должно быть, иначе откуда знать компонентам, какую именно запись редактировать. Если не будет ключевого поля, то есть опасность отредактировать больше одной записи. Представим, что у нас есть запрос:
Код
select name, phones from tphones

(ни name, ни phones не являются первичными ключами)
В гриде будет видно 2 поля. Теперь представим, что мы редактируем первую запись, где есть значения:
Вася Пупки | 777-0-777

SQL Update такого запроса будет такой: 
Код

update tphones set name = 'Пупки Василий', phones = '777-0-777'

--вот тут подвох
where name = 'Вася Пупки' and phones = '777-0-777'

в этом случае может отредактировать не только текущая запись, а ещё несколько других, попавших под условие where

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

PM MAIL   Вверх
Kbl4AH
Дата 6.5.2009, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 6
Всего: 15



Цитата(Akella @  6.5.2009,  14:56 Найти цитируемый пост)
Ссылка выше моего сообщения, там я написал, почему запрос не является "редактируемым"

так про редактирование объединных таблиц у меня нет вопросов...
у меня вопрос: почему АДОдатасет редактирует (и почему он редактирует, если не выбрано rowid) оракловый запрос select * from table, а ОРАКЛдатасет - нет... запрос-то ведь одинаковый... хотя... наверное, в ОраклДатаСете просто грамотно реализовали, чтоб явно разграничить редактиреумые и нередактируемые запросы...
Цитата(Vavik @  6.5.2009,  14:57 Найти цитируемый пост)
Мне тут на другом форуме подсказали, что такое возможно когда ключевые поля незаданы.Хотя кажется не в этом дело...подключился к БД Accessa, с одной таблицей без ключевых полей, всё норм редактирует.

так в цитате же именно это и написано!
Цитата(Vavik @  6.5.2009,  14:57 Найти цитируемый пост)
Не, так тож не хочет.

должен, т.к. OID и есть уникальное поле для этой БД... смотри уже свойства датасета, наверное, где-то запрет редактирования...
Цитата(Akella @  6.5.2009,  14:58 Найти цитируемый пост)
Ну да, и ключевое поле должно быть, иначе откуда знать компонентам, какую именно запись редактировать.

это понятно... тем более, что Oracle, PostgreSQL (псведополе) и MySQL (уникальный автоинкремент) их предоставляют по умолчанию...
PM MAIL ICQ   Вверх
Vavik
Дата 6.5.2009, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 19.4.2007
Где: РнД

Репутация: нет
Всего: нет



Слава яйцам, разобрался.
Делал так:
 Нажал 2 раза на ADOQuery, появилось окошко Fields editor, потом кликаем на нём правой кнопкой и выбираем add all Fields, ну а там выбираем поле и в свойстве Readonly ставим false smile

Это сообщение отредактировал(а) Vavik - 6.5.2009, 16:45
PM MAIL   Вверх
Kbl4AH
Дата 6.5.2009, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 6
Всего: 15



Цитата(Vavik @  6.5.2009,  17:44 Найти цитируемый пост)
Слава яйцам, разобрался.

используется OID в твоем запросе или нет? интересно, скажи smile 
PM MAIL ICQ   Вверх
Vavik
Дата 6.5.2009, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 19.4.2007
Где: РнД

Репутация: нет
Всего: нет



Цитата(Kbl4AH @ 6.5.2009,  19:26)
Цитата(Vavik @  6.5.2009,  17:44 Найти цитируемый пост)
Слава яйцам, разобрался.

используется OID в твоем запросе или нет? интересно, скажи smile

Неа)
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1128 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.