Главная страница
    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.049 c
14-80261
Marser
2004-02-03 13:31
2004.02.25
Вероисповедание


3-79620
deadbitch
2004-02-01 11:19
2004.02.25
Отрицательные значения в TDBGrid


1-79908
AlexandrKu
2004-02-09 16:14
2004.02.25
Доступ к ячейкам Excel через OleContainer


1-79921
HolyMan
2004-02-09 00:05
2004.02.25
Инсталирование нескольких программ


14-80194
Knight
2004-01-29 19:46
2004.02.25
Первый раз попал в аварию...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский