Forum Użytkownikow Subiekt GT
InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: pit3rek w Luty 21, 2018, 12:59:03
-
Witam wszystkich serdecznie :-)
Drodzy forumowicze, mam problem z którym już trochę walczę i niestety nie mogę wygrać więc zwracam się do was z prośbą o pomoc.
Potrzebuję napisać kod SQL który podświetli lub wybierze faktury które zawierają pozycje w których nazwie jest wyrażenie "lut".
Na chłopski rozum powinno działać (tabele przykładowe nie mające niestety odzwierciedlenia w bazie Subiekta GT):
SELECT * FROM faktury_przyjecia AS f_p
JOIN pozycje_fp AS p_fp
ON p_fp.id_faktury = f_p.id
WHERE p_fp.nazwa LIKE "%lut%"
GROUP BY f_p.id
Niestety, nie wiem jak przełożyć to na bazę danych Subiekta GT. Jest ona strasznie zawiła. Dostałem od firmy InsERT opis ale nie ogarniam go wystarczająco :(
Dziękuję wszystkim za pomoc.
-
Czy nie lepiej jest będąc w dziale z FZ wcisnąć F8, przestawić wyszukiwanie na "Wybierz według instynktu towaru na pozycji" i wpisać "lut", lub nawet "%lut"?
-
Niestety, nie wiem jak przełożyć to na bazę danych Subiekta GT. Jest ona strasznie zawiła. Dostałem od firmy InsERT opis ale nie ogarniam go wystarczająco :(
Dziękuję wszystkim za pomoc.
Po pierwsze nie wiem po co pisałeś do Insertu i co dostałeś skoro opis bazy danych znajduje się w pomocy do programu ? Tak informację i inne pomocne przy tworzeniu zestawień znajdziesz w dziale, do którego przeniosłem wątek. Zawsze możesz też poprosić o takie zestawienie dostawcę programu jeśli rzeczywiście będzie potrzebne.
-
Chodzi mi dokładnie o zrobienie Formatowania warunkowego SQL na liście faktur sprzedaży.
Póki co zrobiłem coś takiego:
CASE WHEN (SELECT COUNT (*) FROM dok_Pozycja
INNER JOIN tw__Towar
ON tw__Towar.tw_Id = dok_Pozycja.ob_TowId
WHERE tw_Nazwa LIKE ('%lut%') AND dok_Pozycja.ob_DokHanId = dok_Id) > 0 THEN 1 ELSE 0 END
Niestety, nie zaznacza żadnej faktury :(
-
SOA: u mnie zaznacza
1. Nie szukasz w fakturach z usługami jednorazowymi?
2. Nie masz tam innego formatowania warunkowego na tej liście?
3. Zamiast warunku WHEN (SELECT COUNT (*) FROM dok_Pozycja
INNER JOIN tw__Towar
ON tw__Towar.tw_Id = dok_Pozycja.ob_TowId
WHERE tw_Nazwa LIKE ('%lut%') AND dok_Pozycja.ob_DokHanId = dok_Id) > 0
dałbym WHEN EXISTS (SELECT * FROM dok_Pozycja
INNER JOIN tw__Towar
ON tw__Towar.tw_Id = dok_Pozycja.ob_TowId
WHERE tw_Nazwa LIKE ('%lut%') AND dok_Pozycja.ob_DokHanId = dok_Id)
W końcu nie jest istotne ile razy tylko czy w ogóle występuje takie wyrażenie
-
Działa, zapomniałem dodać odniesienie do tabeli z dokumentami. Dla potomnych:
CASE WHEN (SELECT COUNT (*) FROM dok_Pozycja
INNER JOIN tw__Towar
ON tw__Towar.tw_Id = dok_Pozycja.ob_TowId
WHERE tw_Nazwa LIKE ('%lut%') AND dok_Pozycja.ob_DokHanId = Dok.dok_Id) > 0 THEN 1 ELSE 0 END
Czyli, było:
dok_Pozycja.ob_DokHanId = dok_Id
a być powinno:
dok_Pozycja.ob_DokHanId = Dok.dok_Id
Dziękuję wszystkim :)
-
U mnie zadziałało bez tego, więc gdybyś odpowiedział na moje pytania (szególnie nr 2) wnioski mogłyby być bardziej kompletne.
-
U mnie zadziałało bez tego, więc gdybyś odpowiedział na moje pytania (szególnie nr 2) wnioski mogłyby być bardziej kompletne.
Nie miałem innego formatowania warunkowego na liście.