![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление записи на которой находится курсор [D6, Paradox]
Леонид © (2005-05-31 12:19:00)Вообщем такая проблема, хоть и стыдно, но не знаю как сделать или пример где посмотреть.
Имеется Grid в котором данные отображены с TQuery.
Имеется кнопка "Удалить" хочу по нажатию на кнопку удалить строку которая выделена.
В таблице есть уникальное поле RN.
Вопрос только как получить мне значение этого поля, чтобы передать затем в динамич. запрос на удаление...
Леонид (2005-05-31 16:01:00) [1]Всем спасибо ребята. Класс. Вы все отзывчивые и всем сильно мне помогли.
evvcom (2005-05-31 15:51:00) [2]А ты сделай простенькую форму с нуля с UpdateSQL и потренируйся. А потом на рабочий проект перенесешь свои навыки.
Sergey13 (2005-05-31 15:50:00) [3]2[45] Леонид (31.05.05 15:42)
Тем более я бы посоветовал оформлять свой код и свои доработки максимально изолировано от предыдущего.
Леонид (2005-05-31 15:42:00) [4]ДА это просто я не с нуля делаю. А переделываю старую прогу в которой насобиралось много недочетов...
Sergey13 (2005-05-31 15:31:00) [5]2[43] Леонид (31.05.05 15:21)
>в смысле в дизайне.
В смысле на этапе проектирования/написания проги. Поставил отдельно на форму запрос на вставку, запрос на апдейт, и, главное, отдельный запрос на селект. Проще же, особенно для начинающего. И экономия копеечная.
Леонид (2005-05-31 15:21:00) [6]Спасибо _dimka, попробую что-нибудь сделать,т.к. по правде я уже запутался.
Sergey13 - в смысле в дизайне. Если по поводу TUpdateSQL - я еще не работал с ним. Вот щас пробую и его задействовать, но пока никак...
_dimka (2005-05-31 15:16:00) [7]Леонид а почему ты не используешь DB компоненті?
Sergey13 (2005-05-31 15:12:00) [8]2[38] Леонид (31.05.05 15:05)
Если тебе трудно работать с компонентрами в рантайме, то почему бы не настроить все в дизайне. Экономишь на компонентах что ли?
_dimka (2005-05-31 15:11:00) [9]Извини не правильно понял...
> if DM.Kip.FieldByName('RN').AsInteger<>2 then
> DM.Kip.Insert
> else
> DM.Kip.Edit;
> DM.Kip.FieldByName('NomerPP').Value:=StrToInt(Edit1.text);
k:=DM.Kip.FieldByName('RN').AsInteger;
if P<>2 then
begin
DM.Kip.Insert
DM.Kip.FieldByName('NomerPP').Value:=StrToInt(Edit1.text);
end else
begin
DM.Kip.Edit;
DM.Kip.ParamByName('RN').AsInteger:=K;
end;
Post это означает завершение редактирования записи...
_dimka (2005-05-31 15:06:00) [10]ИСПОЛЬЗУЙ TUpdateSQL
procedure TGlav_f.Button1Click(Sender: TObject);
var nNomerPP, k: integer;
nNaimen, s: string;
begin
if DM.Kip.FieldByName('RN').AsInteger<>2 then
DM.Kip.Insert
else
DM.Kip.Edit;
DM.Kip.FieldByName('NomerPP').Value:=StrToInt(Edit1.text);
DM.Kip.FieldByName('Naimen').Value:=ComboBox1.Text;
DM.Kip.FieldByName('Tip').Value:=Edit2.text;
DM.Kip.FieldByName('Predel').Value:=Edit3.text;
.......
DM.Kip.Post;
Button1.Enabled:=false;
End;
Леонид (2005-05-31 15:05:00) [11]У меня в зависимости от переменной P происходит или добавление или апдейт.
Я не понял, а при чем Kip.Post.
_dimka (2005-05-31 14:59:00) [12]
> Sergey13 © (31.05.05 14:54)
> [29] Леонид (31.05.05 14:20)
> Да, хоть в insert, хоть в update
Наверно он пітаеться при insert сразу вставить и значения полей...8-)
Если так то делай так:
Kip.Insert;
Kip.FieldByName('NimerPP').AsInteger:=StrToInt(Edit1.text);
....
Kip.Post;
Леонид (2005-05-31 14:58:00) [13]Вот код, чувствую, что ужасный. Нужно сделать просто поеп побыстрее...
procedure TGlav_f.Button1Click(Sender: TObject);
var nNomerPP, k: integer;
nNaimen, s: string;
begin
K:=DM.Kip.FieldByName('RN').AsInteger;
DM.Kip.ParamByName('NomerPP').AsInteger;
DM.Kip.SQL.Clear;
if P<>2 then
begin
DM.Kip.SQL.ADD('INSERT INTO pribor (NomerPP, Naimen, Tip, Predel, NomerZ, DataPov, DataNext, Inventar, Ceh, Mesto, Prim) values(:NomerPP, :Naimen, :Tip, :Predel, :NomerZ, :DataPov, :DataNext, :Inventar, :Ceh, :Mesto, :Prim)');
DM.Kip.ParamByName('NomerPP').Value:=StrToInt(Edit1.text);
DM.Kip.ParamByName('Naimen').Value:=ComboBox1.Text;
DM.Kip.ParamByName('Tip').Value:=Edit2.text;
DM.Kip.ParamByName('Predel').Value:=Edit3.text;
DM.Kip.ParamByName('NomerZ').Value:=Edit4.text;
DM.Kip.ParamByName('DataPov').Value:=StrToDate(MaskEdit1.text);
DM.Kip.ParamByName('DataNext').Value:=StrToDate(MaskEdit2.text);
DM.Kip.ParamByName('Inventar').Value:=Edit5.text;
DM.Kip.ParamByName('Ceh').Value:=ComboBox2.text;
DM.Kip.ParamByName('Mesto').Value:=Edit6.text;
DM.Kip.ParamByName('Prim').Value:=Edit7.text;
// nNomerPP:=DM.Kip.ParamByName('NomerPP').Value;
// nNaimen:=DM.Kip.ParamByName('Naimen').Value;
end
else
begin
DM.Kip.SQL.ADD('UPDATE pribor set NomerPP=:NomerPP, Naimen=:Naimen, Tip=:Tip, Predel=:Predel, NomerZ=:NomerZ, DataPov=:DataPov, DataNext=:DataNext, Inventar=:Inventar, Ceh=:Ceh, Mesto=:Mesto, Prim=:Prim where RN=:RN');
DM.Kip.ParamByName('RN').AsInteger:=K;
if Edit1.text='' then
begin
DM.Kip.ParamByName('NomerPP').Clear;
end
else
begin
DM.Kip.ParamByName('NomerPP').Value:=StrToInt(Edit1.text);
end;
DM.Kip.ParamByName('Naimen').Value:=ComboBox1.Text;
DM.Kip.ParamByName('Tip').Value:=Edit2.text;
DM.Kip.ParamByName('Predel').Value:=Edit3.text;
DM.Kip.ParamByName('NomerZ').Value:=Edit4.text;
DM.Kip.ParamByName('DataPov').Value:=StrToDate(MaskEdit1.text);
DM.Kip.ParamByName('DataNext').Value:=StrToDate(MaskEdit2.text);
DM.Kip.ParamByName('Inventar').Value:=Edit5.text;
DM.Kip.ParamByName('Ceh').Value:=ComboBox2.text;
DM.Kip.ParamByName('Mesto').Value:=Edit6.text;
DM.Kip.ParamByName('Prim').Value:=Edit7.text;
// nNomerPP:=DM.Kip.ParamByName('NomerPP').Value;
// nNaimen:=DM.Kip.ParamByName('Naimen').Value;
end;
DM.Kip.ExecSQL;
DM.Kip.Active:=false;
DM.Kip.SQL.Clear;
DM.Kip.SQL.ADD('select * from pribor order by NomerPP, Naimen');
DM.Kip.Active:=true;
// DM.Kip.Locate('NomerPP',nNomerPP,[loPartialKey]);
// DM.Kip.Locate('Naimen',nNaimen,[loPartialKey]);
Button1.Enabled:=false;
end;
Sergey13 (2005-05-31 14:54:00) [14]2[34] _dimka (31.05.05 14:51)
>Я что-то не понял а зачем тебе параметр при insertе?
А там Insert? У него что один запрос вообще на ФСЕ. 8-)
_dimka (2005-05-31 14:51:00) [15]
> Леонид
Я что-то не понял а зачем тебе параметр при insertе?
Sergey13 (2005-05-31 14:46:00) [16]2[31] Леонид (31.05.05 14:32)
Не особо понял. Но попробуй тогда определять тип параметра перд присваиванием явно.
Виталий Панасенко (2005-05-31 14:38:00) [17]А в GRid откуда данные берутся для показа ?
Леонид (2005-05-31 14:32:00) [18]Это написано до строки и даже написал после
DM.Kip.ParamByName('NomerPP').Clear
Sergey13 (2005-05-31 14:25:00) [19]2[29] Леонид (31.05.05 14:20)
Ну дык напиши
DM.Kip.ParamByName('NomerPP').asInteger
Леонид (2005-05-31 14:20:00) [20]Да, хоть в insert, хоть в update
Не работает - ругается типа параметр не определен. Если ставишь например так
DM.Kip.ParamByName('NomerPP').Value:=0
все нормально