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

Preguntas similare

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:
Mostrar la cita
#2 jmauriciopb
14/03/2008 - 14:09 | Informe spam
Hola Maxi.

Gracias por responder.
lo voy aprobar con VB 6.0.

Mis conocimientos en Sql server son basicos, Maxi esta es la mejor
forma de subir data a una tabla temporal o existe alguna otra.
SELECT iopcid
FROM OPENXML (@xmlDoc, '/VFPData/rsop/iopcid') WITH (iopcid int '.')


Saludos cordiales.
Mauricio

On 13 mar, 21:42, "Maxi Accotto"
wrote:
Mostrar la cita
#3 Maxi Accotto
16/03/2008 - 16:04 | Informe spam
Hola, a una temporal? aho esta subiendo un XML, no le comprendo a que se
refiere con una temporal y que busca hacer desde fondo! pero esa sentencia
solo prepara un docimento como XML valido


Microsoft MVP SQLServer
www.sqltotalconsulting.com
-

escribió en el mensaje de
noticias:
Mostrar la cita
#4 jmauriciopb
20/03/2008 - 15:11 | Informe spam
Hola Maxi.

Antes de nada muchas gracias por su tiempo.

el objetivo de este SP es enviarle un xml con data que necesito que
recupere desde otras tablas.

Como dijo usd. anteriormente el problema es el driver ya que probe con
VB 6.0 y no retorna la data.

Modifique el SP y ahora si me retorna la data.


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

DECLARE @xmlDoc int

EXEC sp_xml_preparedocument @xmlDoc OUT, @MyOPs

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 (
SELECT iopcid
FROM OPENXML (@xmlDoc, '/VFPData/
rsoptimedefault/iopcid') WITH
(iopcid int '.')
) As t
ON OPC.iOPCId = t.iopcid
Group By OPC.iOPCId, OPDifTiraje.iTiraje, Maquina.iTirajeHora

EXEC sp_xml_removedocument @xmlDoc


Saludos cordiales.
Mauricio Pulla.
Cuenca-Ecuador
Ads by Google
Search Busqueda sugerida