Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не редактируются ячейки 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   Вверх
Vavik
Дата 7.5.2009, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Таак, теперь как мне сделать

query1.FieldByName('id_poselok').asString:= ' А тут ячейка DBGRida '   м?


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


Творец
****


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

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



бредовый код, дб грид только отображает данные

Это сообщение отредактировал(а) Akella - 29.6.2009, 23:43
PM MAIL   Вверх
Vavik
Дата 7.5.2009, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я просто хочу использовать Dbgrid в качестве эдита.
PM MAIL   Вверх
insoft
Дата 7.5.2009, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Vavik, а зачем плодит темы и вопросы?
http://forum.vingrad.ru/forum/topic-257095/15.html

p.s. бр.. даже отвечать больше не буду...
модеры, что на форуме вообще все правила по отменяли????
PM MAIL WWW   Вверх
Vavik
Дата 7.5.2009, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(insoft @ 7.5.2009,  16:57)
Vavik, а зачем плодит темы и вопросы?
http://forum.vingrad.ru/forum/topic-257095/15.html

p.s. бр.. даже отвечать больше не буду...
модеры, что на форуме вообще все правила по отменяли????

Ну вообще, я этот пост в той теме хотел написать, но он как-то здесь оказался  smile 
Ой, а он там оказывается тоже есть  smile  Магия!  smile 

Это сообщение отредактировал(а) Vavik - 7.5.2009, 17:04
PM MAIL   Вверх
insoft
Дата 7.5.2009, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Vavik, да не важно, одна тема - один вопрос!!!
в общем: решать модерам
PM MAIL WWW   Вверх
Vavik
Дата 7.5.2009, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(insoft @ 7.5.2009,  17:03)
Vavik, да не важно, одна тема - один вопрос!!!
в общем: решать модерам

Неее, в этой я спрашивал, как сделать ячейки редактируемыми, а в той, как внести изменения в БД, используя DBGrid.

Короче вот так надо
Код

 Query1.append;
 Query1.fieldbyname('id_poselok').asString:='ячейка DBGrida';
 Query1.post;



"OnDrawColumnCell - наступает при необходимости перерисовать ячейку"
Что значит перерисовать ячейку ?

Только не надо говорить, что DBGrid нельзя в качестве эдита использовать. Пользуясь навигатором мы ведь данные в DBgrid вбиваем, вот я хочу тоже самое делать только без него.
Пока что делаю так
Код

public
  s:string;
...
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
s:=Column.Field.AsString;
Query1.fieldbyname('id_poselok').asString:=s;
end;

Но тогда он суёт значение, отображаемое из БД, а мне надо, чтобы то которое я только что вписал. Вот как это сделать ?



Это сообщение отредактировал(а) Vavik - 7.5.2009, 18:26
PM MAIL   Вверх
Akella
Дата 7.5.2009, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Цитата(Vavik @  7.5.2009,  16:57 Найти цитируемый пост)
Я просто хочу использовать Dbgrid в качестве эдита. 

не используй грид, используй датасет, ведь грид привязан к датасету
PM MAIL   Вверх
Vavik
Дата 8.5.2009, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

ADOquery1.Append;
ADOquery1.Edit;
ADOquery1.FieldByName('id_poselok').asString:= '4';
ADOquery1.post;

Не добавляет.
Говорит "Не удаётся вставить пустую строку. Необходим хотя бы один столбец значений."
PM MAIL   Вверх
Kbl4AH
Дата 8.5.2009, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Vavik @  8.5.2009,  08:51 Найти цитируемый пост)
Не добавляет.Говорит "Не удаётся вставить пустую строку. Необходим хотя бы один столбец значений."

добавь же ты oid в запрос...
ЗЫ. попробуй еще так
Код

ADOquery1.Append;
ADOquery1.FieldByName('id_poselok').asString:= '4';
ADOquery1.post;

PM MAIL ICQ   Вверх
Vavik
Дата 8.5.2009, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Kbl4AH @ 8.5.2009,  08:07)
Цитата(Vavik @  8.5.2009,  08:51 Найти цитируемый пост)
Не добавляет.Говорит "Не удаётся вставить пустую строку. Необходим хотя бы один столбец значений."

