C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Фильтрация данных.
maikl
Отправлено: 13.01.2004, 06:31


Станционный диспетчер

Группа: Участник
Сообщений: 135



У меня БД, записи в нее заносятся приблизительно следующим образом :

День недели №_пары Предмет Кабинет
_____________________________________________
Назв. дня
№_пары Предмет №_каб.

Так вот я делаю фильтрацию в БД по предмету и кабинету, в зависимости от того что выбрано, как сделать что бы название дня недели осталось, т.е данная запись где я записываю день недели оставалась при фильтрации всегда. Просто там тогда он выведет все предметы которые удовлетворяют условию, а на какой день они должны читаться неизвестно. Заранее спасибо.

Admin
Отправлено: 13.01.2004, 15:01


Владимир

Группа: Администратор
Сообщений: 1190



CODE

Table1->Filtered = false;
// предмету и кабинету
Table1->Filter = "predmet='черчение' and cabinet=105";
Table1->Filtered = true;
maikl
Отправлено: 14.01.2004, 15:05


Станционный диспетчер

Группа: Участник
Сообщений: 135



Спасибо но мне немного по другому надо, я в ComboBox вначале загружаю данные из таблицы при событии OnCreate формы
:

DataModule3->Table2->First();
CBPrep->Clear();
while(!DataModule3->Table2->Eof)
{
CBPrep->Items->Add(DataModule3->Table2FIO_prep->AsString);
DataModule3->Table2->Next();

Так же у меня на форме компонент RadioGroup:

В котором находятся пункты по которым делаю фильтрацию, по кнопке обновить я делаю обновление данных, в общем по ходу работы программа выдает ошибку почему то, видимо это связано с тем что у меня есть связанные Lookup поля. Код по которому я провожу фильтрацию такой :

void __fastcall TForm5::glExtSpeedButton1Click(TObject *Sender)
{
DataModule3->Table7->IndexName = "Prep";
if (RGF->ItemIndex == 0)
{
DataModule3->Table7->Filter = "Prep_ID='"+CBPrep->Text+"'";
DataModule3->Table7->Filtered = true;
}
}

Сдесь у меня Prep_ID это результирующее поле из Loolup поля, потом есть еще в Table 2 поле Prep из которого беруться значения. В общем не знаю, или есть способ попроще сделать, или я делаю какую то ошибку. А ошибка в результате всего этого вот такая :

"Project Project1.exe raised exception class EAccessViolation with message 'Access violation at adress 4032BCD4 in module 'dbrtl60.bpl'. Read of adress 0000009D'. Process Stoped. Use step or RUN to continue".
maikl
Отправлено: 15.01.2004, 03:58


Станционный диспетчер

Группа: Участник
Сообщений: 135



Я еще забыл написать что если в ComboBox добавлять записи не из базы, а просто записать их в свойстве Items то все работает.

Вернуться в Работа с базами данных в C++Builder