![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не срабатывают запросы... [D7, dBase, FoxPro]
ДмитрийБ © (2003-12-13 18:45:00)
три запроса на удаление записей составлены одинаково, но срабатывает только один
ss:="DELETE FROM sales WHERE ZAKAZ_CODE="+
"(SELECT ZAKAZ_CODE FROM bl_zakaz WHERE "+
"CUST_CODE=""+sCod+"")";
// строка получается: DELETE FROM sales WHERE ZAKAZ_CODE=(SELECT ZAKAZ_CODE FROM bl_zakaz WHERE CUST_CODE="12345678"
dMain.qrWork.SQL.Clear;
dMain.qrWork.SQL.Add(ss);
dMain.qrWork.ExecSQL; //не срабатывает!
ss:="DELETE FROM bl_zakaz WHERE CUST_CODE=""+sCod+""";
// строка получается: DELETE FROM bl_zakaz WHERE CUST_CODE="12345678"
dMain.qrWork.SQL.Clear;
dMain.qrWork.SQL.Add(ss);
dMain.qrWork.ExecSQL; //здесь срабатывает!
ss:="DELETE FROM fio WHERE CODE=""+sCod+""";
// строка получается: DELETE FROM fio WHERE CODE="12345678"
dMain.qrWork.SQL.Clear;
dMain.qrWork.SQL.Add(ss);
dMain.qrWork.ExecSQL; //не срабатывает!
Заранее спасибо!
ЮЮ (2003-12-15 03:11:00) [1]
что значит "срабатывает" ?
Количество удаленных записей смотри в dMain.qrWork.RowsAffected,
Если оно равно нулю, значит нет строк, удовлетворяющих учловию.
Попробуй так:
ss:="FROM sales WHERE ZAKAZ_CODE=" +
"(SELECT ZAKAZ_CODE FROM bl_zakaz WHERE "+
"CUST_CODE=" + QuotedStr(sCod) + ")";
// строка получается: FROM sales WHERE ZAKAZ_CODE=(SELECT ZAKAZ_CODE FROM bl_zakaz WHERE CUST_CODE="12345678"
dMain.qrWork.SQL.Text := "SELECT COUNT(*) as CNT " + ss";
dMain.qrWork.Open;
if dMain.qrWork.Fields[0].asInteger = 0 then
Application.MessageBox(ss, "Нет строк для удаления", 0)
else begin
dMain.qrWork.SQL.Text := DELETE " + ss";
Main.qrWork.ExecSQL;
Application.MessageBox(IntToStr(Main.qrWork.RowsAffected), "Удалено строк", 0)
end;