добавь же ты oid в запрос...
ЗЫ. попробуй еще так
Код

ADOquery1.Append;
ADOquery1.FieldByName('id_poselok').asString:= '4';
ADOquery1.post;

Да и так тоже пробывал. OID не помогает, тоже самое мне пишет.

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


Опытный
**


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

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



Цитата(Vavik @  8.5.2009,  09:11 Найти цитируемый пост)
Да и так тоже пробывал. OID не помогает, тоже самое мне пишет.

 smile 
тада вместо этого
Код

ADOquery1.Append;
ADOquery1.Edit;
ADOquery1.FieldByName('id_poselok').asString:= '4';
ADOquery1.post;

попробуй это...
Код

ADOquery1.AppendRecord([null, 4, null]);

где в квадратных скобках указываются значения для всех полей вставляемой строки (null - пустые значения, не null - вставляемое значение)...
в моем примере НД содержит 3 поля... 2-е поле - id_poselok... 

Это сообщение отредактировал(а) Kbl4AH - 8.5.2009, 08:54
PM MAIL ICQ   Вверх
Vavik
Дата 8.5.2009, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Kbl4AH @ 8.5.2009,  08:47)
Цитата(Vavik @  8.5.2009,  09:11 Найти цитируемый пост)
Да и так тоже пробывал. OID не помогает, тоже самое мне пишет.

 smile 
тада вместо этого
Код

ADOquery1.Append;
ADOquery1.Edit;
ADOquery1.FieldByName('id_poselok').asString:= '4';
ADOquery1.post;

попробуй это...
Код

ADOquery1.AppendRecord([null, 4, null]);

где в квадратных скобках указываются значения для всех полей вставляемой строки (null - пустые значения, не null - вставляемое значение)...
в моем примере НД содержит 3 поля... 2-е поле - id_poselok...

Не, всё равно не помогло, та же ошибка.
PM MAIL   Вверх
Kbl4AH
Дата 8.5.2009, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Vavik @  8.5.2009,  11:51 Найти цитируемый пост)
Не, всё равно не помогло, та же ошибка.

у тебя походу автоматическая вставка идет, в которой значения полей отсутсвуют...
пиши полностью процедуру, в которой ошибка, указывай строку на которую ругается...
или говори последовательность твоих действий на форме, вызывающую ошибку...
PM MAIL ICQ   Вверх
Vavik
Дата 8.5.2009, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Kbl4AH @ 8.5.2009,  10:55)
Цитата(Vavik @  8.5.2009,  11:51 Найти цитируемый пост)
Не, всё равно не помогло, та же ошибка.

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

Ничего он не выделяет, просто выдаёт ошибку) 
user posted image
Последовательность действий...запустил проект, нажал кнопку, ошибка, всё smile

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


Опытный
**


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

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



Цитата(Vavik @  8.5.2009,  12:14 Найти цитируемый пост)
Ничего он не выделяет, просто выдаёт ошибку)

ты издеваешься? я уже текст ошибки прочел smile 
Цитата(Vavik @  8.5.2009,  12:14 Найти цитируемый пост)
Последовательность действий...запустил проект, нажал кнопку, ошибка, всё

так давай процедуру которая у тебя нажатие кнопки обрабатывает...



PM MAIL ICQ   Вверх
Vavik
Дата 8.5.2009, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

procedure TForm1.Button1Click(Sender: TObject);
begin
ADOquery1.Append;
ADOquery1.Edit;
ADOquery1.FieldByName('id_poselok').asString:= '4';
ADOquery1.post;
end;


Или так, без разницы)
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
ADOquery1.Append;
ADOquery1.FieldByName('id_poselok').asString:= '4';
ADOquery1.post;
end;

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


Опытный
**


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

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



а так почему не пробовал? (в скобках должно быть столько значений, сколько полей выбирается в запросе)
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  ADOQuery1.AppendRecord([null, 4, null]);
end;

