Error al ejecutar SP desde apliacion en VFP.

13/03/2008 - 20:47 por jmauriciopb | Informe spam
Hola.

Tengo el siguiente SP.

CREATE PROCEDURE dbo.OPProcesoMaquinaTimeDefault @tiProcesoId As Int,
@tiMaquinaId As Int, @MyOPs varchar(8000)
AS

Create table #MyOP (iOPC Int)

DECLARE @xmlDoc int
EXEC sp_xml_preparedocument @xmlDoc OUT, @MyOPs

Insert Into #MyOP
SELECT iopcid
FROM OPENXML (@xmlDoc, '/VFPData/rsop/iopcid') WITH (iopcid int '.')

EXEC sp_xml_removedocument @xmlDoc

Select OPC.iOPCId, (sum(OPMontaje.iPliegos * OPMontaje.iPedazos) /
count(*)) As iTiraje,
OPDifTiraje.iTiraje As iTirDefault, Maquina.iTirajeHora As
iTirMaq
From OPC Inner Join OPMontaje ON OPC.iOPCId = OPMontaje.iIdOPC
Inner Join OPDifTip ON OPC.iIdOPDifTip OPDifTip.iOPDifTipId
Left Join OPDifTiraje On OPDifTip.iOPDifTipId OPDifTiraje.iIdOPDifTip
And OPDifTiraje.iIdProceso = @tiProcesoId
And OPDifTiraje.iIdMaquina = @tiMaquinaId
Inner Join Maquina ON OPDifTiraje.iIdMaquina Maquina.iMaquinaId
Inner Join #MyOP ON OPC.iOPCId = #MyOP.iOPC
Group By OPC.iOPCId, OPDifTiraje.iTiraje, Maquina.iTirajeHora

drop table #MyOP

GO

Cuando ejecuto desde Anilizador de consulas no tengo problemas

Declare @tiProcesoId As Int, @tiMaquinaId As Int, @MyOPs varchar(8000)
Set @tiProcesoId = 3
Set @tiMaquinaId = 3
Set @MyOPs '<?xml version = "1.0" encoding="Windows-1252" standalone="yes"?>
<VFPData>
<rsop>
<iopcid>10</iopcid>
</rsop>
<rsop>
<iopcid>20</iopcid>
</rsop>
</VFPData>'

EXEC OPProcesoMaquinaTimeDefault 3, 3, @MyOPs


Cuando lo ejecuto desde mi aplicacion con VFP 8.0 SP 1 con ADO 2.8
contra Sql Server 2000 SP 4 me retorna el mensaje :

"Código de excepción OLE IDispatch 0 de Microsoft OLE DB Provider for
SQL Server: Valor de carácter no válido para especificación cast.."

Lo ejecuto de la siguiente maneara:

_Screen.odBCTALK.ocnn.Execute("{CALL OPProcesoMaquinaTimeDefault(3, 3,
lcMixls)}")

la variable lcMixls tiene el mismo contenido que defino para la
variable @MyOPs en el analizador de consulta.

Probe el de varias maneras pero no doy con la solucion.

Espero me puedan ayudar.

Saludos cordiales.
Mauricio Pulla.
Cuenca-Ecuador
 

Leer las respuestas

#1 Maxi Accotto
14/03/2008 - 03:42 | Informe spam
Hola, como podra ver no es un problema de SQLServer esto, habria que ver VFP
como maneja esto con el driver, la verdad que no conozco de VFP. Probo con
.NET por ejemplo?


Microsoft MVP SQLServer
www.sqltotalconsulting.com
-

escribió en el mensaje de
noticias:
Hola.

Tengo el siguiente SP.

CREATE PROCEDURE dbo.OPProcesoMaquinaTimeDefault @tiProcesoId As Int,
@tiMaquinaId As Int, @MyOPs varchar(8000)
AS

Create table #MyOP (iOPC Int)

DECLARE @xmlDoc int
EXEC sp_xml_preparedocument @xmlDoc OUT, @MyOPs

Insert Into #MyOP
SELECT iopcid
FROM OPENXML (@xmlDoc, '/VFPData/rsop/iopcid') WITH (iopcid int '.')

EXEC sp_xml_removedocument @xmlDoc

Select OPC.iOPCId, (sum(OPMontaje.iPliegos * OPMontaje.iPedazos) /
count(*)) As iTiraje,
OPDifTiraje.iTiraje As iTirDefault, Maquina.iTirajeHora As
iTirMaq
From OPC Inner Join OPMontaje ON OPC.iOPCId = OPMontaje.iIdOPC
Inner Join OPDifTip ON OPC.iIdOPDifTip > OPDifTip.iOPDifTipId
Left Join OPDifTiraje On OPDifTip.iOPDifTipId > OPDifTiraje.iIdOPDifTip
And OPDifTiraje.iIdProceso = @tiProcesoId
And OPDifTiraje.iIdMaquina = @tiMaquinaId
Inner Join Maquina ON OPDifTiraje.iIdMaquina > Maquina.iMaquinaId
Inner Join #MyOP ON OPC.iOPCId = #MyOP.iOPC
Group By OPC.iOPCId, OPDifTiraje.iTiraje, Maquina.iTirajeHora

drop table #MyOP

GO

Cuando ejecuto desde Anilizador de consulas no tengo problemas

Declare @tiProcesoId As Int, @tiMaquinaId As Int, @MyOPs varchar(8000)
Set @tiProcesoId = 3
Set @tiMaquinaId = 3
Set @MyOPs > '<?xml version = "1.0" encoding="Windows-1252" standalone="yes"?>
<VFPData>
<rsop>
<iopcid>10</iopcid>
</rsop>
<rsop>
<iopcid>20</iopcid>
</rsop>
</VFPData>'

EXEC OPProcesoMaquinaTimeDefault 3, 3, @MyOPs


Cuando lo ejecuto desde mi aplicacion con VFP 8.0 SP 1 con ADO 2.8
contra Sql Server 2000 SP 4 me retorna el mensaje :

"Código de excepción OLE IDispatch 0 de Microsoft OLE DB Provider for
SQL Server: Valor de carácter no válido para especificación cast.."

Lo ejecuto de la siguiente maneara:

_Screen.odBCTALK.ocnn.Execute("{CALL OPProcesoMaquinaTimeDefault(3, 3,
lcMixls)}")

la variable lcMixls tiene el mismo contenido que defino para la
variable @MyOPs en el analizador de consulta.

Probe el de varias maneras pero no doy con la solucion.

Espero me puedan ayudar.

Saludos cordiales.
Mauricio Pulla.
Cuenca-Ecuador

Preguntas similares