Forum Użytkownikow Subiekt GT

InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: 6283879 w Marzec 05, 2015, 15:53:56

Tytuł: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: 6283879 w Marzec 05, 2015, 15:53:56
Witam wszystkich,
staram się wyczarować zestawienie które pokaże mi w formie tabeli wszystkie paragony gdzie w jednej kolumnie będzie suma paragonu a w drugiej kwota poszczególnych pozycji no i w trzeciej nazwa a w czwartej numer paragonu
przygotowałem jak mniej więcej miałoby to wyglądać,(plik w załączeniu) w kolumnie nazwa byłyby pozycje z paragonu
wiem już(dzięki forum) jak zrobić żeby pokazywało pozycje jednorazowe, ale nie wiem jak zrobić żeby pokazywało wszystkie pozycje z paragonów
najprawdopodobniej "p.ob_towrodzaj = 2" powinno być zamienione na coś innego
będe wdzięczny za pomoc

pozycje jednorazowe to:
SELECT
d.dok_nrpelny        AS numer,
p.ob_opis               AS nazwaa,       
p.ob_wartbrutto     AS brutto
FROM   
dok__dokument d       
LEFT JOIN dok_pozycja p         
ON d.dok_id = p.ob_dokhanid       
WHERE  p.ob_towrodzaj = 2
 
AND d.dok_DataWyst BETWEEN {DR: data wystawienia}
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: dkozlowski w Marzec 05, 2015, 17:24:54
Jeśli chcesz zwrócić wszystkie paragony to należy dodać filtr na typ dokumentu, jeśli chcesz zwrócić wszystkie pozycje dokumentu to nie należy filtrować pozycji dokumentu.
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: 6283879 w Marzec 06, 2015, 10:14:54
Dziękuje za szybką odpowiedź, nie potrafię tego zrobić i nie znalazłem podpowiedzi jasnej dla mnie na forum (wysoce prawdopodobne iż słabo szukałem), z Twojej wypowiedzi wynika że nie da się zrobić dokładnie takiego zestawienia o jakie mi chodzi (czyli to co przygotowałem jako załącznik, ale "wszystkie pozycje wszystkich dokumentów" jest wystarczająco blisko, jak w takim razie zmodyfikować tamto polecenie żeby zwracało wszystkie pozycje wszystkich paragonów a nie tylko usługi jednorazowe,
wszystkie paragony (w całości nie rozbitej na poszczególne pozycje) mogę przecież podglądnąć w "sprzedaży detalicznej", ale nie o to mi chodzi.
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: birds22 w Marzec 06, 2015, 10:57:49
Daniel nigdzie nie napisał, że się nie da....

Jeżeli chcesz filtrować tylko paragony to warunek powinien być dok_typ=21

Warunek, który masz zamieszczony (ob_towrodzaj=2) powoduje filtrowanie z pozycji paragonów tylko usług (zarówno tych z kartoteki jak i jednorazowych)
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: 6283879 w Marzec 06, 2015, 11:25:43
whoa,  zwraca mi wszystkie pozycje z paragonów dziękuję,
nad-interpretowałem w takim razie wypowiedź - najmocniej przepraszam,
teraz nazwy pokazuje tylko z usług jednorazowych a tam gdzie był sprzedawany towar z magazynu zostawia puste pole, czyli nie powinno pobierać tylko "ob_Opis" ale coś więcej, sprawdzam po kolei pozycje z dokumentacji ale nic nie zwraca wszystkich pozycji z nazwami wszystkich paragonów
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: birds22 w Marzec 06, 2015, 12:05:42
a ob_towid i tabelę tw__towar znalazłeś?
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: 6283879 w Marzec 06, 2015, 12:47:44
znalazłem i nie rozumiem najwyrażniej opisu,

polecenie:
Cytuj
SELECT
dok_nrpelny        AS numer,
ob_towid AS zxc,
ob_opis               AS nazwaa,       
ob_wartbrutto     AS brutto
FROM   
tw__towar,
dok__dokument       
LEFT JOIN dok_pozycja       
ON dok_id = ob_dokhanid       
WHERE  dok_typ=21
 
AND dok_DataWyst BETWEEN {DR: data wystawienia}
zwraca tabele z ponad milionem pozycji z czego pierwsze pareset to jedna i ta sama pozycja,
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: birds22 w Marzec 06, 2015, 12:54:16
A gdzie masz powiązanie pomiędzy tw__towar a dok_pozycja?
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: 6283879 w Marzec 09, 2015, 15:30:15
niestety nie wiem, byłbym wdzięczny za podpowiedź i przez podpowiedź mam na myśli gotowe rozwiązanie albo prawie gotowe rozwiązanie, wróciłem do
Cytuj
SELECT
dok_nrpelny        AS numer,
ob_opis               AS nazwaa,       
ob_wartbrutto     AS brutto
FROM   
dok__dokument d       
LEFT JOIN dok_pozycja p         
ON dok_id = ob_dokhanid       
WHERE  dok_typ=21
 
AND d.dok_DataWyst BETWEEN {DR: data wystawienia}
)
ponieważ jest to najbliżej tego o co mi chodzi tylko bez nazw pozycji z mojej kartoteki
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: 6283879 w Marzec 25, 2015, 15:58:42
witam ponownie, może dzisiaj znajdzie się ktoś na tyle łaskawy kto uzupełniłby zestawienie o potrzebne wartości czyli jak sugerował "birds22" o powiązanie pomiędzy tw__towar a dok_pozycja
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: marcink w Marzec 25, 2015, 20:53:46
prawie tak jak chciałeś

SELECT
(CASE When p.ob_DokHanLp =1 then  d.dok_nrpelny else '' End)        AS numer
,(CASE WHEN p.ob_DokHanLp =1 THEN CAST(d.dok_WartBrutto as varchar) ELSE '' END) as wartośćDokumentu
,(CASE WHEN t.tw_Nazwa is NULL THEN p.ob_Opis ELSE t.tw_Nazwa END) as Nazwa
,p.ob_wartbrutto     AS brutto

FROM   
dok_pozycja p
left join dok__Dokument d on p.ob_DokHanId = d.dok_Id
left join tw__Towar t on p.ob_TowId= t.tw_Id
WHERE  dok_typ=21
AND p.ob_TowRodzaj in (1,2,8)
AND d.dok_DataWyst BETWEEN {DR: data wystawienia}

Order by p.ob_Id asc
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: 6283879 w Marzec 25, 2015, 21:02:29
Szanowny Panie marcink

to nie jest prawie jak chciałem, to jest dokładnie to co chciałem i tak jak chciałem, bardzo dziękuję za pomoc wiem że nie poradziłbym sobie sam póki co ale każda taka pomoc z "gotowcem" pomaga mi zrozumieć ideę działania tego plugastwa... tzn subiekta chciałem napisać... potrafię to przerobić już w tej chwili, jeżeli będę potrzebował jeszcze kiedyś
Jeszcze raz dziękuję
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: msz3mk w Wrzesień 15, 2015, 11:23:12
Witam serdecznie,

Czy mógłby ktoś pomóc mi dopisać lub nakierować, tak by w zestawieniu wyświetlała się również nazwa kontrahenta z paragonu imiennego?
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: birds22 w Wrzesień 15, 2015, 11:30:52
Podepnij lewostronnie tabelę adr__ewid, z filtrem adr_typadresu=1 i wybierz kolumnę adr_nazwa
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: msz3mk w Wrzesień 15, 2015, 12:57:48
Dziękuję bardzo, nie mogę sobie poradzić podłączeniem tabeli, mógłbym prosić o pomoc ?
Tytuł: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: birds22 w Wrzesień 15, 2015, 13:25:53
A jak to robisz?
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: msz3mk w Wrzesień 15, 2015, 14:57:13
Cytuj
SELECT
(CASE When p.ob_DokHanLp =1 then  d.dok_nrpelny else '' End)        AS numer
,(CASE WHEN p.ob_DokHanLp =1 THEN CAST(d.dok_WartBrutto as varchar) ELSE '' END) as wartośćDokumentu
,(CASE WHEN t.tw_Nazwa is NULL THEN p.ob_Opis ELSE t.tw_Nazwa END) as Nazwa
,p.ob_wartbrutto     AS brutto
,adr_nazwa


FROM   
dok_pozycja p
left join dok__Dokument d on p.ob_DokHanId = d.dok_Id
left join tw__Towar t on p.ob_TowId= t.tw_Id
left join adr__Ewid ON dok_Id = adr_IdObiektu
WHERE  dok_typ=21
AND adr_typadresu=1
AND p.ob_TowRodzaj in (1,2,8)
AND d.dok_DataWyst BETWEEN {DR: data wystawienia}

Order by p.ob_Id asc
Tytuł: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: birds22 w Wrzesień 15, 2015, 15:44:42
Połączenie nie po dok_id bo to jest identyfikator dokumentu tylko po dok_platnikid bo to jest identyfikator płatnika z dokumentu.
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: msz3mk w Wrzesień 16, 2015, 10:19:07
Pięknie dziękuję! Działa wszystko :)
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: msz3mk w Październik 06, 2015, 10:37:44
Witam ponownie,

ZK tworzone jest na podstawie dokumentu zewnętrznego o pewnym numerze - jest to numer oryginalny dokumentu.
Na podstawie ZK jest wystawiany paragon imienny.
Chciałbym aby w zestawieniu pojawiał się numer oryginalny wspomnianego dokumentu.

Jak to technicznie wykonać ? Będę wdzięczny za pomoc.
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: birds22 w Październik 06, 2015, 10:52:06
dok_dodoknrpelny
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: msz3mk w Październik 06, 2015, 13:57:07
Dziękuję, pomoc eksperta niezawodna :)
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: msz3mk w Październik 06, 2015, 16:01:02
OK, potrzebuję jeszcze dodatkowej pomocy.

Czy można w takim zestawieniu dodać filtr, który wyświetlałby tylko te paragony, które zawierają towary o określonej nazwie, dokładniej mówiąc dane słowo w nazwie towaru ?
Np. mamy na paragonie chleb żytni, woda, pomidor; na drugim paragonie kapusta, fasolka. Jeśli dodam filtr z szukaniem w nazwie towaru "chleb" zestawienie powinno pokazać tylko pierwszy paragon.
Mam nadzieję, że jasno to sprecyzowałem, teraz pytanie jak to technicznie wykonać ?
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: marcink w Październik 07, 2015, 00:41:29
W klauzuli WHERE dodaj dok_Id IN (SELECT ob_DokHanId FROM dok_pozycje where "Twój filtr")
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: msz3mk w Październik 07, 2015, 08:14:08
Dziękuję za pomoc, obecnie zapytanie wygląda tak:

SELECT
(CASE When p.ob_DokHanLp =1 then  dok_dodoknrpelny else '' End)
,(CASE When p.ob_DokHanLp =1 then  dok_uwagi else '' End)
,dok_nrpelny
,p.ob_ilosc
,(CASE WHEN t.tw_Nazwa is NULL THEN p.ob_Opis ELSE t.tw_Nazwa END)

FROM   
dok_pozycja p
left join dok__Dokument d on p.ob_DokHanId = d.dok_Id
left join tw__Towar t on p.ob_TowId= t.tw_Id
WHERE  dok_typ=21
AND dok_Id IN (SELECT ob_DokHanId FROM dok_pozycje where "filtr")
AND p.ob_TowRodzaj in (1,2,8)
AND d.dok_DataWyst BETWEEN {DR: data wystawienia}

Order by dok_nrpelny

Niestety, wyskakuje błąd:
Cytuj
Błąd zwrócony przez SQL Server:
An expression of non-boolean type specified in a context where a condition is expected, near ')'

Będę wdzięczny za kolejną pomoc.
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: birds22 w Październik 07, 2015, 08:22:08
Nie przeklejaj tylko pomyśl:

Cytuj
AND dok_Id IN (SELECT ob_DokHanId FROM dok_pozycje where "filtr")

Filtr(warunek) sam się zdefiniuje?