PM MAIL ICQ   Вверх
Vavik
Дата 8.5.2009, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Kbl4AH @ 8.5.2009,  12:16)
а так почему не пробовал? (в скобках должно быть столько значений, сколько полей выбирается в запросе)
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  ADOQuery1.AppendRecord([null, 4, null]);
end;

Цитата(Vavik @ 8.5.2009,  10:51)
Цитата(Kbl4AH @ 8.5.2009,  08:47)
Цитата(Vavik @  8.5.2009,  09:11 Найти цитируемый пост)
Да и так тоже пробывал. OID не помогает, тоже самое мне пишет.

 smile 
тада вместо этого
Код

ADOquery1.Append;
ADOquery1.Edit;
ADOquery1.FieldByName('id_poselok').asString:= '4';
ADOquery1.post;

попробуй это...
Код

ADOquery1.AppendRecord([null, 4, null]);

где в квадратных скобках указываются значения для всех полей вставляемой строки (null - пустые значения, не null - вставляемое значение)...
в моем примере НД содержит 3 поля... 2-е поле - id_poselok...

Не, всё равно не помогло, та же ошибка.

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


Опытный
**


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

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



Vavik, по-моему, такой ошибки при следующем коде быть не может...
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  ADOQuery1.AppendRecord([null, 4, null]);
end;

давай текст запроса в ADOQuery1...

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


Шустрый
*


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

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



Цитата(Kbl4AH @ 8.5.2009,  12:32)
Vavik, по-моему, такой ошибки при следующем коде быть не может...
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  ADOQuery1.AppendRecord([null, 4, null]);
end;

давай текст запроса в ADOQuery1...

select oid, * from poselok

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


Опытный
**


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

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



Vavik, теперь назови все поля таблицы poselok... 

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


Шустрый
*


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

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



Цитата(Kbl4AH @ 8.5.2009,  13:09)
Vavik, теперь назови все поля таблицы poselok...

OID, id_poselok, "Название"
PM MAIL   Вверх
Dmi3ev
Дата 8.5.2009, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

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



Цитата

"Название" 

это поле такое???

Добавлено через 2 минуты и 53 секунды
Цитата

Vavik, теперь назови все поля таблицы poselok... 

тебя просят сделать что вроде этого

id - id чего-то там - тип: счетчик
name - имя чего-там - тип: текстовый (50)
и текст запроса
select * from t1;


--------------------

PM MAIL   Вверх
Akella
Дата 8.5.2009, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Цитата(Vavik @  8.5.2009,  07:51 Найти цитируемый пост)
ADOquery1.Append;
ADOquery1.Edit;

советую изучить хотя бы простейшие методы работы с базами, если ты даже не знаешь, что такое Edit, а что такое Append
PM MAIL   Вверх
Kbl4AH
Дата 8.5.2009, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



попробуй так...
Код

select t.*, t.oid from poselok t

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  ADOQuery1.AppendRecord([4, null]);
end;

если опять ошибка, то измени запрос 
Код

select t.* from poselok t


PM MAIL ICQ   Вверх
Vavik
Дата 8.5.2009, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Akella @ 8.5.2009,  13:26)
Цитата(Vavik @  8.5.2009,  07:51 Найти цитируемый пост)
ADOquery1.Append;
ADOquery1.Edit;

советую изучить хотя бы простейшие методы работы с базами, если ты даже не знаешь, что такое Edit, а что такое Append

Да знаю я, что это такое, а что не так ?
PM MAIL   Вверх
Dmi3ev
Дата 8.5.2009, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

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



Цитата

советую изучить хотя бы простейшие методы работы с базами, если ты даже не знаешь, что такое Edit, а что такое Append 

Insert, Append для добавления открываешь (разница в том, куда добавиться запись)
Edit для редактирования открываешь
Post чтобы сохранить все это дело в базу
Почитать стоит...  smile 


--------------------

PM MAIL   Вверх
Vavik
Дата 8.5.2009, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Kbl4AH @ 8.5.2009,  13:31)
попробуй так...
Код

select t.*, t.oid from poselok t

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  ADOQuery1.AppendRecord([4, null]);
end;

если опять ошибка, то измени запрос 
Код

select t.* from poselok t


Не, не помогает. Вообще это уже на какой-то изврат похоже)) Решение проблемы намного проще.

Цитата(Dmi3ev @ 8.5.2009,  13:32)
Цитата

советую изучить хотя бы простейшие методы работы с базами, если ты даже не знаешь, что такое Edit, а что такое Append 

Insert, Append для добавления открываешь (разница в том, куда добавиться запись)
Edit для редактирования открываешь
Post чтобы сохранить все это дело в базу
Почитать стоит...  smile

Та знаю я это) чего вы мне это говорите) если есть ошибка, то скажите лучше где)


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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

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



Vavik, а ты пробовал такой финт провернуть:
созадать еще один запрос и написать в нем:
INSERT INTO t1(f1, f2, f3) VALUES (1, '2', '3');
а потом выполнить его по нажатию на кнопку, потом обновить запрос на выборку и посмотреть как оно?
может у тебя ваще с бд траблы, кстати, че за какая БД?

Это сообщение отредактировал(а) Dmi3ev - 8.5.2009, 13:40


--------------------

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


Опытный
**


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

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



Цитата(Vavik @  8.5.2009,  14:36 Найти цитируемый пост)
Не, не помогает.

ошибка та же?
Цитата(Vavik @  8.5.2009,  14:36 Найти цитируемый пост)
Решение проблемы намного проще.

конечно, проще smile электромагнитные помехи при телепатии - вот узкое место в решении данной проблемы...

ЗЫ. У тебя точно в таблице 2 поля не считая oid? Кстати, откуда ты знаешь, что поле oid есть в твоей таблице, ты ведь его не создавал?!
PM MAIL ICQ   Вверх
Dmi3ev
Дата 8.5.2009, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

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



я про то, что надо бы ваще проверить, добавляется ли туда чего, или нет...
просто когда мне приходилось работать с пардоксом (бд такая стандартная), то запись не добавлялась, когда я запускал свое приложение из под билдера, а экзешник работал отлично, хз почему так было... мы это обсуждали и пришли к тому, что это глюк бд, потому как с остальными все работало, так что напиши просто статический запрос на добавление записи, если прокатит, то можно думать, а если нет... то тогда другое копать...


--------------------

PM MAIL   Вверх
Vavik
Дата 8.5.2009, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Dmi3ev @ 8.5.2009,  13:39)
Vavik, а ты пробовал такой финт провернуть:
созадать еще один запрос и написать в нем:
INSERT INTO t1(f1, f2, f3) VALUES (1, '2', '3');
а потом выполнить его по нажатию на кнопку, потом обновить запрос на выборку и посмотреть как оно?
может у тебя ваще с бд траблы, кстати, че за какая БД?

Через запросы БД без проблем редактируется. PostgreSql.

Цитата(Kbl4AH @ 8.5.2009,  13:40)
Цитата(Vavik @  8.5.2009,  14:36 Найти цитируемый пост)
Не, не помогает.

ошибка та же?
Цитата(Vavik @  8.5.2009,  14:36 Найти цитируемый пост)
Решение проблемы намного проще.

конечно, проще smile электромагнитные помехи при телепатии - вот узкое место в решении данной проблемы...

ЗЫ. У тебя точно в таблице 2 поля не считая oid? Кстати, откуда ты знаешь, что поле oid есть в твоей таблице, ты ведь его не создавал?!

Таже ошибка, таблицы точно две и OID точно есть)

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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

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



Цитата

конечно, проще smile электромагнитные помехи при телепатии - вот узкое место в решении данной проблемы...

это да! еще надо учитывать место, откуда руки растут...
Цитата

ЗЫ. У тебя точно в таблице 2 поля не считая oid? Кстати, откуда ты знаешь, что поле oid есть в твоей таблице, ты ведь его не создавал?! 

ухаха, неужели все так плохо?
человек создал БД и не знает, сколько там полей и какие... Забавно...

Добавлено через 42 секунды
Цитата

Через запросы БД без проблем редактируется. PostgreSql. 

