Форум: "Базы";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];
ВнизНе происходит удаление в базе данных ACCESS Найти похожие ветки
← →
Iehbr (2006-06-02 15:31) [0]Выполняю такой код:
ADOQuery1.Active := False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Append("DELETE * FROM Zayavki WHERE No = " + StringGrid1.Cells[0,StringGrid1.Row]);
ADOQuery1.ExecSQL;
Но ExecSQL выдает постоянно значение 0.
Не могу понять причину. Запись, которую я пытаюсь удалить существует и условию WHERE соответствует.
HELP....
← →
Sergey13 © (2006-06-02 15:39) [1]>Но ExecSQL выдает постоянно значение 0.
Это как?
← →
Iehbr (2006-06-02 15:46) [2]
> Sergey13 © (02.06.06 15:39) [1]
> >Но ExecSQL выдает постоянно значение 0.
>
> Это как?
var i : Integer;
...
i:=ADOQuery1.ExecSQL;
...
i всегда равна 0 - то бишь ничего не удалила, насколько я понимаю.
из справки: ExecSQL returns an integer value reflecting the number of rows affected by the executed SQL statement.
← →
Desdechado © (2006-06-02 15:51) [3]> DELETE * FROM Zayavki
странный синтаксис какой-то
← →
Iehbr (2006-06-02 15:54) [4]Почему странный? Я в SQL слабоват, подскажите чего не так?
← →
Iehbr (2006-06-02 15:58) [5]Вот еще выдержка из хэлпа по JetSQL:
Синтаксис
DELETE [таблица.*]
FROM таблица
WHERE условиеОтбора
Вроде бы и у меня синтаксис такой же.
← →
Desdechado © (2006-06-02 15:59) [6]в стандарте никаких звездочек в DELETE не предусмотрено
может, ты давишь ошибку и потому ответ 0 ?
← →
Iehbr (2006-06-02 16:03) [7]В приведенном в справке примере всё сделано также:
Sub DeleteX()
Dim dbs As Database, rst As Recordset
" Укажите в следующей строке путь к базе данных "Борей"
" на вашем компьютере.
Set dbs = OpenDatabase("Борей.mdb")
" Удаляет записи о всех сотрудниках с должностью "Стажер".
dbs.Execute "DELETE * FROM " _
& "Сотрудники WHERE Должность = "Стажер";"
dbs.Close
End Sub
← →
Iehbr (2006-06-02 16:07) [8]Такое чувство, что запрос на удаление не находит записи, соответствующей условию отбора. Глюк JetSQL?
← →
sniknik © (2006-06-02 16:12) [9]access не стандарт... понимает и так и так, а указание DELETE [таблица.*] FROM ... применяется для указания из какой таблицы удалять в сложных связанных (по join к примеру) запросах на удаление.
> Глюк JetSQL?
да, возможно, гдето на 0,02%... 99.98% за другую возможность...
← →
Desdechado © (2006-06-02 16:12) [10]может, ты ее уже удалил, а теперь пытаешься доудалить :?
← →
Iehbr (2006-06-02 16:12) [11]Ошибок я не давлю, вот весь кусок кода:
if MessageDlg("Вы действительно хотите удалить заявку?",
mtWarning, [mbYes, mbNo], 0) = mrYes then
begin
if StringGrid1.Cells[2,StringGrid1.Row] = WhoIsYou then
begin
ADOQuery1.Active := False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Append("DELETE * FROM Zayavki WHERE No = " + StringGrid1.Cells[0,StringGrid1.Row]+";");
ADOQuery1.ExecSQL;
//GetDataFromMyBase;
end else ShowMessage("Вы не можете удалить заявку, поданную не вами!");
end;
← →
Iehbr (2006-06-02 16:18) [12]
> Desdechado © (02.06.06 16:12) [10]
> может, ты ее уже удалил, а теперь пытаешься доудалить :?
>
Нет, не удалил. :)
Делаю запрос на выборку SELECT * FROM ...
И вот она, передо мной...
Может быть эта запись - запись-МкКлауд? (неубиваемая).
← →
Desdechado © (2006-06-02 16:24) [13]Остается тогда неверно передаваемый код.
Если поле NO - символьное, то код должен быть в кавычках.
Иначе код 001, засунутый в такой запрос, интерпретируется как число, а потом неявно приводится к строке, отрезая лидирующие нули
← →
Iehbr (2006-06-02 16:28) [14]Поле No - численный autoincrement.
← →
Iehbr (2006-06-02 16:31) [15]Может быть хоть какие-нибудь предположения есть?
← →
saxon (2006-06-02 16:49) [16]Ну скопируй полученную команду из дебагера и попробуй ее в access"е.
Посмотри что произойдет.
← →
Iehbr (2006-06-02 17:04) [17]
> saxon (02.06.06 16:49) [16]
> Ну скопируй полученную команду из дебагера и попробуй ее
> в access"е.
> Посмотри что произойдет.
Спасибо. Чего-ж я раньше об этом не подумал.
Вот рабочий код:ADOQuery1.Active := False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Append("DELETE * FROM Zayavki WHERE Zayavki.[No] = " + StringGrid1.Cells[0,StringGrid1.Row]+";");
ADOQuery1.ExecSQL;
Всем спасибо.
← →
saxon (2006-06-02 17:06) [18]Не в тему :
Из [11],
проверку
> if StringGrid1.Cells[2,StringGrid1.Row] = WhoIsYou then
надобы первой делать, а уж потом запрос на подтверждение юзеру.
Вот так и пишут Windows :)
← →
Iehbr (2006-06-02 17:40) [19]
> Вот так и пишут Windows :)
А как вы догадались, что я Windows пишу ??? :)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.011 c