![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление записи из выборки (из query) [D3, D5, dBase, FoxPro]
Fishka © (2002-12-25 11:17:00)В DBCRTLGrid-e отображается выборка записей (query) из Table. Как удалить по кнопке запись из query? Из Table запись можно удалить, а при удалении из query выдается сообщение, что таблица только для чтения (Query.RequestLive:=True;).
Как удалить из QUERY?
ЮЮ (2002-12-27 07:07:00) [1]>Fishka (25.12.02 17:02)
предварительным позиционированием на нее и Query2.delete из выборки и TQuery + ExecSQL из таблицы, из которой выборка.
Все удаляется, но на экране не обновляется.
И не удалится, без переоткрытия. Для этого нужен компонент TUpdateSQL, а не просто TQuery c запросами обновления :-)
petr_v_a (2002-12-26 18:42:00) [2]Update Failed - значит, RowsAffected соотв. UpdateQuery не равно единице
> Lady D © (25.12.02 16:58)
Уж если Вам не лень отвечать на вопрос, писанину надо проверять внимательно
Fishka (2002-12-25 17:02:00) [3]предварительным позиционированием на нее и Query2.delete из выборки и TQuery + ExecSQL из таблицы, из которой выборка.
Все удаляется, но на экране не обновляется.
Lady D (2002-12-25 16:58:00) [4]Тьфу.
Мой вариант верен, и он давно работает. А вот Вашу писанину мне некогда проверять достаточно внимательно и я ее просто копирую. Поэтому и получаются такие ляпы.
Вам нужно уже решить как будет удаляться запись: либо предварительным позиционированием на нее и Query2.delete, либо в отдельном TQuery + ExecSQL и Query2.Refresh.
Fishka (2002-12-25 16:36:00) [5]Как это - Query2.FieldByName("pole1").AsString, ведь Query2 д.б. закрыто перед Clear, но тогда пропадет значение. А нужно удалить запись со значением Query2.FieldByName("pole1").AsString.
Что-то невнятно получилось.........
А в Query2 совсем другой запрос, результаты которого мы видим в DBCTRLGrid.
Так что Ваш вариант неверен.
Lady D (2002-12-25 16:22:00) [6]Для такого случая:
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:11:00) [7]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;
Больше ничего в программе нет. Что не так?
mrcat (2002-12-25 15:56:00) [8]Код показывай
Fishka (2002-12-25 14:12:00) [9]mrcat ©
Query.RequestLive:=False;
Query.CachedUpdate:=true;
На форме ничего не обновляется.
Lady D ©
Query.CachedUpdates := true;
Query.ApplyUpdates;
На форме ничего не обновляется.
Что еще придумать? Где у меня ошибка?
Lady D (2002-12-25 13:34:00) [10]CachedUpdates := false;
или
CachedUpdates := true; ... Query.ApplyUpdates;
mrcat (2002-12-25 13:33:00) [11]в false, CachedUpdate = true
mrcat (2002-12-25 13:29:00) [12]Fishka
Если все было сделано правильно - удаляется и обновляется без Refresh"а
В TQuery RequestLive = true? Его надо выставить
Fishka (2002-12-25 12:44:00) [13]mrcat ©
Спасибо. Вроде удаляется, только на экране ничего не обновляется.
Если поставить Query.AutoRefresh:=True;, то вообще ругается при выполнении, а Refresh не помогает.
Как правильно обновить на экране Query после удаления?
(Аппетит приходит во время еды - к сожалению...........)
mrcat (2002-12-25 12:04:00) [14]опечатка: Связываешь "TUpdateSQL" с файлом базы читать "TQuery"
mrcat (2002-12-25 12:03:00) [15]1. Связываешь TUpdateSQL с файлом базы
2. Generate SQL в TUpdateSQL
3. TQuery.UpdateObject присваиваешь TUpdateSQL
После чего: удаление, добавление, редактирование как и везде.
Fishka (2002-12-25 11:48:00) [16]Спасибо. Пишу следующее:
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.
Подскажите, где ошибки?
Lady D (2002-12-25 11:21:00) [17]TQuery + TUpdateSQL