CYFROWY BARON • PROGRAMOWANIE • Zobacz wÄ…tek - Częściowe porównywanie ciÄ…gów liczb
Strona 1 z 1

Częściowe porównywanie ciągów liczb

Nowy postNapisane: piÄ…tek, 3 czerwca 2011, 19:55
przez Antonowski
Witam.
Natknąłem się na problem przy nakładaniu filtra na obiekty TTable. W przypadku, kiedy pole będące przedmiotem filtrowania jest typu string stosuje taką składnię:
KOD cpp:   •  UKRYJ  •
DataModule1->UKD->Filter="Opis='"+ Edit31->Text +"*'";
                DataModule1->UKD->Filtered=true;
W przypadku, kiedy pole jest typu liczbowego (u mnie dokładnie jest to integer), użycie takiej metody kończy się zwróceniem błędu: EVariantTypeCastError with message 'Could not convert variant of type (OleStr) into type (Boolean)'. Usunięcie znaków ' ' i * sprawia, że tabela się filtruje nie jest to jednak porównywanie częściowe - np. przy wyszukiwaniu rekordów po polu Id z warunkiem "1" nie są wyświetlane rekordy z id równym 14, 15 itd.
KOD cpp:   •  UKRYJ  •
DataModule1->Wydawnictwa->Filter="Id like "+Edit22->Text+"";

KOD cpp:   •  UKRYJ  •
DataModule1->Wydawnictwa->Filter="Id = "+Edit22->Text+"*";

Powyższe instrukcje też nie działają :oops: Zna może ktoś rozwiązanie tego problemu?

Re: Częściowe porównywanie ciągów liczb

Nowy postNapisane: piÄ…tek, 3 czerwca 2011, 22:36
przez Corvis
like tyczy się do ciągów znaków

zrób

KOD cpp:   •  UKRYJ  •
DataModule1->Wydawnictwa->Filter="Id = " + Edit22->Text ;



swojÄ… drogÄ… Wydawnictwa to jest ClientDataSet ??

Re: Częściowe porównywanie ciągów liczb

Nowy postNapisane: poniedziałek, 6 czerwca 2011, 20:55
przez Antonowski
Nie wiem do końca co masz na myśli pisząc ClientDataSet. Wydawnictwa to obiekt TTable podłączony do bazy za pomocą TDatabase. Na obrazku struktura modułu danych jeśli ma to pomóc...

IBk5w.png

Re: Częściowe porównywanie ciągów liczb

Nowy postNapisane: wtorek, 7 czerwca 2011, 12:46
przez Corvis
WyglÄ…da to wszystko strasznie :-)

Jak baza danych ???????????? stasznie to wszystko przekombinowane.

ClientDataSet to komponent z zakładki DataAccess.

Spróbuj zrobić w tym TTable jak napisałem ten filtr

DataModule1->Wydawnictwa->Filter="Id = " + Edit22->Text ;

Nigdy nie używałem filtrowania z poziomu komponentu TTable.

Re: Częściowe porównywanie ciągów liczb

Nowy postNapisane: wtorek, 7 czerwca 2011, 21:26
przez Antonowski
Corvis napisał(a):Wygląda to wszystko strasznie :-)

Jak baza danych ???????????? stasznie to wszystko przekombinowane.


Starałem się jak mogłem, żeby ograniczyć zarówno ilość komponentów jak i objętości kodu, ale cóż tu ukrywać - to wszystko moja amatorszczyzna na zaliczenie, w dodatku ze znikomym wsparciem nauczyciela. Mam nadzieję, że w końcu dojdę do wprawy ;)
A twój sposób też niestety działa jedynie wtedy, kiedy wpisze się całą liczbę...