Kilka filtrów w bazach Paradox

0

Witam szanownych kolegów forumowiczów.
Zwracam się z prośbą o wyjaśnienie i ewentualną podpowiedź, czy da sie w tabeli typu Paradox 7 wykorzystać filtr który będzie dotyczył zmiennych liczbowych a nie jak w większości przypadków kolumn tekstowych, oraz czy da się jednocześnie zastosować kryteria filtrowania do kilku kolumn, podobnie jak to ma miejsce w wyszukiwarkach samochodów na giełdach Internetowych (Rok produkcji, pojemność, cena). Wszystkie te dane, to liczby i podane jako zakres,
dziękuję za każdą pomoc, pozdrawiam.

0

AND OR i normalnie podajesz warunki a co do liczb to cos=10 działa normalnie

0

Jak napisał Misiekd dzięki właściwości filter jest to możliwe, pamiętaj też o ustawieniu Filtered na True. Tak czy siak obstawiam że w końcu rozbijesz się o coś co się w Filter nie da ująć (jakieś duże litery, jakieś modyfikacje wartości), więc polecam od razu zaznajomienie się ze zdarzeniem OnFilterRecord. Piszę o tym w pierwszym lepszym tutorialu o datasetach (jakichkolwiek).

0

Ciągle mam problem z moim filtrem.
oto procedura

procedure TForm1.Button2Click(Sender: TObject);
begin
  Table1.Filtered := False;
1.  Table1.Filter:=('I='+QuotedStr(ComboBox4.Text));
2.  Table1.Filter:=('Momentobrotowy > 5')  ;
  Table1.Filtered:=True;
end;

przy czym opcja 1 i 2 są wybierane indywidualnie na potrzeby testów i jak na złość pierwsza działa bez zarzutów, a co do drugiej to nie mam pojęcia jak ją obudzić do życia, wiem ze składnia jest do bani ale nie umiem jej poprawić, jak ma wyglądać składnia dla zmiennych liczbowych, dodatkowo finalnie takich kryteriów ma być 7 i wszystkie mają działać jednocześnie, ale czy 2 czy 7 to już bez różnicy.

0

Nie mogąc doczekać sie pomocy przegrzebałem wszystkie znane mi źródła, kombinowałem przez 3 noce po omacku i stworzyłem coś takiego. Załączam fragment kodu, sprawdzony i działa na bank, to tak dla przyszłych potrzebujących, ponieważ składnia filtrów pól liczbowych jest definiowana minimalnie inaczej

  Table1.Filter:=
  'I='+QuotedStr(ComboBox4.Text)+
  ' AND '+
  'II='+QuotedStr(ComboBox5.Text)+
  ' AND '+
  'III='+QuotedStr(ComboBox6.Text)+
  ' AND '+
  'Moment_obrotowy>='+chr(39)+ Edit6.Text +chr(39)+
  ' AND '+
  'Moment_obrotowy<='+chr(39)+ Edit7.Text +chr(39)+
  ' AND '+
  'Predkosc_obrotowa>='+chr(39)+ Edit8.Text +chr(39)+
  ' AND '+
  'Predkosc_obrotowa<='+chr(39)+ Edit9.Text +chr(39)+
  ' AND '+
  'Rozruch_na_godzine>='+chr(39)+ Edit10.Text +chr(39)+
  ' AND '+
  'Rozruch_na_godzine<='+chr(39)+ Edit11.Text +chr(39)+
  ' AND '+
  'Srednica_walka_I>='+chr(39)+ Edit12.Text +chr(39)+
  ' AND '+
  'Srednica_walka_I<='+chr(39)+ Edit13.Text +chr(39)+
  ' AND '+
  'Srednica_walka_II>='+chr(39)+ Edit14.Text +chr(39)+
  ' AND '+
  'Srednica_walka_II<='+chr(39)+ Edit15.Text +chr(39)

kolumny I, II, i III to kolumny tekstowe, pozostałe to liczby. w razie problemów proszę o pytanie na PW.

0

No więc tak, poirytowało mnie to wiec sprawdziłem. Dla kolumn liczbowych można stosować:

orderno > 1005 and itemno > 1
lub
orderno > '1005' and itemno > '1'

działa tak czy siak (nie dam jednak głowy czy porównywanie integerów jako stringów czegoś nie popieprzy: 1 2 3 10 czy 1 10 2 3). Dla stringów oczywiście w apostrofach. Rzecz sprawdzona przed chwilą na items.db dostarczanej z delphi.

A co do obapostrofywowania, to czym się różni
chr(39) + ComboBox4.Text + chr(39)
od
QuotedStr(ComboBox4.Text) ? Pytam bo nie znam treści funkcji QuotedStr

0

Ja również nie wiem jak jest skonstruowana ta funkcja, wiem natomiast ze opisanie Edit1.Text w funkcję QuotedStr wywalało jakiś błąd, wiec znalazłem gdzieś, już sam nie wiem gdzie tą opcję z Chr(39). Po napisaniu filtru w sposób taki jak w moim poprzednim poście wszystko działa zgodnie z oczekiwaniami.
Dzięki za uwagę i zainteresowanie, pozdrawiam Elmo_pf

1 użytkowników online, w tym zalogowanych: 0, gości: 1