Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Удаление записи на которой находится курсор [D6, Paradox]


Страницы:   1 2 3

Леонид ©   (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

все нормально


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо