Maksym Dragojew

Maksym Dragojew Właściciel

Temat: Problem z filtrem

Mam problem z filtrem dokumentów WZ. Mają się wyświetlić wszystkie dokumenty WZ które nie posiadają Korekt lub są skorygowane częściowo. Zapytanie jest następujące:
TrN_Korekta = 0 and Trn_Anulowany = 0 and IsNull(TrN_FaId,0)=0 and not exists (select Z.TrN_ZwrID from CDN.TraNag Z where Z.TrN_ZwrId = A.TrN_TrNID and
Z.TrN_Bufor=0 and (Z.TrN_Rodzaj=306000 or Z.TrN_Rodzaj=306001 or Z.TrN_Rodzaj=306002 or Z.TrN_Rodzaj=306003 or
Z.TrN_Rodzaj=306004 or Z.TrN_Rodzaj=306005 or Z.TrN_Rodzaj=306006 or Z.TrN_Rodzaj=306007) group by Z.TrN_ZwrID having SUM(Z.Trn_RazemBrutto)*(-1)=A.Trn_RazemBrutto)

Co ciekawe jak uruchamiam Optimę na Serwerze to filtr działa prawidłowo a na końcówkach otrzymuję błąd:
The multi-part identifier "A.TrN_TrNID" could not be bound.

W czym problem?
Pozdrawiam
Maksym Dragojew
Piotr Skiba

Piotr Skiba Własna działalność
gospodarcza / Web
Developer /
Programista

Temat: Problem z filtrem

A skąd Ci się wzięła deklaracja "A" np przy A.TrN_TrnId - nie widziałem żebyś skorzystał i zadekarował A dla jakieś z tabel. Korzystasz przecież z tabelki cdn.TraNag więc radzę spróbować skasować przedrostek A i uruchomić na komputerze końcowym jak i dla sprawdzenia na serwerze.
Maksym Dragojew

Maksym Dragojew Właściciel

Temat: Problem z filtrem

Jeśli usunę A to dostaję błąd "Użycie filtra nie jest możliwe,
ponieważ jego składnia nie jest zgodna z językiem SQL."

Max
Paweł Wiącek

Paweł Wiącek "Nie narzekaj że
masz pod górę skoro
zmierzasz na szczyt"

Temat: Problem z filtrem

Nie lubię formuły "not exists"...

Ja zwykle robię tak ... To co masz w nawiasach
"(select Z.TrN_ZwrID from CDN.TraNag Z where Z.TrN_ZwrId = A.TrN_TrNID and
Z.TrN_Bufor=0 and (Z.TrN_Rodzaj=306000 or Z.TrN_Rodzaj=306001 or Z.TrN_Rodzaj=306002 or Z.TrN_Rodzaj=306003 or
Z.TrN_Rodzaj=306004 or Z.TrN_Rodzaj=306005 or Z.TrN_Rodzaj=306006 or Z.TrN_Rodzaj=306007) group by Z.TrN_ZwrID having SUM(Z.Trn_RazemBrutto)*(-1)=A.Trn_RazemBrutto)
"
Zrób z tego zapytanie tak aby zwróciło ci zbiór rozwiązań TrN_ZweID ... w Management studio. (select TrN_ZweID from ... etc)

Potem wklej to zapytanie w nawiasach a przed nawiasem TrN_ZwrID not in (lub in jeśli jest to zbiór przeciwny). czyli:

TrN_Korekta = 0 and Trn_Anulowany = 0 and IsNull(TrN_FaId,0)=0 and TrN_ZweID not in (select TrN_ZweID from ... )

Mam nadzieję, że zadziała...Paweł Wiącek edytował(a) ten post dnia 16.07.10 o godzinie 12:15
Maksym Dragojew

Maksym Dragojew Właściciel

Temat: Problem z filtrem

