Sortowanie zapytania po polach Calculated na Firebirdzie

0

Cześć. Mam taki problem.

Np. Mam tabelę Klienci, gdzie niektórymi polami są: Imie, nazwisko, firma_nazwa.
I teraz na gridzie, czy raporcie chce posortować po polu nazwa klienta(KNAZWA).

Pole KNazwa jest Calculated i powstaje w taki sposób, że jeśli firma_nazwa jest null lub pusta, to wtedy KNazwa to jest nazwisko i imie. W innym wypadku KNAzwa to jest firma_nazwa.

Jednak, gdy do zapytania dokładam np:

select k.imie, k.nazwisko, k.firma_nazwa, null as KNazwa from klienci order by KNazwa

dostaję niestety błąd. Jak to rozwiązać?

0

Może napiszesz jaki to błąd? :-|

0
RedbaK napisał(a)

Może napiszesz jaki to błąd? :-|

Aktualnie nie jestem w stanie, bo znowu mam błędy: "Empty SQL Statement" pochodzące od RaveReport, bowiem przed wywołanie RVProject.Execute wartość sql jest.

Anyway błąd to coś w rodzaju: "Nie ma takiej kolumny"

0

Widocznie chcesz posortować kolumnę, której nie widać obecnie w tabeli.
Tak mi się wydaje :)) Być może tak mi się wydaje, bo dziś nie jestem wyspany ;-P

0
RedbaK napisał(a)

Widocznie chcesz posortować kolumnę, której nie widać obecnie w tabeli.
Tak mi się wydaje :)) Być może tak mi się wydaje, bo dziś nie jestem wyspany ;-P

Ona jest widoczna. Wartość ma przypisywaną w onCalcFields, ale nawet na Firebirdzie zapytanie typu:

  Select pole, null as KNazwa from tabela order by KNazwa

powoduje błąd.
Jak połączyć warunkowo kilka pól w jedno?
W MSSql wystarczy: (pole1+' '+pole2) as KNazwa, a jak to zrobić pod Firebirdem?

0

order by 4 ale to i tak Ci nic nie da bo to pole jest w momencie sortowania puste. Lepiej zrobić to tak

select k.imie, k.nazwisko, k.firma_nazwa, 
case when k.firma_nazwa is NULL then k.imie || ' ' || k.nazwisko else k.firma_nazwa end as KNazwa from klienci order by 4

i nie potrzebujesz pól calculated

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