Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.08.2010, 22:15
gebs gebs вне форума
Прохожий
 
Регистрация: 03.08.2010
Сообщения: 48
Репутация: 10
По умолчанию DbGrid - выделеная строка и передача данных в форму для редактирования

Привет всем. Смысл простой - истина в статусе =).
Есть Dbgrid, есть выделенная строка, есть форма, которая запускается при нажатии на кнопку редактировать в модальном режиме, на форме пока пусто

Есть функия:
Код:
function dbstring:string;
var 
i:integer;
begin
result:='';
for i:=0 to DBGrid1.DataSource.DataSet.FieldCount-1 do
result:=result+DBGrid.DataSource.DataSet.Fields[i].AsString+';';
end;

Как мне полученные значение занести в форму редактирования? Спасибо

Последний раз редактировалось gebs, 03.08.2010 в 22:17.
Ответить с цитированием
  #2  
Старый 04.08.2010, 00:45
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Ну скорее всего на форме редактирования нужен компонент TMemo и тогда присвоение будет выглядеть примерно так:
Код:
 
Form2.Memo1.Text := dbstring;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 04.08.2010, 00:54
gebs gebs вне форума
Прохожий
 
Регистрация: 03.08.2010
Сообщения: 48
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
Ну скорее всего на форме редактирования нужен компонент TMemo и тогда присвоение будет выглядеть примерно так:
Код:
 
Form2.Memo1.Text := dbstring;

Спасибо, но видимо уже разабрадся сам:

Код:
procedure TForm1.N7Click(Sender: TObject);
begin
Form_redznn.Edit1.Text := DBGridEh_znn.DataSource.DataSet.FieldByName('name').AsString;
Form_redznn.DBLookupComboboxEh1.Text := DBGridEh_znn.DataSource.DataSet.FieldByName('addr').AsString;
Form_redznn.Edit2.Text := DBGridEh_znn.DataSource.DataSet.FieldByName('dom').AsString;
Form_redznn.Edit3.Text := DBGridEh_znn.DataSource.DataSet.FieldByName('kv').AsString;
Form_redznn.Edit4.Text := DBGridEh_znn.DataSource.DataSet.FieldByName('tel1').AsString;
Form_redznn.Edit5.Text := DBGridEh_znn.DataSource.DataSet.FieldByName('tel2').AsString;
Form_redznn.DBLookupComboboxEh2.Text := DBGridEh_znn.DataSource.DataSet.FieldByName('harneispr').AsString;
Form_redznn.Edit6.Text := DBGridEh_znn.DataSource.DataSet.FieldByName('ktoprinyal').AsString;
Form_redznn.DateTimePicker1.DateTime := DBGridEh_znn.DataSource.DataSet.FieldByName('datapr').AsDatetime;
Form_redznn.AdvDBDateTimePicker2.DateTime := DBGridEh_znn.DataSource.DataSet.FieldByName('datapl').AsDatetime;

Form_redznn.Showmodal;
end;

Пока тестирую.
Ответить с цитированием
  #4  
Старый 04.08.2010, 01:10
lmikle lmikle сейчас на форуме
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ять!!! А зачем придуманы DB Aware компоненты???
Тебе надо использовать соотв. TDBEdit, которым просто установить нужный DataSource... выделенная строка в гриде - это текущая строка в источнике данных. Дальше Дельфи все за тебя сделает сама...
Ответить с цитированием
  #5  
Старый 04.08.2010, 01:52
gebs gebs вне форума
Прохожий
 
Регистрация: 03.08.2010
Сообщения: 48
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Ять!!! А зачем придуманы DB Aware компоненты???
Тебе надо использовать соотв. TDBEdit, которым просто установить нужный DataSource... выделенная строка в гриде - это текущая строка в источнике данных. Дальше Дельфи все за тебя сделает сама...

Примерно понял. Спасибо.
Ответить с цитированием
  #6  
Старый 04.08.2010, 08:51
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

А на кой вы тогда функцию показали, если вам просто редактировать текущую запись надо? Себя и меня запутали.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #7  
Старый 08.08.2010, 15:41
gebs gebs вне форума
Прохожий
 
Регистрация: 03.08.2010
Сообщения: 48
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Ять!!! А зачем придуманы DB Aware компоненты???
Тебе надо использовать соотв. TDBEdit, которым просто установить нужный DataSource... выделенная строка в гриде - это текущая строка в источнике данных. Дальше Дельфи все за тебя сделает сама...