BTW
Literówka - nie ma tabeli dok_pozycje
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: msz3mk w Październik 07, 2015, 08:35:53
Nie miałem wcześniej do czynienia z SQL i staram się coś załapać, jednak nie wiem w jaki sposób zdefiniować filtr :(

Zamiast tabeli dok_pozycje powinna być tw_nazwa?
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: msz3mk w Październik 07, 2015, 08:45:56
Ok, poszukałem szybko, mam nadzieję, że jestem bliżej:

AND dok_Id IN (SELECT ob_DokHanId FROM dok_dokument where tw_nazwa LIKE "%chleb%")
Tyle, że zapytanie zwraca "błąd wykonania zapytania".
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: birds22 w Październik 07, 2015, 08:57:59
Ok, poszukałem szybko, mam nadzieję, że jestem bliżej:

AND dok_Id IN (SELECT ob_DokHanId FROM dok_dokument where tw_nazwa LIKE "%chleb%")
Tyle, że zapytanie zwraca "błąd wykonania zapytania".

W wyniku podzapytania (to w nawiasach) musisz dostać identyfikatory dokumentu handlowego (ob_DokHanId) z tabeli dok_pozycja spełniające jakieś warunki

Napisałeś:

AND dok_Id IN (SELECT ob_DokHanId FROM dok_dokument where tw_nazwa LIKE "%chleb%")
Czy sprawdziłeś, że w tabeli dok_dokument (nie ma takiej tabeli bo jest dok__dokument) jest pole ob_DokHanId ?
Nie sprawdziłeś, bo tam nie ma takiego pola...
Pole ob_DokHanId jest w tabeli dok_pozycja.

Zanim umieścisz podzapytanie w zapytaniu głównym to sprawdź czy samo poprawnie działa.


Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: msz3mk w Październik 07, 2015, 09:01:43
Dziękuję doszedłem do tego, że zadziałało :)

AND dok_Id IN (SELECT ob_DokHanId FROM dok_pozycja where tw_nazwa LIKE '%chleb%')
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: msz3mk w Październik 07, 2015, 09:08:36
Powyższy kod działa dla towarów w bazie, nie działa niestety dla towarów jednorazowych na paragonie, czy da się to zmienić?
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: birds22 w Październik 07, 2015, 09:24:47
Dziękuję doszedłem do tego, że zadziałało :)

AND dok_Id IN (SELECT ob_DokHanId FROM dok_pozycja where tw_nazwa LIKE '%chleb%')
Wydaje mi się, że raczej nie, chyba że nie zrozumiałem Twoich potrzeb.

Sprecyzuj co chciałeś zrobić:

1. Wyświetlić te dokumenty, które zawierają jakiś określone pozycje (ale wszystkie pozycje z tego dokumentu)
2. Wyświetlić tylko wybrane pozycje z tych dokumentów

Powyższy kod działa dla towarów w bazie, nie działa niestety dla towarów jednorazowych na paragonie, czy da się to zmienić?

Najpierw mi odpowiedz w jakiej tabeli i w jakim polu są zapisywane treści usług jednorazowych.
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: msz3mk w Październik 07, 2015, 11:12:23
Ok, jednak zbyt optymistycznie do tego podszedłem. Wyświetliło ale tylko pozycje, które zawierają dane słowo a nie całe paragony, które zawierają choćby jedną pozycję z takim słowem.
Odpowiada to wariantowi pierwszemu: Wyświetlić te dokumenty, które zawierają jakiś określone pozycje (ale wszystkie pozycje z tego dokumentu)

Jak sprawdzić gdzie zapisywane są te pozycje ? Towar w bazie ma rodzaj towaru K, towar jednorazowy rodzaj U (tak jest na paragonie).
Tytuł: Odp: zestawienie sprzedaży z "rozwiniętymi" paragonami
Wiadomość wysłana przez: birds22 w Październik 07, 2015, 11:34:49
Ok, jednak zbyt optymistycznie do tego podszedłem. Wyświetliło ale tylko pozycje, które zawierają dane słowo a nie całe paragony, które zawierają choćby jedną pozycję z takim słowem.
Odpowiada to wariantowi pierwszemu: Wyświetlić te dokumenty, które zawierają jakiś określone pozycje (ale wszystkie pozycje z tego dokumentu)
To na początek musisz napisać zestawienie, które w wyniku da identyfikatory dokumentów zawierające wybraną pozycję

Jak sprawdzić gdzie zapisywane są te pozycje ? Towar w bazie ma rodzaj towaru K, towar jednorazowy rodzaj U (tak jest na paragonie).
K to raczej komplet nie towar - to nie jest zapis z bazy tylko z programu.
Jak chcesz napisać jakiekolwiek zestawienie jak nie znasz najważniejszych tabel?

1. Załóż sobie nowy czysty podmiot (bez danych przykładowych),
2. Dodaj towar, usługę, komplet, opakowanie do kartoteki - sprawdź jak to się zapisało do bazy (tabela tw__Towar)
3. Dodaj paragon z towarem , usługą i usługą jednorazową - sprawdź jak to się zapisało do bazy (tabele dok__Dokument, dok_Pozycja)
4. Zobacz jakie są różnice
5. Wróć z wnioskami