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:
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
Respuesta Responder a este mensaje
#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:
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 SQLServerwww.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
Respuesta Responder a este mensaje
#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:
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:
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 SQLServerwww.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



Respuesta Responder a este mensaje
#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
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida