|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Смена значения в DBGrid через SQL запрос
Привет всем.
Есть грид, необходимо сменить значения ячейки с нет на дa и обратно(в зависимости от выбранного пункта меню) Код:
Query.Active:=false; Query.SQL.Add('UPDATE znp SET status = :status WHERE id= :id'); Query.ParambyName('status').asstring:= 'да'; Query.ParambyName('id').asinteger:=????????? Query.Active:=true; Вопрос, как правильно описать параметр ID в запросе, с учётом того, что данная строка выделена в гриде?? Спасибо за помощь. |
#2
|
||||
|
||||
DBGrid - только средство отображения, а реальный индекс текущей (выделенной) записи хранится в источнике (в твоём случае - TQuery).
Код:
Query.RecNo P.S. Не понял, зачем передёргивать Active, вроде для этого есть функции Edit/Post... Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj Последний раз редактировалось PhoeniX, 19.08.2010 в 00:09. |
#3
|
|||
|
|||
1. Запросы типа Update выполняются с помощью метода ExecSQL. Вызов метода Open (или "передергивание" св-ва Active) приведет к ошибке времени выполнения.
2. Как уже сказали, DBGrid только отражает текущую выборку. Все данные загружены в источник данных - TQuery, TTable, etc. У тебя есть 2 варианта. Первый: добавить либо специалбный компонент для запросов DELETE, UPDATE, INSERT, написать эти запросы и тогда можно пользоваться методами Edit, Delete, Append с последующим вызовом метода Post для фиксации изменений. Второй: выполнить изменения с помощью дополнительного компонента, а потом перечитать данные через основной источник данных. 3. Текущая строка в DBGrid соответствует текущей строке в источнике данных. Соответсвенно, значение какого-либо поля можно получить напрямую из источника данных: Код:
Query.ParambyName('id').asinteger:= mainDataSet.FieldByName('id').AsInteger; |
#4
|
|||
|
|||
Цитата:
Мда, сложно даются азы. У меня DBGrid подключен через MyQuery к MyDAtaSource. В компоненте MyQuery уже есть DELETE, UPDATE, INSERT но они у меня пусты. Их надо заполнить соответсвующими запросами? |
#5
|
||||
|
||||
Цитата:
Код:
select * from znp Код:
select * from znp left join table1 on znp.id=table1.id Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |