Ok, this is the code of my print page:
<%
LOCAL tipo, numero, alfa, fcodcli, nTab, PathTab, PathDB
STORE "" TO tipo, numero, alfa, fcodcli, nTab, PathTab, PathDB
LOCAL totaledocumento, totalecolli, totalepeso
STORE 0 TO totaledocumento, totalecolli, totalepeso
LOCAL cimponi, cimposta, totdoc, sQta, totimponi, totimposta
STORE 0 TO cimponi, cimposta, totdoc, sQta, totimponi, totimposta
tipo = oRequest.querystring("tipo")
numero = oRequest.querystring("num")
alfa = oRequest.querystring("alfa")
fdatdoc = oRequest.QueryString("datdoc")
fcodcli = oRequest.QueryString("codcli")
nTab = "cStampa" + SYS(3)
PathTab = oProp.AppStartPath + "temp\" + nTab
PathDB = GET_PATH_AZIENDA(ALLTRIM(oSession.value("_tipodoc")))
saldoPrec = 0
* CREAZIONE TABELLA TEMPORANEA
CREATE TABLE (PathTab) FREE ( ;
aragsoc c(45) NULL, ;
aindiri c(35) NULL, ;
acap c(5) NULL, ;
alocali c(25) NULL, ;
aprovin c(2) NULL, ;
atelefo c(10) NULL, ;
numdoc n(6) NULL, ;
alfdoc c(2) NULL, ;
datdoc d NULL, ;
codcli c(7) NULL, ;
descli c(50) NULL, ;
indiri c(35) NULL, ;
cap c(5) NULL, ;
locali c(25) NULL, ;
prov c(2) NULL, ;
pivacli c(11) NULL, ;
clicfs c(16) NULL, ;
tipdoc c(3) NULL, ;
destipdoc c(50) NULL, ;
codcau n(3) NULL, ;
descau c(50) NULL, ;
codcon n(3) NULL, ;
mezzo c(50) NULL, ;
coddest c(3) NULL, ;
desdest c(50) NULL, ;
codart c(30) NULL, ;
desart c(50) NULL, ;
colli n(8) NULL, ;
qta n(15,3) NULL, ;
prezzo n(6,2) NULL,;
acconto n(6,2) NULL, ;
annota c(200) NULL, ;
codiva n(3) NULL, ;
periva n(5,2) NULL, ;
totdoc n(6,2) NULL, ;
saldop n(6,2) NULL, ;
lotto c(20) NULL, ;
imponi n(6,2) NULL, ;
imposta n(6,2) NULL)
USE
&& USE oProp.AppStartPath + "\temp\" + nTab IN 0 ALIAS cStampa
*DATI AZIENDA
SELECT * FROM PathDB + "k_aziend" ;
WHERE k_aziend.anno = YEAR(CTOD(oSession.value("_datadocumento"))) ;
INTO CURSOR cAzienda NOCONSOLE
IF RECCOUNT("cAzienda") > 0
aZragsoc = cAzienda.t_azraso
aZindiri = cAzienda.t_azindi
aZcap = cAzienda.t_az_cap
aZlocali = cAzienda.t_azloca
aZprovin = cAzienda.t_azprov
aZtelefo = cAzienda.t_azdapt + cAzienda.t_azdatl
ENDIF
* SALDO PRECEDENTE
SELECT * FROM PathDB + "k_salcfp" ;
WHERE cftiprec+cfcodice+cf__anno == "C"+ALLTRIM(fcodcli)+STR(YEAR(CTOD(oSession.value("_datadocumento"))),4) ;
INTO CURSOR cSaldi NOCONSOLE
IF RECCOUNT("cSaldi") > 0
saldoPrec = (cSaldi.cfsalini+cSaldi.cfdarper+cSaldi.cfdarpre-cSaldi.cfaveper-cSaldi.cfavepre)
ENDIF
* QUERY
SET ENGINEBEHAVIOR 70
SELECT k_docume.mvnumdoc AS numdoc, k_docume.mvalfdoc AS alfdoc, k_docume.mvdatdoc AS datdoc, ;
k_pardoc.t_tdvdes AS destipdoc, k_caumag.t_macade AS descau, ;
k_client.cfdescr1 AS descli, k_client.cfpariva AS pivacli, ;
k_traspo.t_ms_des AS mezzo, k_docume.mvdesmer AS coddestin, k_destin.dsdescr1 AS destin, ;
k_docume.mvcoddoc AS tipdoc, k_docume.mvdesart, k_docume.mvcolli, k_docume.mvqtamov, k_docume.mvvaluni, ;
k_docume.mvtotdoc, k_docume.mvaccont, k_docume.mvannota, k_codiva.t_ivaper AS periva, k_artico.arcodiva AS codiva, ;
k_docume.mvcodcau, k_docume.mvcaucon, k_docume.mvcodart, ;
k_client.cfindiri, k_client.cf___cap, k_client.cflocali, k_client.cfprovin, k_client.cfcodfis, ;
k_vettor.t_sp_des as tipvett ;
FROM PathDB + "k_docume" ;
LEFT JOIN PathDB + "k_client" ON k_docume.mvcodclf == k_client.cfcodice AND mvtiprec = "C" ;
LEFT JOIN PathDB + "k_pardoc" ON k_docume.mvcoddoc == k_pardoc.t_codice ;
LEFT JOIN PathDB + "k_caumag" ON k_docume.mvcodcau == k_caumag.t_codice ;
LEFT JOIN PathDB + "k_destin" ON k_docume.mvdesmer == k_destin.dscoddes ;
LEFT JOIN PathDB + "k_artico" ON k_docume.mvcodart == k_artico.arcodart ;
LEFT JOIN PathDB + "k_codiva" ON k_artico.arcodiva == k_codiva.t_codice ;
LEFT JOIN PathDB + "k_vettor" ON k_docume.mvcodvet == k_vettor.t_codice ;
LEFT JOIN PathDB + "k_traspo" ON k_traspo.t_codice = k_docume.mvcodspe ;
WHERE ALLTRIM(k_docume.mvcoddoc) == ALLTRIM(oSession.value("_tipodoc")) ;
AND k_docume.mvnumdoc = INT(VAL(numero)) AND ALLTRIM(k_docume.mvalfdoc) == ALLTRIM(alfa) ;
AND k_docume.mvdatdoc = CTOD(ALLTRIM(fdatdoc)) AND k_docume.mvcodclf == fcodcli AND k_docume.mvtiprec = "C" ;
GROUP BY numdoc,alfdoc,datdoc,mvcodart,mvvaluni,mvqtamov ;
INTO CURSOR cDocs NOCONSOLE
IF RECCOUNT("cDocs") > 0
DO WHILE NOT EOF("cDocs")
totalecolli = totalecolli + cDocs.mvcolli
totalepeso = totalepeso + cDocs.mvqtamov
PzNoIva = (cDocs.mvvaluni*cDocs.mvqtamov)/(1+(cDocs.periva/100)+.001)
cimponi = (cDocs.mvvaluni*cDocs.mvqtamov)
cimposta = ((cDocs.mvvaluni*cDocs.mvqtamov)*(1+(cDocs.periva/100))) - (cDocs.mvvaluni*cDocs.mvqtamov)
totimponi = totimponi + cimponi
totimposta = totimposta + cimposta
totaledocumento = totaledocumento + cimponi + cimposta
INSERT INTO (PathTab)(numdoc, alfdoc, datdoc, codcli, descli, pivacli, ;
indiri, cap, locali, prov, clicfs, ;
tipdoc, destipdoc, codcau, descau, codcon, ;
mezzo, coddest, desdest, ;
codart, desart, colli, qta, prezzo, acconto, ;
annota, codiva, periva, saldop, lotto, imponi, imposta) ;
VALUES(cDocs.numdoc, cDocs.alfdoc, cDocs.datdoc, fcodcli, cDocs.descli, cDocs.pivacli, ;
cDocs.cfindiri, cDocs.cf___cap, cDocs.cflocali, cDocs.cfprovin, cDocs.cfcodfis, ;
ALLTRIM(oSession.value("_tipodoc")), cDocs.destipdoc, cDocs.mvcodcau, cDocs.descau, cDocs.mvcaucon, ;
cDocs.mezzo, cDocs.coddestin, cDocs.destin, ;
cDocs.mvcodart, cDocs.mvdesart, cDocs.mvcolli, cDocs.mvqtamov, cDocs.mvvaluni, cDocs.mvaccont, ;
cDocs.mvannota, cDocs.codiva, cDocs.periva, saldoPrec, "", cimponi, cimposta)
UPDATE (PathTab) ;
SET aragsoc = aZragsoc, ;
aindiri = aZindiri, ;
acap = aZcap, ;
alocali = aZlocali, ;
aprovin = aZprovin, ;
atelefo = aZtelefo
SKIP IN cDocs
ENDDO
ENDIF
* STAMPA
LOCAL tcReturn
tcReturn = "NESSUN ERRORE"
TRY
LOCAL oHelper
oHelper = CREATEOBJECT("avfpHelpers.avfpReportHelper")
oHelper.cPrinterName = "35PPM PCL6"
oHelper.cReportFile = oProp.AppStartPath + "reports\doc.frx"
oHelper.cDataSource = PathTab + ".DBF"
oHelper.lAutoDropDataSource = .T.
oHelper.cReportOutput = oProp.AppStartPath + "ReportOutput.app"
oResult = oHelper.Execute()
IF NOT oResult.result
tcReturn = oResult.data
ENDIF
CATCH TO loError
tcReturn = [Error: ] + STR(loError.ERRORNO) + CHR(13) + ;
[LineNo: ] + STR(loError.LINENO) + CHR(13) + ;
[Message: ] + loError.MESSAGE + CHR(13) + ;
[Procedure: ] + loError.PROCEDURE + CHR(13) + ;
[Details: ] + loError.DETAILS + CHR(13) + ;
[StackLevel: ] + STR(loError.STACKLEVEL) + CHR(13) + ;
[LineContents: ] + loError.LINECONTENTS
ENDTRY
%>
<br/>last error<br />
<% IF NOT ISNULL(oHelper.oLastError) %>
<%=oHelper.oLastError.Description%>
<% ENDIF %>
<br/>errore try<br />
<%=tcReturn%>
<br/>log<br />
<%=oResult.Log%>