Forum Użytkownikow Subiekt GT
InsERT GT => Subiekt GT => Wątek zaczęty przez: TadWar w Styczeń 04, 2015, 18:58:37
-
Może ktoś z Państwa ma zestawienie SQL, podające nieaktywnych odbiorców.
Chodzi mi o to, żeby wyłączyć kontrahentów (ustawić jako nieaktywnych) , którzy nie dokonali zakupu towarów np. w roku 2014.
Pozdrawiam
-
Coś podobnego było tutaj http://www.forumsubiekta.pl/dodatki-zestawienia/poszukuje-rozwiazania-zestawienie-kontrahentow/msg44404/#msg44404 (http://www.forumsubiekta.pl/dodatki-zestawienia/poszukuje-rozwiazania-zestawienie-kontrahentow/msg44404/#msg44404)
Dla stałego forumowicza "wydłubałem" gotowca.
update kh__Kontrahent
set kh_Zablokowany = 1 where kh_Id in
(select kh_Id from dok__Dokument join kh__Kontrahent on dok_PlatnikId = kh_Id
where dok_Typ=2 and kh_Zablokowany = 0
group by kh_Id
having MAX(dok_DataWyst) < '2014-01-01')
-
Dziękuję Chris za zestawienie, ale jest w nim błąd.
Dopisałem przed pierwszym wierszem SELECT, bo taką miałem podpowiedź, ale zgłasza błąd z "Update ".
Jeśli mógłbyś sprawdzić składnię.
Pozdrawiam
-
"select" nie jest poprawnym zapytaniem SQL, należy dopisać na przykład "select 1".
-
Dzieki
Niestety dopisanie cyfry 1 spowodowało tylko to, że polecenie jest poprawne, ale po uruchomieniu wyświetla wiersz z "1" i dalej nic. Nie znam SQLa dlatego pytam.
-
Nie musisz się znać na SQL'u, wystarczy abyś się znał na kopiowaniu ;) Czy kod w zestawieniu SQL wygląda "identycznie" jak na forum ?
-
Do zestawienia z Forum dopisałem tylko "Select', bo tak podpowiadał test, że polecenie musi rozpoczynać się słowem kluczowym Select.
-
No dobrze, czy obecna część zestawienia SQL (poza pierwszą linią o treści "select 1") jest taka sama jak na forum ?
-
W odpowiedzi Chrisa wybrałem kod: Zaznacz, więc chyba zaznaczyło wszystko i to wkleiłem do zestawienia, nic nie zmieniałem.
-
Czyli jednak nie zrobiłeś tego co napisałem:
należy dopisać na przykład "select 1".
Zestawienie powinno wyglądać tak:
select 1
update kh__Kontrahent
set kh_Zablokowany = 1 where kh_Id in
(select kh_Id from dok__Dokument join kh__Kontrahent on dok_PlatnikId = kh_Id
where dok_Typ=2 and kh_Zablokowany = 0
group by kh_Id
having MAX(dok_DataWyst) < '2014-01-01')
-
Czy zestawienie :
select kh_Id from dok__Dokument join kh__Kontrahent on dok_PlatnikId = kh_Id
where dok_Typ=2 and kh_Zablokowany = 0
group by kh_Id
having MAX(dok_DataWyst) < '2014-01-01'
coś pokazuje?
Jeżeli tak to może oczekujesz jakiś wodotrysków w zestawieniu, a nie sprawdzasz czy kontrahenci zostali już pozmieniani...
-
Chris, to zestawienie nic nie pokazuje.
W zapytaniu chodziło mi o wykaz kontrahentów, którzy nie dokonali zakupu o określonym okresie czasu, żeby ustawić ich jako nieaktywnych.
Dziękuje Tobie i Danielowi za pomoc, posiedzę kilka godzin i sprawdzę 500 odbiorców, temat zamykam.
Pozdrawiam serdecznie
-
To zapytanie:
select 1
update kh__Kontrahent
set kh_Zablokowany = 1 where kh_Id in
(select kh_Id from dok__Dokument join kh__Kontrahent on dok_PlatnikId = kh_Id
where dok_Typ=2 and kh_Zablokowany = 0
group by kh_Id
having MAX(dok_DataWyst) < '2014-01-01')
ustawi Ci automatycznie to co chcesz.
Wykonaj je i sprawdź ręcznie czy odpowiedni kontrahenci są ustawieni jako nieaktywni.
-
Zestawienie wykonało się.
Przepraszam wszystkich za tyle korespondencji.
Myślałem, że uruchamiając zestawienie wyświetli mi się lista kontrahentów bez zakupu, ale sprawdziłem teraz w Subiekcie i zestawienie wykonało się prawidłowo.
Dziękuję za pomoc.
Tadeusz
-
Witam
Chciałem odświeżyć ten wątek bo mam bardzo podobne do tego pytanie, czy analogicznie da radę zrobić top samo dla towarów w kartotece ?
-
Witam
Chciałem odświeżyć ten wątek bo mam bardzo podobne do tego pytanie, czy analogicznie da radę zrobić top samo dla towarów w kartotece ?
Tak.