Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];




Вниз

ComboBox для отображения связанных таблиц 


stal67   (2002-03-30 20:21) [0]

Пожалуйста, помогите чайнику. Пропадаю.
Для вас - это элементарно. Мне пока тяжело.
Использовал раньше для отображения связанных таблиц всегда DBGrid`ы. Проблем - никаких.Сейчас вот застрял.
Заполняю ComboBox текстовым полем родительской таблицы, где ключевое поле - LongInteger. Как в DBGrid, отражать подчиненные
ей (родительской таблице) поля дочерней таблицы? Каким должен быть текст запроса и как осуществить подстановку текстового поля , используя числовое ключевое поле?
Спасибо. Огромное.



AlexVS   (2002-03-31 08:26) [1]

Запрос имеется в виду использование TQuery ?
Тогда примерно так:

Select * from table
WHERE Field= :FieldValue

Поиск в родительской таблице:
Table1.Locate("StrField",ComboBox1.Text,[])

потом присваивай значение параметру:
Query1.ParamByName("FieldValue").Value:=Table1.FieldByName("LongField").Value;
Выполяй Select
Query1.Sql.Clear;
Query1.Sql.Add("Select * from table WHERE Field= :FieldValue");
Query1.Open;



Andrus   (2002-03-31 12:52) [2]

Помоему удобнее использовать при заполнении ComboBoxa:

ComboBox1.Items.AddObject("Текстовое поле родителя",TObject(Ключевое поле родителя));

И потом в ComboBox1.OnChange()
ChildQuery.Close;
ChildQuery.Params[0].AsInteger:=Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);
ChildQuery.Open;



Lusha   (2002-03-31 13:00) [3]

Создать LookUp поле?



stal67   (2002-03-31 16:38) [4]

Попробовал, но что-то не могу врубиться. Быть может еще разок попробуем?

1.// Заполняю ComboBox текстовым полем запроса q1 с полями
ID_GROUP (ключевое поле)
GROUP_NAME (текстовое поле)
procedure Tform1.FormCreate(Sender: TObject);
begin
q1.SQL.Clear;
q1.SQL.Add("SELECT * FROM GROUP_NAME ");
q1.Open;
q1.First;
ComboBox.Clear;
while not q1.Eof do
begin
ComboBox.Items.Add(q1GROUP_NAME.AsString);
q1.Next;
end;
ComboBox.ItemIndex:=0;
end;

2. // Сейчас нужно отобразить по выбору в ComboBox,подчиненные запросу q1 данные запроса q2 (по полю ID_GROUP) с полями :
ID_GROUP (внешний ключ, числовое поле)
ТОV_NAME (текстовое поле)

procedure Tform1. ComboBoxChange(Sender: TObject);
begin
// Большое спасибо за код!!!
end;



Andrus   (2002-03-31 17:07) [5]

procedure Tform1.FormCreate(Sender: TObject);
begin
q1.SQL.Clear;
q1.SQL.Add("SELECT * FROM GROUP_NAME ");
q1.Open;
q1.First;
ComboBox.Clear;
while not q1.Eof do
begin
// ComboBox.Items.Add(q1GROUP_NAME.AsString);
ComboBox.Items.AddObject(q1GROUP_NAME.AsString,
TObject(q1ID_GROUP.AsInteger));
q1.Next;
end;
ComboBox.ItemIndex:=0;
end;

q2.SQL.text:="select * from дочерняя таблица where ID_GROUP=:ID"



procedure ComboBox.OnChange(Sender:TObject);
begin
q2.close;
q2.parambyname("ID").AsInteger:=Integer(ComboBox.Items.Objects[ComboBox.ItemIndex]));
q2.open;
end;




stal67   (2002-03-31 19:47) [6]

Безмерно благодарен, Andrus, все работает !
Спасибо так же всем, кто откликнулся, чтобы помочь!




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.045 c
1-69847           kreont                2002-04-06 23:01  2002.04.22  
object pascal


1-69857           Катерина              2002-04-06 15:52  2002.04.22  
Фреймы


3-69710           sergiocho             2002-03-31 16:44  2002.04.22  
Ограничение размера талблицы Paradox


1-69872           Andre V.              2002-04-08 10:24  2002.04.22  
Создание своих VCL


3-69717           a_a_k                 2002-04-01 10:40  2002.04.22  
2 ошибки Query