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

Вниз

Удаление записи из выборки (из query)   Найти похожие ветки 

 
Fishka   (2002-12-25 11:17) [0]

В DBCRTLGrid-e отображается выборка записей (query) из Table. Как удалить по кнопке запись из query? Из Table запись можно удалить, а при удалении из query выдается сообщение, что таблица только для чтения (Query.RequestLive:=True;).
Как удалить из QUERY?


 
Lady D ©   (2002-12-25 11:21) [1]

TQuery + TUpdateSQL


 
Fishka   (2002-12-25 11:48) [2]

Спасибо. Пишу следующее:

Upd_Q : TUpdateSQL

Upd_Q.DataSet:=Query2;
Upd_Q.DeleteSQL.Clear;
Upd_Q.DeleteSQL.Add("delete from "aa.dbf" where pole1=5");
Upd_Q.ExecSQL(ukDelete);

Ошибка при выполнении: Update failed.
Подскажите, где ошибки?


 
mrcat ©   (2002-12-25 12:03) [3]

1. Связываешь TUpdateSQL с файлом базы
2. Generate SQL в TUpdateSQL
3. TQuery.UpdateObject присваиваешь TUpdateSQL

После чего: удаление, добавление, редактирование как и везде.


 
mrcat ©   (2002-12-25 12:04) [4]

опечатка: Связываешь "TUpdateSQL" с файлом базы читать "TQuery"


 
Fishka   (2002-12-25 12:44) [5]

mrcat ©
Спасибо. Вроде удаляется, только на экране ничего не обновляется.
Если поставить Query.AutoRefresh:=True;, то вообще ругается при выполнении, а Refresh не помогает.
Как правильно обновить на экране Query после удаления?
(Аппетит приходит во время еды - к сожалению...........)


 
mrcat ©   (2002-12-25 13:29) [6]

Fishka
Если все было сделано правильно - удаляется и обновляется без Refresh"а
В TQuery RequestLive = true ? Его надо выставить


 
mrcat ©   (2002-12-25 13:33) [7]

в false, CachedUpdate = true



 
Lady D ©   (2002-12-25 13:34) [8]

CachedUpdates := false;
или
CachedUpdates := true; ... Query.ApplyUpdates;


 
Fishka   (2002-12-25 14:12) [9]

mrcat ©
Query.RequestLive:=False;
Query.CachedUpdate:=true;
На форме ничего не обновляется.

Lady D ©
Query.CachedUpdates := true;
Query.ApplyUpdates;
На форме ничего не обновляется.

Что еще придумать? Где у меня ошибка?


 
mrcat ©   (2002-12-25 15:56) [10]

Код показывай


 
Fishka   (2002-12-25 16:11) [11]

Query2.RequestLive:=False;
Query2.CachedUpdate:=true;
Query2.UpdateObject:=Upd_Q;
Upd_Q.DataSet:=Query2;
Upd_Q.DeleteSQL.Clear;
Upd_Q.DeleteSQL.Add("delete from "aa.dbf"");
Upd_Q.DeleteSQL.Add("where pole1="+Query2.FieldByName("pole1").AsString);
Upd_Q.ExecSQL(ukDelete);
Query2.ApplyUpdates;

Больше ничего в программе нет. Что не так?


 
Lady D ©   (2002-12-25 16:22) [12]

Для такого случая:

Query2.SQL.Clear;
Query2.SQL.Add("delete from "aa.dbf"");
Query2.SQL.Add("where pole1="+Query2.FieldByName("pole1").AsString);
Query2.ExecSQL;


 
Fishka   (2002-12-25 16:36) [13]

Как это - Query2.FieldByName("pole1").AsString, ведь Query2 д.б. закрыто перед Clear, но тогда пропадет значение. А нужно удалить запись со значением Query2.FieldByName("pole1").AsString.
Что-то невнятно получилось.........
А в Query2 совсем другой запрос, результаты которого мы видим в DBCTRLGrid.
Так что Ваш вариант неверен.


 
Lady D ©   (2002-12-25 16:58) [14]

Тьфу.
Мой вариант верен, и он давно работает. А вот Вашу писанину мне некогда проверять достаточно внимательно и я ее просто копирую. Поэтому и получаются такие ляпы.
Вам нужно уже решить как будет удаляться запись: либо предварительным позиционированием на нее и Query2.delete, либо в отдельном TQuery + ExecSQL и Query2.Refresh.


 
Fishka   (2002-12-25 17:02) [15]

предварительным позиционированием на нее и Query2.delete из выборки и TQuery + ExecSQL из таблицы, из которой выборка.
Все удаляется, но на экране не обновляется.


 
petr_v_a ©   (2002-12-26 18:42) [16]

Update Failed - значит, RowsAffected соотв. UpdateQuery не равно единице

> Lady D © (25.12.02 16:58)
Уж если Вам не лень отвечать на вопрос, писанину надо проверять внимательно


 
ЮЮ ©   (2002-12-27 07:07) [17]

>Fishka (25.12.02 17:02)
предварительным позиционированием на нее и Query2.delete из выборки и TQuery + ExecSQL из таблицы, из которой выборка.
Все удаляется, но на экране не обновляется.

И не удалится, без переоткрытия. Для этого нужен компонент TUpdateSQL, а не просто TQuery c запросами обновления :-)



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

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

Наверх




Память: 0.5 MB
Время: 0.024 c
1-62598
UserL
2003-01-09 08:32
2003.01.20
Вот такая не задача... Помогите


1-62496
Palladin
2003-01-09 16:22
2003.01.20
вызов метода потока


1-62611
bambina
2003-01-09 12:39
2003.01.20
prosto HELP!!!!!!!!!!!!!!!


1-62575
don_dampster
2003-01-11 16:29
2003.01.20
Print Screen


14-62787
spb
2002-12-31 07:37
2003.01.20
Всем, кто в этот день на работе