Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TADOQuery + Access + Delete


GlowSolnce ©   (2009-09-16 21:45:00) 

Всем привет!

Столкнулась с проблемой удаления записей из таблицы.
Если в отборе where параметр, то удаления записи не происходит(ошибок выполнения не выдается).

var
 ADOQDel:TADOQuery;
 SitesID:integer;
begin
 ADOQDel:=TADOQuery.Create(self);
 ADOQDel.Connection:=ADOMod.ADOConnection1;
 SitesID:=DBGSites.DataSource.DataSet.FieldByName('SitesID').AsInteger;
 with ADOQDel.Parameters.AddParameter do
 begin
    Name:='SitesID';
    DataType:=ftInteger;
    Direction:=pdInput;
    Value:=SitesID;
  end;
 ADOQDel.SQL.Clear;
 ADOQDel.SQL.Add('delete');
 ADOQDel.SQL.Add('from tSites');
 ADOQDel.SQL.Add('where SitesID = :SitesID');
 ADOQDel.ExecSQL;
 ADOQDel.Close;

А если эту строчку
ADOQDel.SQL.Add('where SitesID = :SitesID');
заменяю на
ADOQDel.SQL.Add('where SitesID = 5');
т.е. сразу прописываю ID, то удаление замечательно проходит.
Если важно, то tSites.SitesID в аксесе определен как счетчик.

Проверку параметра перед выполнением ExecSQL производила, параметр содержит верное значение.

В чем может быть проблема?
Какое-то странное поведение.


sniknik   (2009-09-17 11:04:00) [1]

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

а вот как писать нормально, там есть.


Amoeba   (2009-09-17 10:59:00) [2]


> GlowSolnce   (17.09.09 10:17) [3]
>
> Вы имеете ввиду что вместо TADOQuery нужно использовать
> TADOCommand?
> И такое поведенеие для TADOQuery в порядке вещей?

Нет, TADOQuery здесь не при чем. Не надо пенять на зеркало.


GlowSolnce   (2009-09-17 10:17:00) [3]

Вы имеете ввиду что вместо TADOQuery нужно использовать TADOCommand?
И такое поведенеие для TADOQuery в порядке вещей?


sniknik   (2009-09-16 22:13:00) [4]

> Какое-то странное поведение.
это у тебя странное поведение, после разбора, и примеров на те же грабли...

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1252853537&n=1

> В чем может быть проблема?
похоже, что в зеркале.


GlowSolnce   (2009-09-16 21:51:00) [5]

Даже так работает
ADOQDel.SQL.Add('where SitesID = '+InttoStr(SitesID));

Вопрос остается, почему не работает через параметр???


Наверх

Титульная страница Поиск, карта сайта Написать письмо