InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: exequos w Styczeń 20, 2016, 23:53:12
-
Czy ktoś mógłby się podzielić wiedzą, jakie zapytanie SQL wpisać w rozszerzonym polu własnym dla towarów, aby wynikiem było pole auto (użytkownik) z nazwą użytkownika, który dodał towar?
Dziękuję!
-
Nie ma takiej możliwości, pola własne SQL tak nie działają, umożliwiają one jedynie zbudowanie własnego słownika w oparciu o zapytanie SQL. Aby uzyskać oczekiwany efekt należy zaimplementować stosowny trigger, który uzupełni wartość pola własnego dla danego towaru.
W tym przypadku możesz rozważyć zdefiniowane domyślnej flagi dla towaru, wtedy zapisze się też informacja o użytkowniku, którą ją dodał, czyli który dodał towar.
-
problem jest taki, że flaga jest ustawiana ale zmienia się przy każdym poprawieniu towaru
kojarze ze jest bylo jakies zapytanie do sprawdzania zalogowanych uzytkownikowhttp://www.forumsubiekta.pl/subiekt/zalogowani-uzytkownicy-do-subiekta/msg12597/#msg12597 (http://www.forumsubiekta.pl/subiekt/zalogowani-uzytkownicy-do-subiekta/msg12597/#msg12597)
i tak pomyslalem ze skoro jakby sie wybralo slownik to pojawia sie zapytanie
SELECT agd_Id, agd_Nazwa FROM sl_GratAtrybutGodzinDni
to moze jest jakies zapytanie ktore by podalo zalogowanego uzytkownika?
-
problem jest taki, że flaga jest ustawiana ale zmienia się przy każdym poprawieniu towaru
Skąd masz takie informacje ? Sprawdziłeś również na bazie demo ? Nie potwierdzam takiego zachowania programu.
to moze jest jakies zapytanie ktore by podalo zalogowanego uzytkownika?
Jest, tylko co z nim chcesz zrobić ?
-
źle się wyraziłem - nie przy edycji towaru
ale przy zmianie flagi towaru (ręcznej) - zmienia się (oczywiste w sumie) poprzednia data flagi
majac w wyniku odpowiedzi zapytania (to co moge uzyskac na ta chwile to lista wszystkich komputerow zalogowanych bazujac na tym zapytaniu co podalem)
nazwe uzytkownika, ktory tworzy towar
aby sie ustawiala nazwa tego uzytkownika w tym polu
(tak jak mozna np ustawic pole z data biezaca zeby sie ustawiala jako pole wlasne - i tej daty juz sie nie zmieni)
-
źle się wyraziłem - nie przy edycji towaru ale przy zmianie flagi towaru (ręcznej) - zmienia się (oczywiste w sumie) poprzednia data flagi
Nie rozumiem dlaczego wskazujesz to jako problem, przecież jeśli zmienisz (ręcznie) pole własne to tak samo jak w przypadku flagi stracisz tę informację. Aby jej nie stracić należałoby ją zapisywać w zasobach niedostępnych dla użytkownika i przywracać wartość flagi czy pola własnego.
majac w wyniku odpowiedzi zapytania (to co moge uzyskac na ta chwile to lista wszystkich komputerow zalogowanych bazujac na tym zapytaniu co podalem)
nazwe uzytkownika, ktory tworzy towar aby sie ustawiala nazwa tego uzytkownika w tym polu
(tak jak mozna np ustawic pole z data biezaca zeby sie ustawiala jako pole wlasne - i tej daty juz sie nie zmieni)
Przecież już o tym pisałem w pierwszej odpowiedzi:
Nie ma takiej możliwości, pola własne SQL tak nie działają, umożliwiają one jedynie zbudowanie własnego słownika w oparciu o zapytanie SQL. Aby uzyskać oczekiwany efekt należy zaimplementować stosowny trigger, który uzupełni wartość pola własnego dla danego towaru.
-
jasne
po prostu częściej zdarza mi się sytuacja gdy zmieniana jest flaga a prawie nigdy pole własne
ale skoro się nie da to się nie da ;)
Czy będzie to nadużycie tego wątku, jeśli bym poprosił o przybliżenie parametrów pól własnych typu SQL (cytując za helpem), czyli przykladowo
co w odniesieniu do zawartości tabeli pd_Uzytkownik i np pola uz_Id zawiera się w parametrze @UzytkownikId (czyli jakie i czy porownywalne z ktoryms polem z tej tabeli dane zawiera "@UzytkownikId – identyfikator użytkownika zalogowanego do programu")
-
po prostu częściej zdarza mi się sytuacja gdy zmieniana jest flaga a prawie nigdy pole własne
Tu się zgodzę, że łatwiej można zmienić flagę niż pole własne, ale ciągle też nie wiem czego ostatecznie oczekujesz :( Nadmienię też, że można zablokować zmianę flagi, ale zablokować tylko dla wybranego obiektu (towaru) potrzebne będzie rozwiązanie dodatkowe (blokada).
ale skoro się nie da to się nie da ;)
Wyraźnie napisałem, że się da uzyskać oczekiwany efekt, ale w inny sposób, więc nie pisz się nie da.
Czy będzie to nadużycie tego wątku, jeśli bym poprosił o przybliżenie parametrów pól własnych typu SQL (cytując za helpem), czyli przykladowo
co w odniesieniu do zawartości tabeli pd_Uzytkownik i np pola uz_Id zawiera się w parametrze @UzytkownikId (czyli jakie i czy porownywalne z ktoryms polem z tej tabeli dane zawiera "@UzytkownikId – identyfikator użytkownika zalogowanego do programu")
Identyfikator danego obiektu to klucz główny tabeli w którym jest zapisany, w przypadku użytkowników jako parametr @UzytkownikId przekazywana jest kolumna uz_Id.
-
Odpowiadając na twoje pytanie. Trzeba napisac trigger na tabelę tw__towar, który po INSERT towaru zapisze nazwe uż do pola, niekoniecznie rozszerzonego może być to tw_pole1..8, ew do pola własnego typu słownik, którym będzie np baza danych użytkowników.
z grubsza zapis do pola własnego mógłby wyglądać tak (pisane z palca bez sprawdzenia, przedstawiam tylko schemat),musisz to sobie doszlifować
ALTER TRIGGER [dbo].[nazwatriggrea] ON [dbo].[tw_towar] --za pierwszym razem CREATE TRIGGER
FOR insert --dla dodanych towarów
AS
begin
UPDATE pw_dane --aktualizuj tabelę pól rozszerzonych
SET
pwd_Tekst02="nazwa uzytkownika" - to trzeba pogrzebać na forum
FROM tw_towar as tw
INNER JOIN pw_Dane ON pwd_IdObiektu=tw.Tw_Id and pwd_TypObiektu=-14
inner join inserted as twci on tw.tw_id=twci.tw_id --zapis tylko do rekordów zmienionych
end
może da się prościej...