![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление текущей записи из Dataset a [D5, IB5.x]
onix © (2002-03-21 13:24:00)Доброго здоровья всем. Ув. коллеги подскажите пожалуйста решение данной проблемы. При помощи TIBQuery получаю набор данных о продажах товаров за некий период времени и связываю его с компонентом TDBGridEh. Так вот пробегая по всем записям нахожу одинаковые записи с наим.товаров и складываю кол-во проданных. Нужно, удалить из НД обработанную запись. Пытаюсь сделать Delete, а в ответ получаю "Cannot delete from dataset. (No delete query)".
Alexandr (2002-03-22 13:09:00) [1]2Fareader: вот это я ему и объясняю... Наверное непонятно.
2onix:а что по названию тяжело догадаться?
Fareader (2002-03-22 13:05:00) [2]Почему не попробовать такой вариант:
Берем Query, включаем у него кеш, подключаем к нему UpdateSQL,
удаляем все что нам нужно, а вот Apply не делаем. В таком случае локально Query этих записей видеть не будет, потому что с его точки зрения они удалены, а вот на сервере все в целости и сохранности.
onix (2002-03-22 12:59:00) [3]>Alexandr ©
Who is it ?
Alexandr (2002-03-22 12:37:00) [4]тогда уж через компонент TMemTable кажется так он называется...
onix (2002-03-22 12:28:00) [5]>Alexandr ©
Нет не кажется, весь этот "беспредел" видно на мониторе.
Послушай, а может я зря стараюсь. Прочел в книге, что это работает если select был из одной таблицы, а у меня из двух.
А вот вопрос, если проделать все это через StringGrid, можно ли затем полученный StringGrid поместить в DBGridEh чтоб распечатать ?
Alexandr (2002-03-22 11:09:00) [6]2fomstas: ему изменения в базе ненадо делать, ему локально надо.
2onix: Chached Updates включи, а вообще, тебе кажется или на самом деле так происходит
onix (2002-03-22 09:56:00) [7]>fomstas
Теперь и я не понял. Можно подробней?
fomstas (2002-03-22 09:47:00) [8]А ты делай Delete отдельным Query
а потом транзакцию RollBack; И все
onix (2002-03-22 08:51:00) [9]Мне думается, что при возникновении исключения операция Delete отменяется и никакого удаления не происходит, а соответственно и перехода на другую запись, вот программа и циклится.
Alexandr (2002-03-22 08:44:00) [10]не понял.
onix (2002-03-22 08:35:00) [11]Именно это, но найдя две одинаковые записи они бесконечно складываются.
Alexandr (2002-03-22 07:55:00) [12]почему?
в локальном датасете запись удалится, а на сервере останется. Разве не это тебе надо?
onix (2002-03-22 07:33:00) [13]>Alexandr ©
В этом случае программа просто циклится.
Alexandr (2002-03-22 06:49:00) [14]да ничего не случится : в базе останется, у тебя в гриде исчезнет
try
...
except
end
Onix (2002-03-21 14:02:00) [15]>Alexandr ©
Это как? А что произойдет с записью?
Alexandr (2002-03-21 14:00:00) [16]ну так тогда исключение это "Cannot delete from dataset. (No delete query)" просто загаси
fnatali (2002-03-21 13:51:00) [17]>Так вот пробегая по всем записям нахожу одинаковые записи с >наим.товаров и складываю кол-во проданных.
А прямо в запросе нельзя сразу сложение одинаковых товаров сделать?
select tovar,sum(kolich) from table1 group by tovar
Onix (2002-03-21 13:47:00) [18]Ee нужно удалить только из полученног НД, а не из таблицы. Мне нужно полученный НД распечатать. Для этих целей использую EhLib (по моему очень удобно.)
OlegE (2002-03-21 13:34:00) [19]Ты подумай хорошенько: нужно-ли тебе удалять обработанную запись, ее ведь не восстановишь?! И если удалять, то зачем ее обрабатывать.
Извини за сарказм, но наверное, задача сформулирована не совсем корректо.
Turalyon (2002-03-21 13:31:00) [20]У тебя в IBQuery выборка делается из одной таблицы? Если да, то можно воспользоваться IBUpdeteSQL и в нем прописать все SQL запросы к базе (вставка, удаление,...) Если выборка из разных баз, то можно завести еще один Query в котором исполнять нужные тебе запросы....