Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.009 c
3-1214981127
BUM
2008-07-02 10:45
2009.02.15
LookUp поле по полю Calculate = 0


15-1229374891
stas
2008-12-16 00:01
2009.02.15
Иконки из IE


15-1229799253
fil
2008-12-20 21:54
2009.02.15
Выделение "компонентов"


2-1230651566
LDV
2008-12-30 18:39
2009.02.15
SetMenuItemBitmaps


2-1230629849
LabaN
2008-12-30 12:37
2009.02.15
Смайлы





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