Wydruk seryjny z listy

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

Moderator: mikey

Awatar użytkownika
czesiomisio
Posty: 14
Rejestracja: 15 cze 2015, 15:09
Rola: Użytkownik CDN XL
Wersja: 2016

Wydruk seryjny z listy

Post autor: czesiomisio »

Witam,
Proszę o pomoc w rozwiązaniu następującego problemu. Mam poniższy skrypt, który działa prawie we wszystkich przypadkach które występują w mojej firmie.
Nieobsługiwany przypadek to np dwie WM-ki do jednego dokumentu źródłowego. Wtedy na wydruku pojawia się suma elementów z tych 2 wm-ek czyli faktycznie wszystkie elementy ze źródłowego,
a powinny być dwie WM-ki, na dodatek dwa razy, w nagłówku wydruku mam prawidłowe info z numer WM i z numerem źródłowego dokumentu.

Kod: Zaznacz cały

[SQL]
@PAR ?@Hn1|CDN_Urzadzenie|CDN_Urzadzenie:2@? PAR@
@PAR ?@Hs200|Printer|Printer:''@? PAR@
SELECT MaN_ZrdTyp, MaN_ZrdNumer, Printer= ??_QPrinter FROM CDN.MagNag JOIN CDN.RptZaznaczenia2 ON RpZ2_GIDTyp = MaN_GIDTyp AND RpZ2_GIDNumer = MaN_GIDNumer WHERE ?@Hs200_NQ|Filtr:''@?

[XSL]
<xsl:stylesheet  version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
xmlns:usr="urn:the-xml-files:xslt" >
<xsl:output omit-xml-declaration="yes" method="html"/>
<msxsl:script language="VBScript" implements-prefix="usr">
    <![CDATA[

		Function WykonajWydrukDok(MaN_ZrdTyp, MaN_ZrdNumer, Drukarka_)
		Dim Format
			Set Format = CreateObject("CDN.XLXLWydrFormat")
			if (MaN_ZrdTyp = 2001) or (MaN_ZrdTyp = 2033) or  (MaN_ZrdTyp = 2034) then
				Format.ZrodloID = 1
				Format.WydrukID = 23
				Format.ID       = 2
				
				Format.FiltrTPS   = "(TrN_GIDTyp="+MaN_ZrdTyp+" AND TrN_GIDNumer="+MaN_ZrdNumer+")" 
			elseif (MaN_ZrdTyp = 960) then
				Format.ZrodloID = 1
				Format.WydrukID = 23
				Format.ID       = 2
				Format.FiltrTPS   = "(ZaN_GIDNumer="+MaN_ZrdTyp+" AND ZaN_GIDNumer="+MaN_ZrdNumer+")" 
			end if
			Format.FiltrSQL   = Format.FiltrTPS
			Format.Sortowanie = "@TXR"
			Format.Urzadzenie = ??CDN_Urzadzenie
			If ??CDN_Urzadzenie = 3 Then Format.Drukarka = Drukarka_
			Format.Wykonaj(ZmienneDyn)
			WykonajWydrukDok=""
		End Function
    ]]>
  </msxsl:script>
<xsl:output omit-xml-declaration="yes"/>
<xsl:preserve-space elements="*"/>

<xsl:template match="/">

	<xsl:for-each select="ROOT">

		<xsl:apply-templates select="RECORDSET1"/>

	</xsl:for-each>

</xsl:template>

<xsl:template match="RECORDSET1">
<xsl:apply-templates select="RECORD" mode="r1"/>
</xsl:template>

<xsl:template match="RECORD" mode="r1">

	<xsl:variable name="MaN_ZrdTyp" select="@MaN_ZrdTyp"/>

	<xsl:variable name="MaN_ZrdNumer" select="@MaN_ZrdNumer"/>

	<xsl:value-of select="usr:WykonajWydrukDok(string($MaN_ZrdTyp),string($MaN_ZrdNumer),string(@Printer))"/>

</xsl:template>


</xsl:stylesheet>

[RUN]
Dummy.bat

ODPOWIEDZ