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

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

Problemy zwiÄ…zane z tworzeniem i zarzÄ…dzaniem programami bazo-danowymi.
Regulamin działu


Zadając pytania dotyczące baz danych należy podawać szczegółowe informacje o bazie danych nad którą się pracuje, czyli:

  • Rodzaj serwera bazodanowego: MySql, MSSQL, Oracle itp.
  • Wersja bazy danych
  • Technologia bazodanowa używana w programie: ADO, DbExpress, InterBase
  • Komponenty użyte do zestawienia poÅ‚Ä…czenia: ADOConnection, SqlConnection
  • Sposób zestawienia komponentów bazodanowych np. DataSet - DataSource - DbGrid lub DataSet - DataSetProvider - ClientDataSet - DataSource - DbGrid
  • Jeżeli używane byÅ‚y biblioteki innych firm niż Borland, CodeGeer i Embarcadero proszÄ™ podać ich nazwy, numer wersji i adres źródÅ‚a.

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

Nowy postprzez Antonowski » piÄ…tek, 3 czerwca 2011, 19:55

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?
Avatar użytkownika
Antonowski
Bladawiec
Bladawiec
 
Posty: 16
Dołączył(a): czwartek, 21 października 2010, 17:56
PodziÄ™kowaÅ‚ : 2
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows XP SP3 x86 (dla kompilatora)
Kompilator: Borland Developer Studio 2006
SKYPE: vekh666
Gadu Gadu: 2743544
    Windows XPChrome

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

Nowy postprzez Corvis » piÄ…tek, 3 czerwca 2011, 22:36

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 ??
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
PodziÄ™kowaÅ‚ : 80
OtrzymaÅ‚ podziÄ™kowaÅ„: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome

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

Nowy postprzez Antonowski » poniedziaÅ‚ek, 6 czerwca 2011, 20:55

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
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
Antonowski
Bladawiec
Bladawiec
 
Posty: 16
Dołączył(a): czwartek, 21 października 2010, 17:56
PodziÄ™kowaÅ‚ : 2
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows XP SP3 x86 (dla kompilatora)
Kompilator: Borland Developer Studio 2006
SKYPE: vekh666
Gadu Gadu: 2743544
    Windows 7Firefox

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

Nowy postprzez Corvis » wtorek, 7 czerwca 2011, 12:46

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.
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
PodziÄ™kowaÅ‚ : 80
OtrzymaÅ‚ podziÄ™kowaÅ„: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome

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

Nowy postprzez Antonowski » wtorek, 7 czerwca 2011, 21:26

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ę...
Avatar użytkownika
Antonowski
Bladawiec
Bladawiec
 
Posty: 16
Dołączył(a): czwartek, 21 października 2010, 17:56
PodziÄ™kowaÅ‚ : 2
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows XP SP3 x86 (dla kompilatora)
Kompilator: Borland Developer Studio 2006
SKYPE: vekh666
Gadu Gadu: 2743544
    Windows 7Firefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Bazy danych

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 16 gości

cron