![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ComboBox для отображения связанных таблиц [D4, Paradox]
stal67 © (2002-03-30 20:21:00)Пожалуйста, помогите чайнику. Пропадаю.
Для вас - это элементарно. Мне пока тяжело.
Использовал раньше для отображения связанных таблиц всегда DBGrid`ы. Проблем - никаких.Сейчас вот застрял.
Заполняю ComboBox текстовым полем родительской таблицы, где ключевое поле - LongInteger. Как в DBGrid, отражать подчиненные
ей (родительской таблице) поля дочерней таблицы? Каким должен быть текст запроса и как осуществить подстановку текстового поля , используя числовое ключевое поле?
Спасибо. Огромное.
stal67 (2002-03-31 19:47:00) [1]Безмерно благодарен, Andrus, все работает !
Спасибо так же всем, кто откликнулся, чтобы помочь!
Andrus (2002-03-31 17:07:00) [2]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 16:38:00) [3]Попробовал, но что-то не могу врубиться. Быть может еще разок попробуем?
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;
Lusha (2002-03-31 13:00:00) [4]Создать LookUp поле?
Andrus (2002-03-31 12:52:00) [5]Помоему удобнее использовать при заполнении ComboBoxa:
ComboBox1.Items.AddObject("Текстовое поле родителя",TObject(Ключевое поле родителя));
И потом в ComboBox1.OnChange()
ChildQuery.Close;
ChildQuery.Params[0].AsInteger:=Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);
ChildQuery.Open;
AlexVS (2002-03-31 08:26:00) [6]Запрос имеется в виду использование 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;