Форум: "Базы";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];
ВнизIB+DBGrid текущая запись, как лучше поступить? Найти похожие ветки
← →
Ivanesus (2004-01-30 14:26) [0]Имеется База IB (IBDataBase), в ней таблица.
На форме (Form1) создаю (PageControl), а в нем TabSheet1 и TabSheet2.
На TabSheet1 кладу Button1, DBGrid1 в котором создаю TColomn(1,2, ...).
На TabSheet2 кладу Edit(1,2,...) и Button2.
Связь DBGrid1 с IBDataBase осуществляется по средством IBDataSet1 и DataSource1.
SelectSQL, отрабатывается и необходимый запрос помещается в DBGrid1.
Хотелось бы сделать так, чтобы пользователь выбрав интересующую запись, нажал Button1 и данные, находящиеся в выбранной строке DBGrid1, заполнили Edit(1,2,...). Пользователь внесет свои изменения в нужные поля и нажав Button2 запишет их в таблицу в Базе IB, при этом должен обновиться DBGrid1.
Вопрос(ы) состои(я)т в следующем:
Как лучше(правильнее) редактировать запись в DBGrid1?
Как получить значение ID поля в таблице базы IB, на которую указывает выделеная строка в DBGrid1?
← →
stud (2004-01-30 14:34) [1]при перемещению по гриду указатель в наборе перемещается на соотв. запись.
← →
MV (2004-01-30 14:37) [2]1. А вместо TEdit - TDBEdit?
2.Получить значение ЛЮБОГО поля:
...
var myID : integer;
...
begin
...
myId := IBDataSet1.FieldByName("ID").AsInteger;
3. по Button1:
...
...
begin
...
Edit1.Text := IBDataSet1.FieldByName("Name").AsString;
4. по Button2:
...
...
begin
...
IBDataSet1.Edit;
...
IBDataSet1.FieldByName("Name").AsString := Edit1.Text;
...
IBDataSet1.Post;
5. Все методологически неправильно! (Хотя допустимо)
Демки в дельфях посмотрите!
← →
Ivanesus (2004-01-30 14:50) [3]Например:
Пусть Table1 состоит из:
/ ID / Field1 / Field2
------------------------
10 сп справочник
14 от отчет
17 кн книга
Сделав выбор: select Field1,Field2 from Table1
я получу в ГРИДЕ три строки. Допустим, я хочу сделать ДАБЛКЛИК на второй строчке в ГРИДЕ и чтобы showmessage(); мне показал
что я КЛИКНУЛ по второй строке в ГРИДЕ и ID у нее в БАЗЕ = 17
вот получить эти данные у меня и не получается.
← →
MV (2004-01-30 14:57) [4]Что-то вы мыслью по древу...
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
ShowMessage(IBDataSet1.FieldByName("Id").AsString);
end;
← →
Ivanesus (2004-01-30 15:08) [5]To MV:
Если воспользоваться пунктом 2 из вашего сообщения[2] переменная myID присвоит значение текущей записи из ГРИДА? и в задачке поставленной в [3] showmessage(IntToStr(myID)); покажет 14? (извеняюсь,я там (в [3]) ОПИСАЛСЯ в предпоследней строчке = ".... и ID у нее в БАЗЕ = 14?")
По остальным пунктам(2,3,4) понятно! Я подозревал что должно быть все просто, но както меня переклинило!
А пункт №5 из [2] хотелось бы по подробнее чуток. Я не расчитываю на лекцию, но хотябы правильную постановку - как всетаки это делается правильно? (хотя бы тезисно)!!
← →
Ivanesus (2004-01-30 15:10) [6]To MV:
Я долго отписываю, Вы меня опережаете! ::))
← →
MV (2004-01-30 15:10) [7]Ну, если еще нужен номер строки в гриде - то вводим еще один класс:
TMySuperGrid = class(TCustomGrid)
public
property Row;
end;
потом:
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
ShowMessage("ID= " + pFIBDataSet1.FieldByName("Bank_Id").AsString +
" Строка = " + IntToStr(TMySuperGrid(DBGrid1).Row) )
end;
Хотя не понятно, зачем вам нужен этот номер строки...
← →
MV (2004-01-30 15:12) [8]Интересно - доступ к реляционным базам - и тезисно...
Даже не знаю, что сказать...
← →
Ivanesus (2004-01-30 15:36) [9]To MV:
Вы тогда просто обьясните что имели ввиду под:
//>> 5. Все методологически неправильно! (Хотя допустимо)
Я просто хотел сузит описание задачи, методологию можно уточнить!
Суть, как бы в следующем:
Создается база документов (это одна таблица), все остальные таблицы - как бы классификаторы, связаны с основной как Мастер-Деталь. В большинство полей основной таблицы(документов) записываются номера соответствующих ID полей(PRIMARY Key, FOREIGN Key) из дополнительных таблиц . Надо снабдить все это возможностью = Добавлять,Удалять и Редактировать данные. А также всевозможными выборками и отчетами. Вот как бы в кратце все. Задачка вродебы простая, но и не очень!, а для начинающего писать проекты по базам данных, думаю в самый раз.
← →
MV (2004-01-30 16:21) [10]Да все правильно, я критикую по поводу используемых контролов (типа TEdit вместо TDBEdit). Впрочем - дело вкуса.
← →
Ivanesus (2004-01-30 17:46) [11]To MV:
Честно сказать я как бы "задней" мыслью и подразумевал их использование (TDBEdit, и т.д.), просто надо с ними поэксперементировать, они, на сколько я помню постоянно отображают ИНФУ из базы, а мне это постоянно видеть в них нехотелось, но я попробую, наверника это както в них просто делается! Сейчас под рукой Дельфи нет, вернусь к рабочему месту - попробую.
Спасибо за помощь и советы.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.029 c