так почему ими и не воспользоваться??? что мешает???

Добавлено через 3 минуты и 11 секунд
Я, допустим, когда не стоит задача, которая требует работы не через запросы, всегда использую запросы, потому как запрос при работе с БД для меня как-то естественнее чем работа через методы компонента... хз, я так считаю...


--------------------

PM MAIL   Вверх
Vavik
Дата 8.5.2009, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



[QUOTE=Dmi3ev,8.5.2009,  13:46]
Цитата

так почему ими и не воспользоваться??? что мешает???

Ну таблиц просто много и у всех разное количество столбцов, у одной 24 например и делать 24 эдита как-то не очень) поэтому я хочу через ячейки Dbgrid редактировать как это делает DBNavigator

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


Опытный
**


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

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



Vavik, а если так?
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  ADOQuery2.SQL.Text := 'insert into poselok (id_poselok) values (4)';
  ADOQuery2.ExecSQL;
  ADOQuery2.SQL.Text := 'commit'; 
  ADOQuery2.ExecSQL;
  ADOQuery1.Refresh;
  ADOQuery1.Last;
end;


Добавлено через 2 минуты и 26 секунд
Цитата(Vavik @  8.5.2009,  15:00 Найти цитируемый пост)
Ну таблиц просто много и у всех разное количество столбцов, у одной 24 например и делать 24 эдита как-то не очень) поэтому я хочу через ячейки Dbgrid редактировать как это делает DBNavigator

так ты определись, каким образом таблицу собираешься модифицировать...
я тебя не пойму то ли ты только в гриде, то ли с навигатором, то ли по нажатию кнопок собираешься это делать...
PM MAIL ICQ   Вверх
Vavik
Дата 8.5.2009, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Kbl4AH @ 8.5.2009,  14:03)
Vavik, а если так?
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  ADOQuery2.SQL.Text := 'insert into poselok (id_poselok) values (4)';
  ADOQuery2.ExecSQL;
  ADOQuery2.SQL.Text := 'commit'; 
  ADOQuery2.ExecSQL;
  ADOQuery1.Refresh;
  ADOQuery1.Last;
end;

