Crystal - kod obcy na WZ

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

Moderator: mikey

piotrjadzia
Posty: 44
Rejestracja: 08 lip 2015, 07:25
Rola: Administrator CDN XL
Wersja: 2015

Crystal - kod obcy na WZ

Post autor: piotrjadzia »

Dzień Dobry !

Walczę z umieszczeniem na dokumencie wz kodu towaru przypisanego dla kontrahenta. Podpiąłem tabele TwrKody i TwrKodyKnt. Kiedy wyrzucam na pozycję zamówienia pole TwrKod - wyświetla mi podstawowy kod towaru. Jeśli do pozycji dorzucę idkontrahenta z tabeli twrkodyknt to wyrzuca mi kody dla danego kontrahenta, ale drukuje tylko pozycje, który taki kod mają ustawiony - rozumiem, że po dopięciu pola z idem kontrahenta działa to jak sqlowy where i odrzrzuca wiersze, które nie mają kodu obcego. Jak w takim razie można wyrzucić też te rekordy, które takiego kodu nie mają? Napisalem procedurę składowaną, która w wyniku wyrzuca mi kod obcy na podstawie parametrów - id towaru i id kontrahenta. Procedura działa ok, ale kiedy próbuję ja uruchomić w crystalu - wyrzuca mi błąd o niepoprawnym złączeniu.
Czy ktoś z was robił takie wydruki i może pomóc?

Piotr

balascior
Posty: 166
Rejestracja: 27 lis 2012, 17:22
Rola: Administrator CDN XL
Wersja: 2014

Re: Crystal - kod obcy na WZ

Post autor: balascior »

Na Twoim miejscu, podzielił bym się procedurą, dzięki temu będzie można Ci sprawniej pomóc, tak myślę ;)
pozdrawiam,
Balaścior

piotrjadzia
Posty: 44
Rejestracja: 08 lip 2015, 07:25
Rola: Administrator CDN XL
Wersja: 2015

Re: Crystal - kod obcy na WZ

Post autor: piotrjadzia »

Procedura banalna - po podaniu konkretnych Idów - pod management studio wyrzuca oczekiwane dane. Jeśli pod Crystalem próbuję zbudować pole do wydruu i wywołać tą procedurę jako pole wyrażeń sql - dostaję błąd o niewłaściwym złączeniu

Kod: Zaznacz cały

GO
/****** Object:  StoredProcedure [CDN].[STO_KodObcy]    Script Date: 2015-11-30 12:34:33 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [CDN].[STO_KodObcy]
@IdTowar int, 
@IdKontrahent int
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
select ISNULL(TwK_Kod,'') as  Kod from cdn.TwrKody k
  join cdn.TwrKarty t on t.Twr_GIDNumer=k.TwK_TwrNumer
  join cdn.TwrKodyKnt kk on k.TwK_Id=kk.TKK_TwKId
  join cdn.KntKarty kh on kk.TKK_KntNumer=kh.Knt_GIDNumer
  where t.Twr_GIDNumer=@IdTowar and kh.Knt_GIDNumer=@IdKontrahent 
    
END

Monster
Posty: 184
Rejestracja: 20 mar 2012, 09:04
Rola: Konsultant CDN XL
Wersja: 2016
Lokalizacja: Wrocław

Re: Crystal - kod obcy na WZ

Post autor: Monster »

Zamiast sztywnych JOIN do tabel z kodami kontrahentów powinien być LEFT OUTER JOIN.
Zacząłbym też łączenie tabel od TwrKarty, bo ta tabela wystąpi na pewno, pozostałe niekoniecznie.

piotrjadzia
Posty: 44
Rejestracja: 08 lip 2015, 07:25
Rola: Administrator CDN XL
Wersja: 2015

Re: Crystal - kod obcy na WZ

Post autor: piotrjadzia »

Zmieniłem selecta na

Kod: Zaznacz cały

select ISNULL(TwK_Kod,'') as  Kod from cdn.TwrKarty t 
  join cdn.TwrKody k on t.Twr_GIDNumer=k.TwK_TwrNumer
  left outer join cdn.TwrKodyKnt kk on k.TwK_Id=kk.TKK_TwKId
  join cdn.KntKarty kh on kk.TKK_KntNumer=kh.Knt_GIDNumer
  where t.Twr_GIDNumer=@IdTowar and kh.Knt_GIDNumer=@IdKontrahent 
Nic to nie zmieniło:
Załączniki
bladCR.jpg

elmiq
Posty: 1025
Rejestracja: 23 sie 2010, 10:04
Rola: Administrator CDN XL
Lokalizacja: Warszawa

Re: Crystal - kod obcy na WZ

Post autor: elmiq »

Nie można wywoływać procedur z poziomu SQL Expression Field. Jeżeli potrzebujesz zwracać wartość wprowadź zapytanie bezpośrednio do SQL Expression, albo przerób procedurę na funkcję skalarną.

Pozdrawiam,
Mateusz
Mateusz Świerkosz

http://elmiq.blogspot.com/

ODPOWIEDZ