Procedura składowana z wykresu - błąd

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

Moderator: mikey

ZeneQ
Posty: 6
Rejestracja: 20 lip 2022, 21:47
Rola: Administrator CDN XL
Wersja: 2019

Procedura składowana z wykresu - błąd

Post autor: ZeneQ »

Witam,

Napisałem procedurkę do automatycznego generowania kodów EAN dla towarów, które ich nie mają i chciałem podpiąć ją pod wykres. Procedura działa, ale jak wywołam ją przed instrukcją SELECT wykresu, to już nie wraca z powrotem (?) i SELECT się nie wykonuje, co generuje błąd:

800A0E78 (ERR_ADO_ObjectClosed)

Jak zamienię kolejność, to SELECT działa, ale nie widać wyników działania procedury.

Kod: Zaznacz cały

@PAR ?@HS50|ZazGUID|&ZazGUID:REG= @? PAR@

DECLARE @ZZZ Varchar(50) = ??ZazGUID

SELECT 
    1 '1',
    Twr_EAN 'EAN',		
    Twr_Kod 'Kod towaru',
    Twr_Katalog 'Kod producenta',
    Twr_Nazwa 'Nazwa'
FROM
    CDN.TwrKarty
    INNER JOIN CDN.WkrZaznaczenia2 ON Twr_GIDTyp=WKZ2_GIDTyp AND TWR_GIDNumer=WKZ2_GIDNumer
WHERE WkZ2_GUID = @ZZZ

Exec CDN.TSetEan @ZZZ,1,'';
Procedura korzysta z procedury GenerujEAN, która notabene również nie chciała działać na wykresie.

Kod: Zaznacz cały

Alter Procedure [CDN].[TSetEan]
@ZazGUID VARCHAR(50),
@Zakres int,
@MinEAN varchar(40)

AS
BEGIN
SET NOCOUNT ON;
DECLARE @EAN VARCHAR(40);
EXEC CDN.GenerujEAN @Zakres,'',@EAN OUTPUT;
SET NOCOUNT OFF
SET @EAN = LEFT(@EAN, LEN(@EAN) - 1);

;WITH CTE AS (
    SELECT
        Twr_GIDTyp,
        TWR_GIDNumer,
		TWR_Kod,
        ROW_NUMBER() OVER (ORDER BY TWR_GIDNumer) AS RowNum
    FROM
        CDN.TwrKarty
    INNER JOIN
        CDN.WkrZaznaczenia2 AS wkz2 ON Twr_GIDTyp = wkz2.WKZ2_GIDTyp AND TWR_GIDNumer = wkz2.WKZ2_GIDNumer
    WHERE
    wkz2.WkZ2_GUID = @ZazGUID
    AND Twr_EAN IS NULL or Twr_EAN = ''
)
UPDATE twk SET
    twk.Twr_EAN = CDN.CyfraKontrolnaEAN(CAST(@EAN + RowNum -1 AS VARCHAR(40)))
FROM
    CDN.TwrKarty AS twk
INNER JOIN
    CTE ON twk.TWR_GIDNumer = CTE.TWR_GIDNumer 
 END
    
Ktoś pomoże?
Ostatnio zmieniony 14 wrz 2023, 09:37 przez ZeneQ, łącznie zmieniany 1 raz.

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

Re: Procedura składowana z wykresu - błąd

Post autor: praiser »

procedura nic nie zwraca stąd błąd. wykres się wysypie bez recordseta
--------------------------------
Pozdrawiam
WW

ZeneQ
Posty: 6
Rejestracja: 20 lip 2022, 21:47
Rola: Administrator CDN XL
Wersja: 2019

Re: Procedura składowana z wykresu - błąd

Post autor: ZeneQ »

Coś jeszcze jest nie tak, bo dołożyłem Select na końcu, ale problem nadal występuje.

Kod: Zaznacz cały

SELECT 1 AS ID, 2 AS ID2 

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

Re: Procedura składowana z wykresu - błąd

Post autor: praiser »

Jeśli to nie działa to obejściem może być jednak select w wykresie przed wywołaniem procedury . Procedura się wykona a odświeżenie wykresu pobierze dodane EANY.
--------------------------------
Pozdrawiam
WW

krzysieksarna
Posty: 140
Rejestracja: 22 wrz 2008, 09:29
Rola: Konsultant CDN XL
Lokalizacja: Wrocław
Kontakt:

Re: Procedura składowana z wykresu - błąd

Post autor: krzysieksarna »

Zastosuje taką konstrukcję:

WYKRES:

@PAR ?@D17|p_dataod|&p_dataod:REG={DateClwFirstDay('m')} @? PAR@
@PAR ?@D17|p_datado|&p_datado:REG={DateClwLastDay('m')} @? PAR@
@PAR ?@S50|p_nazwa|&p_nazwa:REG= @? PAR@
@PAR ?@R(SELECT Mag_GIDNumer, Mag_Kod FROM cdn.Magazyny)|p_maga|&p_maga:REG= @? PAR@
@PAR ?@N7|p_dostawa|&Dostawa:REG=0 @? @RH(999999) PAR@
SCHEAT.PROCDURA ??p_dataod ,??p_datado , ??p_maga , ??p_nazwa, ??p_dostawa

A definicja procedury:

CREATE PROCEDURE SCHEMAT.PROCEDURA
( @p_DataOd int, @p_DataDo int, @p_magnumer int, @twrnazwa varchar(150), @p_dostawa int )
AS
SET NOCOUNT ON
.........
--
select lp=1, * from ....


Krótko mówiąc, w wykresie wyłacznie parametry i wywołanie procedury a procedura na koniec wykonuje zapytania, które ma sie pojawić w tabelce wyresu
Krzysiek Sarna
http://www.infortes.pl

ODPOWIEDZ