Ну через запрос я вот так делал 
Код

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add('insert into poselok (id_poselok, "Название") values ('''+ edit1.Text +''','''+ edit2.Text +''')');
ADOQuery1.ExecSQL;

Чтобы вбить в этот запрос значения нужны 2 эдита, а для запросы с другой таблицей, нужно 24, неудобно...

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


Опытный
**


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

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



Цитата(Vavik @  8.5.2009,  15:08 Найти цитируемый пост)
Чтобы вбить в этот запрос значения нужны 2 эдита, а для запросы с другой таблицей, нужно 24, неудобно...

чтобы вставить запись в таблицу хватит только одной пары поле/значение...
а уже с автоматическим редактированием у тебя вроде проблем нет...
PM MAIL ICQ   Вверх
Vavik
Дата 8.5.2009, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Kbl4AH @ 8.5.2009,  14:15)
Цитата(Vavik @  8.5.2009,  15:08 Найти цитируемый пост)
Чтобы вбить в этот запрос значения нужны 2 эдита, а для запросы с другой таблицей, нужно 24, неудобно...

чтобы вставить запись в таблицу хватит только одной пары поле/значение...
а уже с автоматическим редактированием у тебя вроде проблем нет...

Всмысли ?  smile 
PM MAIL   Вверх
JSBax
Дата 8.5.2009, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

Чтобы вбить в этот запрос значения нужны 2 эдита, а для запросы с другой таблицей, нужно 24, неудобно...

а если пробовать сделать не через 24 эдита, а через стринггрид, который ты сможешь редактировать, и после редактирования при помощи запроса записать в базу.
PM MAIL ICQ   Вверх
Dmi3ev
Дата 8.5.2009, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

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



Цитата

Чтобы вбить в этот запрос значения нужны 2 эдита, а для запросы с другой таблицей, нужно 24, неудобно...

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

Добавлено через 2 минуты и 48 секунд
Цитата

"Название"

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


--------------------

PM MAIL   Вверх
Vavik
Дата 8.5.2009, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Dmi3ev @ 8.5.2009,  15:19)
Цитата

Чтобы вбить в этот запрос значения нужны 2 эдита, а для запросы с другой таблицей, нужно 24, неудобно...

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

Да, я же сказал через запросы Бд без проблем редактируется. И добавлял и удалял и изменял.
PM MAIL   Вверх
Dmi3ev
Дата 8.5.2009, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

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



Цитата

Да, я же сказал через запросы Бд без проблем редактируется. И добавлял и удалял и изменял. 

программно? или в самой БД? ты этого до сих пор не сказал...
Поле переименовал?


--------------------

PM MAIL   Вверх
Vavik
Дата 8.5.2009, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Dmi3ev @ 8.5.2009,  15:31)
Цитата

Да, я же сказал через запросы Бд без проблем редактируется. И добавлял и удалял и изменял. 

программно? или в самой БД? ты этого до сих пор не сказал...
Поле переименовал?

Да програмно, переименовал.
PM MAIL   Вверх
Dmi3ev
Дата 8.5.2009, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

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



а еще почему для такого варианта, как ты написал
Код

ADOquery1.Append;
ADOquery1.Edit;
ADOquery1.FieldByName('id_poselok').asString:= '4';
ADOquery1.post;

тебе не нужно 24 едита, а для того чтобы через запрос сделать нужно???
ЗЫ
То что ты делаешь через компоненты можно сделать через запрос, причем разницы никакой в плане того, что если делать так то нужно 24 едита, а если делать так то не нужно...

Добавлено через 2 минуты и 45 секунд
давай по порядку все
1) какие типы у полей
2) код, который ты используешь для того чтобы добавилось че-то на данный момент...



--------------------

PM MAIL   Вверх
Vavik
Дата 8.5.2009, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Dmi3ev @ 8.5.2009,  15:34)
а еще почему для такого варианта, как ты написал
Код

ADOquery1.Append;
ADOquery1.Edit;
ADOquery1.FieldByName('id_poselok').asString:= '4';
ADOquery1.post;

тебе не нужно 24 едита, а для того чтобы через запрос сделать нужно???
ЗЫ
То что ты делаешь через компоненты можно сделать через запрос, причем разницы никакой в плане того, что если делать так то нужно 24 едита, а если делать так то не нужно...

Ну можно сделать 24 таких строчки ADOquery1.FieldByName('id_poselok').asString:= '4';    smile 
А ещё лучше, чтобы название поля, бралось и помещалось сюда ADOquery1.FieldByName('id_poselok').asString:= '4'; при нажатии на принадлежащую этому полю ячейку.
Короче, проще говоря, я хочу делать, то что делает DBNavigator/

А если делать через запрос
Query1.SQL.add('insert into poselok ("Номер", "Название") values ('''+ edit1.Text +''','''+ edit2.Text +''')');
То я не знаю, как вбить в Values 24 значения, а потом поменять таблицы и всего 2.

Цитата(Dmi3ev @ 8.5.2009,  15:34)

давай по порядку все
1) какие типы у полей
2) код, который ты используешь для того чтобы добавилось че-то на данный момент...


Ну чего мне все таблицы со всеми полями перечислять) 
1)Номер(Integer), Название(character varying(64))
2)Я пока что ничего не использую) я выбираю или через запрос типа
Код

Query1.SQL.Clear;
Query1.SQL.add('insert into poselok (id_poselok, "Íàçâàíèå") values ('''+ edit1.Text +''','''+ edit2.Text +''')');
Query1.ExecSQL;

Или таким способом
Код

ADOquery1.Append;
ADOquery1.Edit;
ADOquery1.FieldByName('id_poselok').asString:= '4';
ADOquery1.post;



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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

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



Цитата

Короче, проще говоря, я хочу делать, то что делает DBNavigator/

Код

ADOQuery1.Edit;
ADOQuery1.FieldByName('f1').AsString:=DBGrid1.Columns.Items[0].Field.AsString;
ADOQuery1.FieldByName('f2').AsString:=DBGrid1.Columns.Items[1].Field.AsString;
ADOQuery1.Post;

пишешь этот код на кнопку, только поля по своему называешь, и соответственно в Items[] индекс ставишь нужный
так вот далее запускаешь
нажимаешь на дбгрид, после этого нижимаешь стрелочку вниз ,появляется строка, ты туда записываешь новые данные, потом нажимаешь на кнопку, все... я написал ADOQuery1.Edit;, тк если он не переводит в режим редактирования, он открывает на запись все это дело...
должно работать
давай, пробуй быстрей...

Добавлено через 1 минуту и 51 секунду
индексы в Items[] ставишь, у первого поля 0, у второго 1, у третьего 2, думаю понятно...
зы
должно работать, хотя я в дельфи не рублю )))


--------------------

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


Шустрый
*


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

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



Цитата(Dmi3ev @ 8.5.2009,  15:58)
Цитата

Короче, проще говоря, я хочу делать, то что делает DBNavigator/

Код

ADOQuery1.Edit;
ADOQuery1.FieldByName('f1').AsString:=DBGrid1.Columns.Items[0].Field.AsString;
ADOQuery1.FieldByName('f2').AsString:=DBGrid1.Columns.Items[1].Field.AsString;
ADOQuery1.Post;

пишешь этот код на кнопку, только поля по своему называешь, и соответственно в Items[] индекс ставишь нужный
так вот далее запускаешь
нажимаешь на дбгрид, после этого нижимаешь стрелочку вниз ,появляется строка, ты туда записываешь новые данные, потом нажимаешь на кнопку, все... я написал ADOQuery1.Edit;, тк если он не переводит в режим редактирования, он открывает на запись все это дело...
должно работать
давай, пробуй быстрей...

Добавлено @ 16:00
индексы в Items[] ставишь, у первого поля 0, у второго 1, у третьего 2, думаю понятно...
зы
должно работать, хотя я в дельфи не рублю )))

Есть такая проблема, когда я ввёл в первом поле значение, перехожу на второе и то что ввёл в первом сбрасывается, на то что было) Вообщем вроде не работает так.




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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

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



Цитата

И значения в эдит не заносились.
А ещё есть такая проблема, когда я ввёд в первом поле значение, перехожу на второе и то что ввёл в первом сбрасывается, на то что было) Вообщем вроде не работает так.

ууууу
короче слушай сюда:
пшешь код
Код

ADOQuery1.Edit;
ADOQuery1.FieldByName('id1').AsString:=DBGrid1.Columns.Items[0].Field.AsString;
ADOQuery1.FieldByName('poselok1').AsString:=DBGrid1.Columns.Items[1].Field.AsString;
ADOQuery1.FieldByName('name1').AsString:=DBGrid1.Columns.Items[2].Field.AsString;
ADOQuery1.Post;

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

Добавлено через 1 минуту и 49 секунд
прямо все копируй отсюда, даже названия полей не пиши, а копируй отсюда...


--------------------

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


Шустрый
*


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

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



Цитата(Dmi3ev @ 8.5.2009,  16:13)
Цитата

И значения в эдит не заносились.
А ещё есть такая проблема, когда я ввёд в первом поле значение, перехожу на второе и то что ввёл в первом сбрасывается, на то что было) Вообщем вроде не работает так.

ууууу
короче слушай сюда:
пшешь код
Код

ADOQuery1.Edit;
ADOQuery1.FieldByName('id1').AsString:=DBGrid1.Columns.Items[0].Field.AsString;
ADOQuery1.FieldByName('poselok1').AsString:=DBGrid1.Columns.Items[1].Field.AsString;
ADOQuery1.FieldByName('name1').AsString:=DBGrid1.Columns.Items[2].Field.AsString;
ADOQuery1.Post;

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

Добавлено @ 16:15
прямо все копируй отсюда, даже названия полей не пиши, а копируй отсюда...

Ах да, стрелочка вниз...забыл  smile 
Короче, может он что-то и добавляет, но возникает старая проблема
Цитата(Vavik @  8.5.2009,  11:51 Найти цитируемый пост)

user posted image



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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

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



Цитата

Короче, может он что-то и добавляет, но возникает старая проблема

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


--------------------

PM MAIL   Вверх
Vavik
Дата 8.5.2009, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Dmi3ev @ 8.5.2009,  16:58)
Цитата

Короче, может он что-то и добавляет, но возникает старая проблема

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

Да там и так можно их добавлять.
PM MAIL   Вверх
Dmi3ev
Дата 8.5.2009, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

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



Цитата

Да там и так можно их добавлять. 

Но почему-то он тебе на разрешает ведь так делать... Где-то косяк... Короче, я бы на твоем месте взял бы новенький АДОКвери, и попробовал бы на нем, и ДБГрид новенький, все должно работать... хз...


--------------------

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


Опытный
**


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

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



Dmi3ev, я тоже уже все мной сказанное проверил в новом проекте... у меня для TOracleDataSet все отрабатывает... я даж новый метод освоил - AppendRecord...
и я тоже уверен что дело в прокладке smile еще могли быть вопросы пока я не знал, что в PostgreSQL есть псевдополе и оно называется oid...
но щас у меня уже нет сил...

Vavik, попробуй все интересующие тебя вещи сделать с использованием MS Access... если с ним будет не так как ты хочешь - озвучивай... если все будет нормуль, то придецца обратиться к спецам по PostgreSQL... и отстань ты от этого DBNavigatora... все фихи мона сделать без него используя только интерфейс DBGrid, правда придецца несколько управляющих клавиш добавить... но в любом случае навигатор - не панацея... все что можно с ним - можно и без него...

PM MAIL ICQ   Вверх
Akella
Дата 8.5.2009, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Цитата(Vavik @  8.5.2009,  13:31 Найти цитируемый пост)
Да знаю я, что это такое, а что не так ? 

если бы знал, но не вызывал бы сразу редактирование после добавление. Обычно или добавление, или редактирование.
PM MAIL   Вверх
Vavik
Дата 8.5.2009, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Kbl4AH @ 8.5.2009,  18:06)
Dmi3ev, я тоже уже все мной сказанное проверил в новом проекте... у меня для TOracleDataSet все отрабатывает... я даж новый метод освоил - AppendRecord...
и я тоже уверен что дело в прокладке smile еще могли быть вопросы пока я не знал, что в PostgreSQL есть псевдополе и оно называется oid...
но щас у меня уже нет сил...

Vavik, попробуй все интересующие тебя вещи сделать с использованием MS Access... если с ним будет не так как ты хочешь - озвучивай... если все будет нормуль, то придецца обратиться к спецам по PostgreSQL... и отстань ты от этого DBNavigatora... все фихи мона сделать без него используя только интерфейс DBGrid, правда придецца несколько управляющих клавиш добавить... но в любом случае навигатор - не панацея... все что можно с ним - можно и без него...

Я не имел ввиду редактирование с помощью навигатора,  его я просто привёл в пример, чтобы понятней было чего хочу)

Цитата(Akella @ 8.5.2009,  18:34)
Цитата(Vavik @  8.5.2009,  13:31 Найти цитируемый пост)
Да знаю я, что это такое, а что не так ? 

если бы знал, но не вызывал бы сразу редактирование после добавление. Обычно или добавление, или редактирование.

Да эт мне посоветывали,  я и попробывал, эт не я придумал. 

Цитата(Dmi3ev @ 8.5.2009,  17:43)
Цитата

Да там и так можно их добавлять. 

Но почему-то он тебе на разрешает ведь так делать... Где-то косяк... Короче, я бы на твоем месте взял бы новенький АДОКвери, и попробовал бы на нем, и ДБГрид новенький, все должно работать... хз...

Та я уже пробывал, заново проект сделать, всё равно таже фигня. Короче буду через запросы делать и в них вставлять значения как ты показал.

Всем спасибо, кто оказал помощь. Я ещё вернусь  smile 

Это сообщение отредактировал(а) Vavik - 8.5.2009, 19:34
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

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


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

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

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


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

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


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

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


 




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


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

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