![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
удаление записи [D7, dBase, FoxPro]
МАХНО © (2004-11-21 10:44:00)Привет.
Использую Query, DBGrid, DataSource. Требуется удалить запись, на которой стоит указатель при помощи SQL.
Delete from base - удаляет все записи. А как задать критерий - не знаю :(.
Anatoly Podgoretsky (2004-11-21 13:42:00) [1]МАХНО (21.11.04 12:38) [7]
Ты знаешь плохо, кроме того кто сказал, что это обязательно организовывать средствами базы, а не своими логическими.
Anatoly Podgoretsky (2004-11-21 13:40:00) [2]МАХНО (21.11.04 12:24) [5]
Query1.Delete;
удалит именно одну запись, а у тебя удалит всех Ивановых
Shama_n (2004-11-21 13:17:00) [3]Лучше так:
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;
Иначе можно будет сосздать запись которую обычные "Смертные" уже не смогут удалить :)
МАХНО (2004-11-21 12:38:00) [4]но насколько я знаю в dBase нельзя задать ключевое поле, только индексы. Значит при создании баз на SQL сервере нельзя использовать dBase? тогда что лучше использовать?
sniknik (2004-11-21 12:26:00) [5]можно и так
Delete from base WHERE NAME="Иванов"
но ключевое поле во многих случаях просто незаменимо (в базах на SQL серверах). с локальной таблицей можно без особых ограничений обойтись (не пользоваться sql).
МАХНО (2004-11-21 12:24:00) [6]решил :)
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;
может есть другие способы?
МАХНО (2004-11-21 11:53:00) [7]все равно не понял:(
например, у меня в таблице есть поле NAME. Пользователь в DBGridе выбрал строчку "Иванов" и нажал кнопку "Удалить".
Как же мне сформировать правильно запрос, чтобы удалилась именно эта строчка? Таблица dBase ( base.dbf). Нужно ввести в таблицу специальное поле ID? или как?
sniknik (2004-11-21 11:40:00) [8]индетификатор может быть любой, или несколько, единственное он(поле) должен существовать в таблице.
МАХНО (2004-11-21 11:34:00) [9]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:30:00) [10]Delete from base WHERE ID=1
(все где ID 1)