Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.07.2010, 18:25   #1
-=pasha=-
Пользователь
 
Регистрация: 22.06.2010
Сообщений: 41
По умолчанию Редактирование текущей записи Dbgrid

Добры вечер. Необходимо написать обработку событий на кнопку. Нажимаю на кнопку редактирования и редактирую текущую запись.. Как это сделать?
-=pasha=- вне форума Ответить с цитированием
Старый 14.07.2010, 04:38   #2
igh0st
Форумчанин
 
Аватар для igh0st
 
Регистрация: 05.07.2010
Сообщений: 136
По умолчанию

Если хочешь войти в режим редактирования текущей записи, то
Код:
Table1.Edit;
igh0st вне форума Ответить с цитированием
Старый 14.07.2010, 05:22   #3
-=pasha=-
Пользователь
 
Регистрация: 22.06.2010
Сообщений: 41
По умолчанию

Я не использую Table. Я использую query. Ну в общем ситуация примерно следующая... Имеется 2 формы на одной dbgrid и пару кнопочек(редактировать добавить).. На второй несколько dbedit И кнопки сохранить и отмена. Вот что мне нужно... Мне нужно нажать кнопочку редактировать-программа переходит на 2 форму с едитами там я изменяю запись нажимаю сохранить... Возвращаюсь на первую форму, а там уже обновленная строка..
-=pasha=- вне форума Ответить с цитированием
Старый 14.07.2010, 06:22   #4
N!ckeL
Форумчанин
 
Регистрация: 29.03.2008
Сообщений: 300
По умолчанию

Цитата:
Я не использую Table. Я использую query. Ну в общем ситуация примерно следующая... Имеется 2 формы на одной dbgrid и пару кнопочек(редактировать добавить).. На второй несколько dbedit И кнопки сохранить и отмена. Вот что мне нужно... Мне нужно нажать кнопочку редактировать-программа переходит на 2 форму с едитами там я изменяю запись нажимаю сохранить... Возвращаюсь на первую форму, а там уже обновленная строка..
Ключевое поле в таблице есть? Если да то можно сделать SQL запрос для обновления поля вида: UPDATE table SET pole1='value' WHERE id=n; а потом
второй SQL запрос для отображения результата - SELECT * FROM table;
Карп преодолевший водопад становится драконом.
N!ckeL вне форума Ответить с цитированием
Старый 14.07.2010, 06:34   #5
Korben5E
Форумчанин
 
Аватар для Korben5E
 
Регистрация: 13.07.2010
Сообщений: 346
По умолчанию

Цитата:
Сообщение от -=pasha=- Посмотреть сообщение
Я не использую Table. Я использую query. Ну в общем ситуация примерно следующая... Имеется 2 формы на одной dbgrid и пару кнопочек(редактировать добавить).. На второй несколько dbedit И кнопки сохранить и отмена. Вот что мне нужно... Мне нужно нажать кнопочку редактировать-программа переходит на 2 форму с едитами там я изменяю запись нажимаю сохранить... Возвращаюсь на первую форму, а там уже обновленная строка..
http://programmersforum.ru/showthrea...=107250&page=2

мой последний пост
Non est culpa vin, sed culpa bibentis
Korben5E вне форума Ответить с цитированием
Старый 14.07.2010, 07:58   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

если для редактирования используются DB компоненты
то можно подключится к тому набору данных (поля должны быть настроены)
Код:
form1.ADOQuery1.Edit;
form2.Datasource1.DataSet:=form1.ADOQuery1;
if form2.Showmodal=mrok then
  form1.Adoquery1.Post
else
 form1.AdoQuery1.Cancel;
но SQL лучше и надежней
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 14.07.2010 в 08:00.
evg_m вне форума Ответить с цитированием
Старый 14.07.2010, 08:16   #7
-=pasha=-
Пользователь
 
Регистрация: 22.06.2010
Сообщений: 41
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Код:
if form2.Showmodal=mrok then ....
Расшифруй пожалуйста эту запись.
-=pasha=- вне форума Ответить с цитированием
Старый 14.07.2010, 09:33   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Расшифруй пожалуйста эту запись.
В основном трактуется так:
Если открытая модальная форма была закрыта с параметром mrok, а не по нажатию на крестик или не по ALT+F4 то...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.07.2010, 09:42   #9
-=pasha=-
Пользователь
 
