Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.19;
Скачать: CL | DM;

Вниз

удаление записи   Найти похожие ветки 

 
МАХНО   (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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.025 c
8-1095663271
AndersFiend
2004-09-20 10:54
2004.12.19
Компонент, позволяющий рисовать линии со стрелкой на canvas


14-1101819567
_iceman_
2004-11-30 15:59
2004.12.19
Память целиковая или целая


1-1102081229
Muhan
2004-12-03 16:40
2004.12.19
Можно ли в Stringgrid вставить картинку?


14-1101823807
Jeer
2004-11-30 17:10
2004.12.19
Поэтическая Windows:)


3-1101203318
slaga
2004-11-23 12:48
2004.12.19
IBStoredProc проблемы с обновлением параметров