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
Crystal - kod obcy na WZ
Moderator: mikey
-
piotrjadzia
- Posty: 44
- Rejestracja: 08 lip 2015, 07:25
- Rola: Administrator CDN XL
- Wersja: 2015
Re: Crystal - kod obcy na WZ
Na Twoim miejscu, podzielił bym się procedurą, dzięki temu będzie można Ci sprawniej pomóc, tak myślę 
pozdrawiam,
Balaścior
Balaścior
-
piotrjadzia
- Posty: 44
- Rejestracja: 08 lip 2015, 07:25
- Rola: Administrator CDN XL
- Wersja: 2015
Re: Crystal - kod obcy na WZ
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
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.
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
Zmieniłem selecta na
Nic to nie zmieniło:
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 Re: Crystal - kod obcy na WZ
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
Pozdrawiam,
Mateusz