Форум: "Базы";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
Внизудаление записи Найти похожие ветки
← →
МАХНО (2004-11-21 10:44) [0]Привет.
Использую Query, DBGrid, DataSource. Требуется удалить запись, на которой стоит указатель при помощи SQL.
Delete from base - удаляет все записи. А как задать критерий - не знаю :(.
← →
sniknik © (2004-11-21 11:30) [1]Delete from base WHERE ID=1
(все где ID 1)
← →
МАХНО (2004-11-21 11:34) [2]Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add("DELETE from base WHERE id=1");
Query1.ExecSQL;
ругается.
Пишет Invalid field name. id.
← →
sniknik © (2004-11-21 11:40) [3]индетификатор может быть любой, или несколько, единственное он(поле) должен существовать в таблице.
← →
МАХНО (2004-11-21 11:53) [4]все равно не понял:(
например, у меня в таблице есть поле NAME. Пользователь в DBGridе выбрал строчку "Иванов" и нажал кнопку "Удалить".
Как же мне сформировать правильно запрос, чтобы удалилась именно эта строчка? Таблица dBase ( base.dbf). Нужно ввести в таблицу специальное поле ID? или как?
← →
МАХНО (2004-11-21 12:24) [5]решил :)
if MessageDlg("Удалить эту запись?", mtConfirmation,
[mbCancel, mbYes], 0)=mrYes then begin
s:=Query1.FieldByName("NAME").AsString;
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add("DELETE from base WHERE NAME=""+s+""");
Query1.ExecSQL;
может есть другие способы?
← →
sniknik © (2004-11-21 12:26) [6]можно и так
Delete from base WHERE NAME="Иванов"
но ключевое поле во многих случаях просто незаменимо (в базах на SQL серверах). с локальной таблицей можно без особых ограничений обойтись (не пользоваться sql).
← →
МАХНО (2004-11-21 12:38) [7]но насколько я знаю в dBase нельзя задать ключевое поле, только индексы. Значит при создании баз на SQL сервере нельзя использовать dBase? тогда что лучше использовать?
← →
Shama_n © (2004-11-21 13:17) [8]Лучше так:
if MessageDlg("Удалить эту запись?", mtConfirmation,
[mbCancel, mbYes], 0)=mrYes
then begin
S:=Query1.FieldByName("NAME").AsString;
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add("DELETE from base WHERE NAME= :S");
Query1.ParamByName("S").AsString := S;
Query1.ExecSQL;
end;
Иначе можно будет сосздать запись которую обычные "Смертные" уже не смогут удалить :)
← →
Anatoly Podgoretsky © (2004-11-21 13:40) [9]МАХНО (21.11.04 12:24) [5]
Query1.Delete;
удалит именно одну запись, а у тебя удалит всех Ивановых
← →
Anatoly Podgoretsky © (2004-11-21 13:42) [10]МАХНО (21.11.04 12:38) [7]
Ты знаешь плохо, кроме того кто сказал, что это обязательно организовывать средствами базы, а не своими логическими.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.042 c