Problem z filtrami Optima jest taki że dopisujemy całą resztę która jest po WHERE.
Generalnie zapytanie SQL wygląda tak:
select A.TrN_TrNID
from CDN.TraNag A
where A.TrN_Korekta = 0 and A.Trn_Anulowany = 0 and IsNull(A.TrN_FaId,0)=0 and not exists
(select Z.TrN_ZwrID
from CDN.TraNag Z
where Z.TrN_ZwrId = A.TrN_TrNID and
Z.TrN_Bufor=0 and (Z.TrN_Rodzaj=306000 or Z.TrN_Rodzaj=306001 or Z.TrN_Rodzaj=306002 or Z.TrN_Rodzaj=306003 or
Z.TrN_Rodzaj=306004 or Z.TrN_Rodzaj=306005 or Z.TrN_Rodzaj=306006 or Z.TrN_Rodzaj=306007)
group by Z.TrN_ZwrID
having SUM(Z.Trn_RazemBrutto)*(-1)=A.Trn_RazemBrutto)

ale aby przenieść je do Optimy wycinamy wszystko do 1 WHERE czyli mamy:
A.TrN_Korekta = 0 and A.Trn_Anulowany = 0 and IsNull(A.TrN_FaId,0)=0 and not exists
(select Z.TrN_ZwrID
from CDN.TraNag Z
where Z.TrN_ZwrId = A.TrN_TrNID and
Z.TrN_Bufor=0 and (Z.TrN_Rodzaj=306000 or Z.TrN_Rodzaj=306001 or Z.TrN_Rodzaj=306002 or Z.TrN_Rodzaj=306003 or
Z.TrN_Rodzaj=306004 or Z.TrN_Rodzaj=306005 or Z.TrN_Rodzaj=306006 or Z.TrN_Rodzaj=306007)
group by Z.TrN_ZwrID
having SUM(Z.Trn_RazemBrutto)*(-1)=A.Trn_RazemBrutto)

Deklaracja A jest teoretycznie w 1 części i gdy wykonuję to zapytanie na serwerze o wszystko jest OK gdy na końcówkach to powstaje problem z A.
Max
Paweł Wiącek

Paweł Wiącek "Nie narzekaj że
masz pod górę skoro
zmierzasz na szczyt"

Temat: Problem z filtrem

A próbowałeś tak? (Nie mam przy sobie Optimki i MS ale tak bym szedł w tę stronę):
To co napisałem otoczyć nawiasami i dać to co ja wcześniej napisałem aby nie bawić się aliasami pomiędzy tabelą z Optimy z listy TraNag a filtrem.

TrN_TrNid in (
select A.TrN_TrNID
from CDN.TraNag A
where A.TrN_Korekta = 0 and A.Trn_Anulowany = 0 and IsNull(A.TrN_FaId,0)=0 and not exists
(select Z.TrN_ZwrID
from CDN.TraNag Z
where Z.TrN_ZwrId = A.TrN_TrNID and
Z.TrN_Bufor=0 and (Z.TrN_Rodzaj=306000 or Z.TrN_Rodzaj=306001 or Z.TrN_Rodzaj=306002 or Z.TrN_Rodzaj=306003 or
Z.TrN_Rodzaj=306004 or Z.TrN_Rodzaj=306005 or Z.TrN_Rodzaj=306006 or Z.TrN_Rodzaj=306007)
group by Z.TrN_ZwrID
having SUM(Z.Trn_RazemBrutto)*(-1)=A.Trn_RazemBrutto)
)

Jeśli się nie uda to zastąp formułę not exists TrN_ZweId not in (select Z.TrN_ZwrId ... )Paweł Wiącek edytował(a) ten post dnia 16.07.10 o godzinie 20:54
Maksym Dragojew

Maksym Dragojew Właściciel

Temat: Problem z filtrem

Witam
Przeogromne dzięki. Tak jak podałeś wszystko pięknie działa.
Jeszczeraz dzięki i pozdrawiam.
Max

Następna dyskusja:

Problem z filtrem po atrybu...




Wyślij zaproszenie do