如何在Visual Studio Code中使用XSD将参数传递给Subreport?

第一次在这里发布。

我读了很多书,找不到解决我问题的答案。

我正在创建一个报表,以使用Crystal Report和Visual Studio Code显示账单。我是通过从XML文件创建XSD,然后使用CR创建报告来实现的。

我创建了2个查询,这些查询显示了我需要的所有信息,但是我找不到使用其中一个报告作为子报告的方法。

当我在CR中将一个报告作为子报告插入时,VSC在子报告中引发异常:

Excepción no controlada: System.NotSupportedException: No se admite dentro de subinformes.
   en CrystalDecisions.CrystalReports.Engine.ReportDocument.get_ParameterFields()
   en Idea.GesComWeb.Reports.Model.CrystalReport.LogInfo(action`1 log) en C:\Development\GesComWeb\gcw-backend\Reports\src\Model\Reports\Crystal\CrystalReport.cs:línea 294     
   en Idea.GesComWeb.Utils.ReportsTool.Program.LogReportInfo()
   en Idea.GesComWeb.Utils.ReportsTool.Program.RenderReport()
   en Idea.GesComWeb.Utils.ReportsTool.Program.Main(String[] args)
The terminal process terminated with exit code: 1

我认为问题出在子报表中,经过数小时尝试自己解决这个问题(并向人们询问并询问)后,我无法解决该问题。

我的2个代码如下:

这是帐单的标题:

<Report xsi:type="crystalReport" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xsi:noNamespaceSchemaLocation="../sqi.xsd">
  <Id>61837efa-414c-4330-807a-b8101e6bb48a</Id>
  <Name>Factura</Name>
  <Category>ventas</Category>
  <Module>ventas</Module>
  <Description>Muestra la factura</Description>
  <Resources>
    <Resource repository="Local" location="/ventas" name="factura.rpt"/>
  </Resources> 
  <PreVariables>
  </PreVariables>
  <ParametersGroups>
    <ParametersGroup name="comprobante" title="Comprobante" layout="column">
    <Parameter name="ventaComprobanteId" title="Comprobante ID" required="true" type="int">
        <Default xsi:type="int">1</Default>
    </Parameter>
  </ParametersGroup>
  </ParametersGroups>
  <Variables/>
  <DatasourceFilters>
  </DatasourceFilters>
  <Datasources>
    <Datasource xsi:type="sql" name="Cabecera" connection="gcw" skipCount="0">
      <Query xsi:type="script" valueType="string" lang="tpl"><![CDATA[
SELECT 
TC.Letracomprobante AS 'Letra',TC.CodigoFe AS 'CodigoFE',TC.Codigo AS 'TipoComprobante',VC.NumeroComprobante AS 'NumeroComprobante',VC.PuntoVentaID AS 'PuntodeVenta',date(VC.FechaCreacion) as 'FechaFactura',EM.Inicioactividad AS 'Inicioactividad',EF.EntidadID 'CodigoCliente',EF.RazonSocial AS 'RazonSocial',ED.CalleStr AS 'Direccion',EF.Documento 'Documento',CI.Descripcion 'CondicionIVA',E.Telefono 'Telefono',ED.CodigoPostal AS 'CodigoPostal',L.Nombre AS  'Localidad',CP.Descripcion AS 'CondicionPago',EMP.Codigo as 'CodigoVendedor',RP.Codigo as 'CodigoZona',RP.Descripcion AS 'Zona',V.FechaEntrega 'FechaEntrega',VC.FechaVencimientoCAE 'VencimientoCAE',VC.CAE 'NumeroCAE',VC.Id 'ventaComprobanteId',(select Nombre from Entidad where Entidad.Id = EMP.EntidadID) as 'Vendedor',(SELECT EntidadFiscal.NroIngresosBrutos FROM Venta INNER JOIN Empresa ON Empresa.Id = Venta.EmpresaID INNER JOIN Entidad ON Entidad.Id = Empresa.Id INNER JOIN EntidadFiscal ON EntidadFiscal.EntidadID = Entidad.Id INNER JOIN EntidadDireccion ON EntidadDireccion.Id = Empresa.Id WHERE Empresa.Id  =EM.Id AND Venta.Id = V.Id) as 'NroIngresosBrutos',(SELECT EntidadFiscal.Documento FROM Venta INNER JOIN Empresa ON Empresa.Id = Venta.EmpresaID INNER JOIN Entidad ON Entidad.Id = Empresa.Id INNER JOIN EntidadFiscal ON EntidadFiscal.EntidadID = Entidad.Id INNER JOIN EntidadDireccion ON EntidadDireccion.Id = Empresa.Id WHERE Empresa.Id  =EM.Id AND Venta.Id = V.Id) as 'CUIT',(SELECT Nombre FROM Entidad INNER JOIN Empresa ON Empresa.Id = Entidad.Id INNER JOIN Venta ON Venta.EmpresaId = Empresa.Id WHERE Empresa.Id = EM.Id AND Venta.Id = V.Id) as 'EmpresaNombre',(SELECT Telefono FROM Entidad INNER JOIN Empresa ON Empresa.Id = Entidad.Id INNER JOIN Venta ON Venta.EmpresaId = Empresa.Id WHERE Empresa.Id = EM.Id AND Venta.Id = V.Id) AS 'EmpresaTelefono',(SELECT Email FROM Entidad INNER JOIN Empresa ON Empresa.Id = Entidad.Id INNER JOIN Venta ON Venta.EmpresaId = Empresa.Id WHERE Empresa.Id = EM.Id AND Venta.Id = V.Id) as 'EmpresaMail',(SELECT Provincia.Descripcion FROM Venta INNER JOIN Empresa ON Empresa.Id = Venta.EmpresaID INNER JOIN Entidad ON Entidad.Id = Empresa.Id INNER JOIN EntidadDireccion ON EntidadDireccion.Id = Empresa.Id inner JOIN Localidad ON Localidad.Id = EntidadDireccion.LocalidadId INNER JOIN Departamento ON Departamento.Id = EntidadDireccion.DepartamentoID INNER JOIN Provincia ON Provincia.Id = Departamento.ProvinciaID WHERE Empresa.Id  =EM.Id AND Venta.Id = V.Id) as 'EmpresaProvincia',(concat((SELECT CalleStr FROM Venta INNER JOIN Empresa ON Empresa.Id = Venta.EmpresaID INNER JOIN Entidad ON Entidad.Id = Empresa.Id INNER JOIN EntidadDireccion ON EntidadDireccion.Id = Empresa.Id WHERE Empresa.Id  =EM.Id AND Venta.Id = V.Id),' ',(SELECT Altura FROM Venta INNER JOIN Empresa ON Empresa.Id = Venta.EmpresaID INNER JOIN Entidad ON Entidad.Id = Empresa.Id INNER JOIN EntidadDireccion ON EntidadDireccion.Id = Empresa.Id WHERE Empresa.Id  =EM.Id AND Venta.Id = V.Id))) as 'EmpresaDomicilio',(SELECT Localidad.Nombre FROM Venta INNER JOIN Empresa ON Empresa.Id = Venta.EmpresaID INNER JOIN Entidad ON Entidad.Id = Empresa.Id INNER JOIN EntidadDireccion ON EntidadDireccion.Id = Empresa.Id INNER JOIN Localidad ON Localidad.Id = EntidadDireccion.LocalidadID WHERE Empresa.Id  =EM.Id AND Venta.Id = V.Id) as 'EmpresaLocalidad',(SELECT CodigoPostal FROM Venta INNER JOIN Empresa ON Empresa.Id = Venta.EmpresaID INNER JOIN Entidad ON Entidad.Id = Empresa.Id INNER JOIN EntidadDireccion ON EntidadDireccion.Id = Empresa.Id WHERE Empresa.Id  =EM.Id AND Venta.Id = V.Id) as 'EmpresaCP',VI.PrecioNetoUnitarioOriginal,VI.PrecioNetoUnitario,VI.ImpuestoInternoUnitario,VI.Cantidad,VI.AlicuotaIvaTotal,I.Codigo,I.Descripcion,AI.Porcentaje,U.Nombre
FROM VentaComprobante VC
INNER JOIN TipoComprobante TC ON TC.Id = VC.TipoComprobanteID
INNER JOIN Venta V ON V.Id = VC.VentaID
INNER JOIN EntidadFiscal EF ON EF.EntidadID = V.EntidadFiscalID
INNER JOIN Empresa EM ON EM.Id = V.EmpresaID
INNER JOIN Entidad E ON E.Id=EF.EntidadID
INNER JOIN EntidadDireccion ED ON ED.EntidadID = E.Id
LEFT join Localidad L on L.Id = ED.LocalidadID
inner join Cliente Cli on Cli.Id = V.ClienteID
inner join CondicionPago CP on CP.Id = Cli.CondicionPagoID
inner join Empleado EMP on EMP.Id = V.VendedorID
inner join RutaPreventa RP on RP.Id = V.RutaID
INNER JOIN CondicionIva CI ON CI.Id = EF.CondicionIvaID
inner JOIN VentaComprobanteItem VCI ON VC.ID=VCI.VentaComprobanteID
inner join VentaItem VI ON VCI.VentaItemID=VI.Id
INNER JOIN AlicuotaIva AI ON AI.Id = VI.AlicuotaIvaID
INNER JOIN Item I ON I.Id = VI.ItemID
INNER JOIN Unidad U ON U.Id = VI.UnidadID
where
VC.Id = $ventaComprobanteId
$!Debug
]]>
 </Query>
    </Datasource>
  </Datasources>
  <DatasourceMappings/>
</Report>

这是账单的底部,按税种加总并分组(一项可能会受到多种税款的影响):

<Report xsi:type="crystalReport" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xsi:noNamespaceSchemaLocation="../sqi.xsd">
  <Id>f5ea4698-5b0c-44d5-a6ad-df048f220091</Id>
  <Name>SubtotalFactura</Name>
  <Category>ventas</Category>
  <Module>ventas</Module>
  <Description>Muestra los Importe totales</Description>
  <Resources>
    <Resource repository="Local" location="/ventas" name="Subtotalfactura.rpt"/>
  </Resources> 
  <PreVariables>
  </PreVariables>
  <ParametersGroups>
    <ParametersGroup name="comprobante" title="Comprobante" layout="column">
    <Parameter name="ventaComprobanteId" title="Comprobante ID" required="true" type="int">
        <Default xsi:type="int">1</Default>
    </Parameter>
  </ParametersGroup>
  </ParametersGroups>
  <Variables/>
  <DatasourceFilters>
  </DatasourceFilters>
  <Datasources>
<Datasource xsi:type="sql" name="Totales" connection="gcw" skipCount="0">
    <Query xsi:type="script" valueType="string" lang="tpl"><![CDATA[
      SELECT 
IV.Codigo,IV.Descripcion,VII.Alicuota,sum(VII.Importe) 'Importe'
FROM VentaComprobante VC inner JOIN VentaComprobanteItem VCI ON VC.ID=VCI.VentaComprobanteID
inner join VentaItem VI ON VCI.VentaItemID=VI.Id
INNER JOIN AlicuotaIva AI ON AI.Id = VI.AlicuotaIvaID
INNER JOIN Item I ON I.Id = VI.ItemID
INNER JOIN Unidad U ON U.Id = VI.UnidadID
INNER JOIN VentaItemImpuesto VII ON VII.VentaItemID = VI.Id
INNER JOIN ImpuestoVenta IV ON VII.ImpuestoID=IV.Id
where VC.Id = $ventaComprobanteId
GROUP BY IV.Descripcion,IV.Codigo,VC.Id

UNION

SELECT 
-2 Codigo,'IVA',sum(VI.AlicuotaIvaTotal) 'Importe'
FROM VentaComprobante VC inner JOIN VentaComprobanteItem VCI ON VC.ID=VCI.VentaComprobanteID
inner join VentaItem VI ON VCI.VentaItemID=VI.Id
INNER JOIN AlicuotaIva AI ON AI.Id = VI.AlicuotaIvaID
INNER JOIN Item I ON I.Id = VI.ItemID
INNER JOIN Unidad U ON U.Id = VI.UnidadID
where VC.Id = $ventaComprobanteId
GROUP BY AI.Porcentaje,VC.Id

UNION

SELECT 
-1 Codigo,'NETO',sum(VI.PrecioNetoUnitario*VI.Cantidad) 'Importe'
FROM VentaComprobante VC inner JOIN VentaComprobanteItem VCI ON VC.ID=VCI.VentaComprobanteID
inner join VentaItem VI ON VCI.VentaItemID=VI.Id
INNER JOIN AlicuotaIva AI ON AI.Id = VI.AlicuotaIvaID
INNER JOIN Item I ON I.Id = VI.ItemID
INNER JOIN Unidad U ON U.Id = VI.UnidadID
where VC.Id = $ventaComprobanteId
GROUP BY AI.Porcentaje,VC.Id

ORDER BY 1 
$!Debug
]]>
 </Query>
    </Datasource>
  </Datasources>
  <DatasourceMappings/>
</Report>

我的问题是:

如何将参数传递到子报表,以便在发送账单ID时,两个报表(主报表和子报表)都显示同一文档的信息?

我尝试使用Crystal Report编辑子报表并更改链接,创建新参数,然后在主报表和子报表中使用它们,但没有任何效果。我知道我想念一些东西,但我不知道它是什么。

希望我很清楚,有人可以和我分享一些信息。

致谢

Jack2090 回答:如何在Visual Studio Code中使用XSD将参数传递给Subreport?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3136348.html

大家都在问