![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подключение справочников (Lookup) для DbGridEh
N_SSS © (2009-01-03 11:06:00)Очень много статей, вопросов на форумах по этому поводу, даже черезчур... В этом избытке информации я пытаюсь понять - как подключить таблицу справочник, для редактирования значений в основной?
Две таблицы: 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 без использования редактора полей?
Sergey13 (2009-01-05 11:18:00) [1]А нафига вообще этот сыр-бор со справочником дней недели? ИМХО правильне хранить ДАТУ, из которой можно получить ЛЮБУЮ составляющую этой даты, в том числе и день недели.
N_SSS (2009-01-04 12:50:00) [2]> PS. Но я бы посоветовал тебе подумать над будущей профессией,
> пока не поздно
ещё рано! ))))
Плохиш (2009-01-04 12:36:00) [3]
> N_SSS (04.01.09 10:27) [12]
>
>
Сначала поля добавлять, а потом Open.
PS. Но я бы посоветовал тебе подумать над будущей профессией, пока не поздно.
N_SSS (2009-01-04 10:27:00) [4]> sniknik © (04.01.09 01:15) [11]
> а то, конечно можно. если делается через мастер в IDE то
> и программно тоже можно.
Я тоже так думаю! Но хоть один бы рабочий примерчик! После ADOQuery.Open - Dataset автоматически загружает список полей... И вот как там потом? Нужно Columns.Clear и все снова по-одному добавлять (поля)? Или можно как-то: Columns.Add? к уже загруженным?
sniknik (2009-01-04 01:15:00) [5]> вот можно как-то добавить поле Lookup в DBGrid (Dataset)!?
а то, конечно можно. если делается через мастер в IDE то и программно тоже можно.
N_SSS (2009-01-03 21:58:00) [6]Вот опять - сейчас листал старенькую книжецу по БД, и в разделе "Изменения порядка следования столбцов" нашёл:
With DBGrid1 do
begin
Columns.Clear;
Columns.Add;
Columns[0].FieldName := ‘pole’;
end;
вот можно как-то добавить поле Lookup в DBGrid (Dataset)!?
N_SSS (2009-01-03 18:37:00) [7]> 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 будет проще?
Johnmen (2009-01-03 18:13:00) [8]Добавить в отображаемый набор данных лукапное поле, ссылающееся на поле из лукапного набора данных. Оба НД д.б. окрыты, естесвенно.
N_SSS (2009-01-03 17:58:00) [9]Как я понимаю из всех многочисленных статей - нужно создать (добавить) в DataSet новое поле, например в Fields Editor, все поля (остальные) должны быть загружены! А у меня в зависимости от запроса - поля меняются! В справке " Несколько полей в выпадающем lookup-списке" указанно, что все поля в выпадающем списке должны быть lookup-ными, это значит, что мне 2 поля в DataSet нужно добавить!? Потом, по тем-же статьям я понял, что DataSet-а должно быть два!?! Тогда как их связать? ))) Отдельно делать DBLookupComboBox и прорисовывать его над редактируемой ячейкой?
Просто мне хочется всё-таки понять, хоть в общих чертах - как ограничить выбор значения редактируемой ячейки таблицей справочником?
N_SSS (2009-01-03 16:02:00) [10]
ADOQuery.FieldByName('N').DisplayLabel:=
DBGridMain.Columns[5].Visible:=
вот так-же можно после выполнения запроса сделать поле "лукапным"?
нужен ли для этого 2-й ADOQuery для подчинённой таблицы?
N_SSS (2009-01-03 15:50:00) [11]
> Осталость прочитанное применить...
Так кругом только и пишут - как реализовать это через редактор полей (Fields Editor)! А меня интересует - можно ли то-же самое сделать без него?!
на примере запроса:
SELECT S.Name, C.SDen, C.Den FROM Main S, DniNedeli С WHERE C.Ind_D = S.Den
вот как на основе этого запроса в ячейках поля C.SDen реализовать этот выпадающий список!?
Johnmen (2009-01-03 15:34:00) [12]Ну вот видишь, ты и хелп изучил и документацию, всё знаешь.
Осталость прочитанное применить...
N_SSS (2009-01-03 15:31:00) [13]
> Куда подключить? Кому подключить? Что значит "подключить"?
> Что за "редактор полей"?
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
KilkennyCat (2009-01-03 15:20:00) [14]
> Что за "редактор полей"?
Наверное, такая панелька, слева обычно, инспектором объектов называемая, иногда...
Johnmen (2009-01-03 15:08:00) [15]
> Так вот, как для этого "C.SDen" подключить выпадающую таблицу-
> справочник DniNedeli без использования редактора полей?
Куда подключить? Кому подключить? Что значит "подключить"? Что за "редактор полей"?