Dodanie atrybutu

Zapytania SQL, widoki, Crystal, definicje filtrów, szybkich raportów, wydruków, API, Hydra, .NET

Moderator: mikey

AndrzejK
Posty: 47
Rejestracja: 26 wrz 2023, 14:00
Rola: Użytkownik CDN XL
Wersja: 2023

Dodanie atrybutu

Post autor: AndrzejK »

Cześć,

potrzebuję dodać atrybut, który będzie wartością z karty towaru -> kod dostawcy w momencie kiedy na FS jest wskazany konkretny towar oraz odbiorca. Jak to ogarnąć? Da się z konfiguracji klasy atrybutu, czy robić to triggerem?

Awatar użytkownika
praiser
Posty: 1091
Rejestracja: 02 lip 2014, 12:22
Rola: Handlowiec CDN XL
Wersja: 2023

Re: Dodanie atrybutu

Post autor: praiser »

powinno się dać to ogarnąć atrybutami i kopiowaniem do FS na nagłówek albo elementy, bo wg dokumentacji

W zapytaniu definiujemy jaka wartość powinna być przypisana do atrybutu na obiekcie docelowym. Wynik zapytania (select) jest podstawą określenia wartości atrybutu na obiekcie docelowym, dlatego powinien być zwrócony jako jednowierszowy recordset zbudowany z min:1 – max:6 kolumn o typach odpowiednio: Atr_Wartosc, Atr_AtrTyp, Atr_AtrFirma, Atr_AtrNumer, Atr_AtrLp, Atr_AtrSubLp.

Jak warunek do kopiowania można wrzucić:

Kod: Zaznacz cały

SELECT 
    <tu co ma być wartością> as Atr_Wartosc,
    0 as Atr_AtrTyp, 
    0 as Atr_AtrFirma,
    0 as Atr_AtrNumer,
    0 as Atr_AtrLp,
    0 as Atr_AtrSubLp
FROM CDN.TraElem
JOIN CDN.TraNag ON TrE_GIDTyp = TrN_GIDTyp 
               AND TrE_GIDNumer = TrN_GIDNumer
JOIN CDN.TwrDst ON TWD_TwrNumer = TrE_TwrNumer 
               AND TWD_KntNumer = TrN_KntNumer
WHERE {FiltrSQL}
    AND TrE_TwrNumer = 12345        --  GIDNumer konkretnego towaru
    AND TrN_GidNumer = 67890        -- GIDNumer konkretnego klienta
Ostatnio zmieniony 28 sty 2026, 16:15 przez praiser, łącznie zmieniany 1 raz.
--------------------------------
Pozdrawiam
WW

AndrzejK
Posty: 47
Rejestracja: 26 wrz 2023, 14:00
Rola: Użytkownik CDN XL
Wersja: 2023

Re: Dodanie atrybutu

Post autor: AndrzejK »

tylko pytanie, czy to zadziała to tylko na wystąpienie konkretnego kontrahenta? :)

doprecyzując: by atrybut został dodany dla kontrahenta A i towaru A, a już nie został dodany dla kontrahenta B i towaru A

Awatar użytkownika
praiser
Posty: 1091
Rejestracja: 02 lip 2014, 12:22
Rola: Handlowiec CDN XL
Wersja: 2023

Re: Dodanie atrybutu

Post autor: praiser »

tak, tak powinno zadziałać choć to tylko koncept

Pierwszy warunek to JOIN do tabeli dostawców:

Kod: Zaznacz cały

JOIN CDN.TwrDst ON TWD_TwrNumer = TrE_TwrNumer 
               AND TWD_KntNumer = TrN_KntNumer
Jeśli na karcie towaru nie ma tego kontrahenta jako dostawcy, to cały wiersz nie zostanie zwrócony (brak wyniku = brak atrybutu).

Drugi warunek w WHERE:

Kod: Zaznacz cały

AND TrE_TwrNumer = 12345        -- GIDNumer konkretnego towaru
AND TrN_KntNumer = 67890        -- GIDNumer kontrahenta (nabywcy)
Jeśli JOIN z TwrDst załatwia sprawę (chcesz tylko pary towar-kontrahent które są w TwrDst), to warunki w WHERE na konkretne GIDy są opcjonalne - potrzebne tylko gdy chcesz dodatkowo zawęzić do wybranych towarów/kontrahentów.

Odwrotnie: jeśli nieważne jest czy kontrahent jest dostawcą, to usuń JOIN a zostaw tylko WHERE na konkretne GIDy. (towar i klient)
--------------------------------
Pozdrawiam
WW

Awatar użytkownika
praiser
Posty: 1091
Rejestracja: 02 lip 2014, 12:22
Rola: Handlowiec CDN XL
Wersja: 2023

Re: Dodanie atrybutu

Post autor: praiser »

Chyba że, źle zrozumiałem pierwszy post.

Czy chodzi o to, że chcesz dodawać atrybut gdy po prostu jest jakiś konkretny towar na dokumencie handlowym, a w odbiorcy jest konkretny kontrahent?

Pytanie kluczowe: Jeśli masz wielu dostawców tego samego towaru, to który ma być przepisywany do atrybutu?

Jeśli w TwrDst jest kilka rekordów dla tego samego towaru (wielu dostawców), zapytanie SQL zwróci wiele wierszy, a system atrybutów oczekuje jednowierszowego recordset.
--------------------------------
Pozdrawiam
WW

AndrzejK
Posty: 47
Rejestracja: 26 wrz 2023, 14:00
Rola: Użytkownik CDN XL
Wersja: 2023

Re: Dodanie atrybutu

Post autor: AndrzejK »

hej, z pola kod u kontrahenta z kartoteki towaru :) czyli masz jedną pozycję. Wydaje mi się jednak najskuteczniej będzie trigger.

ODPOWIEDZ