Форум: "Начинающим";
Текущий архив: 2009.02.15;
Скачать: [xml.tar.bz2];
ВнизПодключение справочников (Lookup) для DbGridEh Найти похожие ветки
← →
N_SSS (2009-01-03 11:06) [0]Очень много статей, вопросов на форумах по этому поводу, даже черезчур... В этом избытке информации я пытаюсь понять - как подключить таблицу справочник, для редактирования значений в основной?
Две таблицы: Main и DniNedeli, так вот в таблице Main есть поле Den (числовое), которое связано через индекс соотношением "многие к одному" с таблицей DniNedeli, состоящей, соответственно из 3-х полей: Ind_D, SDen (пн, вт...) и Den (понедельник, вторник...). Чтобы отобразить нормально день недели в основной таблице пишу:SELECT S.Name, C.SDen FROM Main S, DniNedeli С WHERE C.Ind_D = S.Den
Так вот, как для этого "C.SDen" подключить выпадающую таблицу-справочник DniNedeli без использования редактора полей?
← →
Johnmen © (2009-01-03 15:08) [1]
> Так вот, как для этого "C.SDen" подключить выпадающую таблицу-
> справочник DniNedeli без использования редактора полей?
Куда подключить? Кому подключить? Что значит "подключить"? Что за "редактор полей"?
← →
KilkennyCat © (2009-01-03 15:20) [2]
> Что за "редактор полей"?
Наверное, такая панелька, слева обычно, инспектором объектов называемая, иногда...
← →
N_SSS (2009-01-03 15:31) [3]
> Куда подключить? Кому подключить? Что значит "подключить"?
> Что за "редактор полей"?
DbGridEh! Цитирую из хелпа:
Несколько полей в выпадающем lookup-списке.
Для отображнения нескольких полей в выпадающем lookup-списке для lookup-полей установите в Column.LookupDisplayFields список полей. Точки с запятыми должны разделять множество имен полей. Имя Column.Field.LookupResultField должно присутствовать в списке LookupDisplayFields. Lookup-список с несколькими полями может быть назначен только lookup-полям. Это свойство работает только для полей DataSet"а типа Lookup (TField.FieldKind = fkLookup).
вот имеено это я и хочу сделать для:
поле Den (числовое), которое связано через индекс соотношением "многие к одному" с таблицей DniNedeli
> > Что за "редактор полей"?
Создаются статические объекты полей при помощи специализированного Редактора полей, который вызывается двойным щелчком на компоненте набора данных на форме или командой Fields Editor из всплывающего меню этого компонента.
http://iitam.omsk.net.ru/~eugene/docums/Delphi/d7_prof/Glava13/Index3.html
← →
Johnmen © (2009-01-03 15:34) [4]Ну вот видишь, ты и хелп изучил и документацию, всё знаешь.
Осталость прочитанное применить...
← →
N_SSS (2009-01-03 15:50) [5]
> Осталость прочитанное применить...
Так кругом только и пишут - как реализовать это через редактор полей (Fields Editor)! А меня интересует - можно ли то-же самое сделать без него?!
на примере запроса:SELECT S.Name, C.SDen, C.Den FROM Main S, DniNedeli С WHERE C.Ind_D = S.Den
вот как на основе этого запроса в ячейках поля C.SDen реализовать этот выпадающий список!?
← →
N_SSS (2009-01-03 16:02) [6]
ADOQuery.FieldByName("N").DisplayLabel:=
DBGridMain.Columns[5].Visible:=
вот так-же можно после выполнения запроса сделать поле "лукапным"?
нужен ли для этого 2-й ADOQuery для подчинённой таблицы?
← →
N_SSS (2009-01-03 17:58) [7]Как я понимаю из всех многочисленных статей - нужно создать (добавить) в DataSet новое поле, например в Fields Editor, все поля (остальные) должны быть загружены! А у меня в зависимости от запроса - поля меняются! В справке "Несколько полей в выпадающем lookup-списке" указанно, что все поля в выпадающем списке должны быть lookup-ными, это значит, что мне 2 поля в DataSet нужно добавить!? Потом, по тем-же статьям я понял, что DataSet-а должно быть два!?! Тогда как их связать? ))) Отдельно делать DBLookupComboBox и прорисовывать его над редактируемой ячейкой?
Просто мне хочется всё-таки понять, хоть в общих чертах - как ограничить выбор значения редактируемой ячейки таблицей справочником?
← →
Johnmen © (2009-01-03 18:13) [8]Добавить в отображаемый набор данных лукапное поле, ссылающееся на поле из лукапного набора данных. Оба НД д.б. окрыты, естесвенно.
← →
N_SSS (2009-01-03 18:37) [9]> Johnmen © (03.01.09 18:13) [8]
> Добавить в отображаемый набор данных лукапное поле, ссылающееся
> на поле из лукапного набора данных. Оба НД д.б. окрыты,
> естесвенно.
Т.е., я правильно понимаю: добавить в DataSet1, к которому подключен DbGridEh, lookup-ное поле. Этим полем будет - поле "Den" (числовое) в таблице Main, и как только я его добавлю и установлю в Column.LookupDisplayFields список полей из таблицы "DniNedeli"... выпадающий список появится автоматически?!
> Johnmen © (03.01.09 18:13) [8]
> Оба НД д.б. окрыты, естесвенно.
т.е. такая вещь не прокатит? :procedure TForm1.Button1Click(Sender: TObject);
begin
with TStringField.Create(Table2) do
begin
FieldName := "MyLookup";
FieldKind:= fkLookup;
DataSet := Table2;
name := Dataset.name + FieldName;
KeyFields:= "CustNo";
LookUpDataset:= Table1;
LookUpKeyFields:= "CustNo";
LookUpResultField:= "Company";
DbLookupCombobox1.DataField:= FieldName;
DataSource1.DataSet:= Dataset;
Table2.FieldDefs.Add(name, ftString, 20, false);
end;
DbLookupCombobox1.DataSource:= Datasource1;
Table1.Active:= True;
Table2.Active:= True;
end;
как же быть?
Может с DBLookupComboBox будет проще?
← →
N_SSS (2009-01-03 21:58) [10]Вот опять - сейчас листал старенькую книжецу по БД, и в разделе "Изменения порядка следования столбцов" нашёл:
With DBGrid1 do
begin
Columns.Clear;
Columns.Add;
Columns[0].FieldName := ‘pole’;
end;
вот можно как-то добавить поле Lookup в DBGrid (Dataset)!?
← →
sniknik © (2009-01-04 01:15) [11]> вот можно как-то добавить поле Lookup в DBGrid (Dataset)!?
а то, конечно можно. если делается через мастер в IDE то и программно тоже можно.
← →
N_SSS (2009-01-04 10:27) [12]> sniknik © (04.01.09 01:15) [11]
> а то, конечно можно. если делается через мастер в IDE то
> и программно тоже можно.
Я тоже так думаю! Но хоть один бы рабочий примерчик! После ADOQuery.Open - Dataset автоматически загружает список полей... И вот как там потом? Нужно Columns.Clear и все снова по-одному добавлять (поля)? Или можно как-то: Columns.Add? к уже загруженным?
← →
Плохиш © (2009-01-04 12:36) [13]
> N_SSS (04.01.09 10:27) [12]
>
>
Сначала поля добавлять, а потом Open.
PS. Но я бы посоветовал тебе подумать над будущей профессией, пока не поздно.
← →
N_SSS (2009-01-04 12:50) [14]> PS. Но я бы посоветовал тебе подумать над будущей профессией,
> пока не поздно
ещё рано! ))))
← →
Sergey13 © (2009-01-05 11:18) [15]А нафига вообще этот сыр-бор со справочником дней недели? ИМХО правильне хранить ДАТУ, из которой можно получить ЛЮБУЮ составляющую этой даты, в том числе и день недели.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.02.15;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.006 c