Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.03 c
14-80201
:)
2004-01-30 18:18
2004.02.25
загрузка картинки!


1-79821
TrogWar
2004-02-11 09:07
2004.02.25
Как создать заставку к проге?


3-79675
Zorik
2004-01-30 13:51
2004.02.25
DLL и приложение


7-80317
Ил_204
2003-12-05 10:16
2004.02.25
Как узнать, что модем еще на линии?


14-80171
VID
2004-01-31 20:32
2004.02.25
Знатокам VBScript...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский