поля в DBGrid
Подскажите пожалуйста как сделать обычный поиск по полям, точнее говоря ситуация такая - есть первое поле - тип данных, второе - название объекта. Если тип скажем "А" - то все его названия (вторые поля) надо запихать в ComboBox.
Пытался это сделать через поиск но как-то не получилось...:D
и потом, по событию AfterScroll первого источника данных (Table или Query, смотря что используешь) сделать примерно так
Query2->ParamByName("field1")->AsVariant=Table1->FieldByName->("field1")->AsVariant;
Query2->Open();
ComboBox->Items->Clear();
where (!Query2->Eof())
{
ComboBox->Items->Add(Query2->FieldByName->("field2")->AsString;
};
Писал руками по памяти, так что может где ошибся, но смысл такой.
Если я тебя правильно понял - то тебе надо на форму положить какой-нибудь Query и вписать ему в SQL что-то типа
и потом, по событию AfterScroll первого источника данных (Table или Query, смотря что используешь) сделать примерно так
Query2->ParamByName("field1")->AsVariant=Table1->FieldByName->("field1")->AsVariant;
Query2->Open();
ComboBox->Items->Clear();
where (!Query2->Eof())
{
ComboBox->Items->Add(Query2->FieldByName->("field2")->AsString;
};
Писал руками по памяти, так что может где ошибся, но смысл такой.
Да не, видимо объяснил непонятно.
Во-первых, БД локальная, на моем компе.
Во-вторых - все гораздо проще, надо запустить цикл типа
for(int i = 0; i < Table1->FieldsCount; i++)
{
//а тут написать что-то типа
if(Table1->FieldsbyName("Один")->AsString == "1")
{
ComboBox1->Items->Add(Table1->FieldsbyName("Два")->AsString);
}
}
Короче вот так, при том условии, что это не работает :D :D :D
Table1->First();
Table1->DisableControls();
while(!Table1->Eof)
{
if(Table1->Fields->FieldsbyName("Один")->AsString == "1")
{
ComboBox1->Items->Add(Table1->FieldsbyName("Два")->AsString);
}
Table1->Next();
}
Table1->First();
Table1->EnableControls();
for(int i = 0; i < Table1->FieldsCount; i++)
{
//а тут написать что-то типа
if(Table1->FieldsbyName("Один")->AsString == "1")
{
ComboBox1->Items->Add(Table1->FieldsbyName("Два")->AsString);
}
}
Короче вот так, при том условии, что это не работает :D :D :D
Естественно не работает. Ты FieldsCount раз считываешь первую запись и с чем-то ее сравниваешь. Table1->Next().
P.S. У тебя поля в базе называются русскими буквами? Если так - то, по моему, это не самая лучшая идея.
Естественно не работает. Ты FieldsCount раз считываешь первую запись и с чем-то ее сравниваешь. Table1->Next().
P.S. У тебя поля в базе называются русскими буквами? Если так - то, по моему, это не самая лучшая идея.
Спасибо, теперь все работает.
Конечно названия по-русски это только пример, никогда бы не пришло в голову сделать это в реальной БД.