Регистрация: 22.06.2010
Сообщений: 41
По умолчанию

Всем большое спасибо, добился нужного результата.
-=pasha=- вне форума Ответить с цитированием
Старый 19.02.2013, 03:16   #10
Bel_Danil
Новичок
Джуниор
 
Регистрация: 14.02.2013
Сообщений: 1
По умолчанию

Доброго времени суток, у меня такой вопрос, есть DBGrid на Form1, и есть Form2 где находятся поля внесения данных, на Form1 находятся три кнопки добавить, удалить и редактировать, я смог сделать, чтоб он добавлял и удалял, но не могу сделать так, чтоб редактировал, а вернее, чтоб при выделение какой либо строки в DBGrid и нажатии на кнопку редактировать появлялась Form2 с данными выделенной строки. Читал это пост, так и не понял, для наглядности могу привести год Form1 и Form2, и скриншоты.
Спасибо.

Код:
unit1

var
  Form1: TForm1;
  FNew: Boolean;

implementation

uses unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  FNew := true;
  form2.show;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  FNew := false;
  form2.show;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  try
    with IBQuery2 do
    begin
      if FNew then
        SQL.Text := 'delete from list_phones where id= ' +
          IBQuery1.FieldByName('ID').AsString;
      transaction.StartTransaction;
      ExecSQL;
      transaction.Commit;
      transaction.Active := false;
    end;
    IBQuery1.Close;
    IBQuery1.Open;
  except
    on E: Exception do
    begin
      if IBQuery2.Active then
        IBQuery2.transaction.Rollback;
      Application.MessageBox(PChar(E.Message), 'Ошибка!', MB_ICONERROR);
    end;

  end;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  Form1.Close;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  IBQuery1.Close;
  IBDatabase1.Connected := false;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  FIniFile: TIniFile;
begin
  try
    FIniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) +
      'config.ini');
    try
      IBDatabase1.DatabaseName := FIniFile.ReadString('Base', 'Path', '');
    finally
      FIniFile.Free;
    end;
    IBDatabase1.Connected := true;
    with IBQuery1 do
    begin
      SQL.Text :=
        'select * from list_phones order by surname, fname, patronymic';
      Open;
    end;
  except
    on E: Exception do
    begin
      Application.MessageBox(PChar(E.Message), 'Ошибка!', MB_ICONERROR);
      Halt;
    end;
  end;
end;

end.
Код:
unit2

var
  Form2: TForm2;


implementation
uses unit1;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
  try
    with Form1.IBQuery2 do
    begin
      if FNew then
        SQL.Text := 'execute procedure proc_list_phones(-1, ''' + Edit1.Text +
          ''', ''' + Edit2.Text + ''', ''' + Edit3.Text + ''', ' +
          Edit4.Text + ')'
      else
          SQL.Text := 'execute procedure proc_list_phones(' + Form1.IBQuery1.FieldByName
          ('ID').AsString + ', ''' + Edit1.Text + ''', ''' + Edit2.Text +
          ''', ''' + Edit3.Text + ''', ' + Edit4.Text + ')';
      transaction.StartTransaction;
      ExecSQL;
      transaction.Commit;
      transaction.Active := false;
    end;
    Form1.IBQuery1.Close;
    Form1.IBQuery1.Open;
    form2.Close;
  {  form2.Visible :=false; //делаем не видимой форму         }
    form1.show; //открываем главную форму
  except
    on E: Exception do
    begin
      if Form1.IBQuery2.Active then
        Form1.IBQuery2.transaction.Rollback;
      Application.MessageBox(PChar(E.Message), 'Ошибка!', MB_ICONERROR);

    end;

  end;

end;

procedure TForm2.Button2Click(Sender: TObject);
begin
form2.Close;
end;

end.
Изображения
Тип файла: jpg 1.jpg (36.8 Кб, 340 просмотров)
Тип файла: jpg 2.jpg (130.3 Кб, 303 просмотров)
Bel_Danil вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление текущей записи Ado palochka БД в Delphi 8 20.05.2010 11:42
Удаление текущей записи из файла Proger_1 Общие вопросы Delphi 4 15.05.2010 23:35
Номер текущей записи Streetmagic БД в Delphi 5 25.12.2009 07:43
Цвет текущей строки в DBGrid reiftd C++ Builder 1 29.10.2009 11:10
Редактирование выделой записи Droid БД в Delphi 17 06.07.2009 16:32