Но в этом случае после sql update они возвращают нулевые значения:
Код:
Form1.myquery_znp.SQL.ADD('UPDATE znp SET id = :id, iddog = :iddog, lastname = :lastname, name = :name, surname = :surname, addrstreet = :addrstreet, addrdom = :addrdom, addrkv = :addrkv, addretazh = :addretazh, mobtel = :mobtel, ');
Form1.myquery_znp.SQL.ADD('domtel = :domtel, tarif = :tarif, datapodkl = :datapodkl, ktoprinyal = :ktoprinyal, ktoispolnil1 = :ktoispolnil1, ktoispolnil2 = :ktoispolnil2, login = :login, pass = :pass, ipaddr = :ipaddr, ls = :ls, status = :status');
Form1.myquery_znp.SQL.Add('WHERE `id`= :id');
Form1.myquery_znp.ParambyName('id').AsInteger :=cxDBSpinEdit1.Value;
Form1.myquery_znp.ParambyName('iddog').AsInteger :=cxDBSpinEdit2.Value;
Form1.myquery_znp.ParambyName('lastname').asstring:=DBEditEh1.Text;
Form1.myquery_znp.ParambyName('name').asstring:=DBEditEh2.Text;
Form1.myquery_znp.ParambyName('surname').asstring:=DBEditEh3.Text;
Form1.myquery_znp.ParambyName('addrstreet').asstring:=DBComboBox6.Text;
Form1.myquery_znp.ParambyName('addrdom').asstring:=DBEdit1.Text;
Form1.myquery_znp.ParambyName('addrkv').asstring:=DBEdit2.Text;
Form1.myquery_znp.ParambyName('addretazh').asstring:=DBEdit3.Text;
Form1.myquery_znp.ParambyName('mobtel').asstring:=DBEdit4.Text;
Form1.myquery_znp.ParambyName('domtel').asstring:=DBEdit5.Text;
Form1.myquery_znp.ParambyName('tarif').asstring:=DBComboBox2.Text;
Form1.myquery_znp.ParambyName('datapodkl').AsDateTime:=AdvDBDateTimePicker2.DateTime;
Form1.myquery_znp.ParambyName('ktoprinyal').asstring:=DBComboBox1.Text;
Form1.myquery_znp.ParambyName('ktoispolnil1').asstring:=DBComboBox3.Text;
Form1.myquery_znp.ParambyName('ktoispolnil2').asstring:=DBComboBox4.Text;
Form1.myquery_znp.ParambyName('login').asstring:=DBEdit7.Text;
Form1.myquery_znp.ParambyName('pass').asstring:=DBEdit8.Text;
Form1.myquery_znp.ParambyName('ipaddr').asstring:=DBEdit6.Text;
Form1.myquery_znp.ParambyName('ls').asstring:=DBEdit7.Text;
Form1.myquery_znp.ParambyName('status').asstring:=DBComboBox5.Text;
Form1.myquery_znp.Execute;
Close;


Последний раз редактировалось gebs, 08.08.2010 в 15:45.
Ответить с цитированием
  #8  
Старый 09.08.2010, 07:57
lmikle lmikle сейчас на форуме
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от gebs
Но в этом случае после sql update они возвращают нулевые значения:

угу, потому что работа делается подругому.
Нужно к dataSet-компоненту добавить соответсвующий компонент, в котором прописываются шаблоный запросов на Update, Insert и Delete.
Потом просто ставим DB-Aware компоненты и стандартными методами DataSet'а (TQuery и т.п.) Appent, Insert, Edit, Delete, Post (или через DBNavigator) работаем с данными. Всю остальную работу за тебя сделает Delphi - возьмет соотв. данные, засунет их в соотв. запрос и выполнит последний.
Ответить с цитированием
  #9  
Старый 13.08.2010, 01:36
gebs gebs вне форума
Прохожий
 
Регистрация: 03.08.2010
Сообщения: 48
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
угу, потому что работа делается подругому.
Нужно к dataSet-компоненту добавить соответсвующий компонент, в котором прописываются шаблоный запросов на Update, Insert и Delete.
Потом просто ставим DB-Aware компоненты и стандартными методами DataSet'а (TQuery и т.п.) Appent, Insert, Edit, Delete, Post (или через DBNavigator) работаем с данными. Всю остальную работу за тебя сделает Delphi - возьмет соотв. данные, засунет их в соотв. запрос и выполнит последний.

У меня в Uses формы на редактирование установлено Unit1; поэтому на форме нет компонентов для работы с SQL... там одни эдиты.

Схема такая:
На Form1 - MyConnection1 -> MyDataSource1 -> MyQuery1
А Form2 (форма редактирования) просто обращается к этим компонентам посредством прописанного Unit1 в Uses.

Последний раз редактировалось gebs, 13.08.2010 в 01:40.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:56.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter