Capturar mensajes / adevertencias, al ejecutar procedimiento almacendo.

06/08/2008 - 07:46 por Líbero Gabriel Pizarro | Informe spam
Hola, como estan...necesito poder capturar todos los mensajes que devuelve
la ejecucion de un procedimiento almacenado, al estilo
como lo hace el analizador consulta de sql 2000. (en la solapa de mensajes)
ejemplifico...
se acepta cualquier idea que me ayude...muchas gracias.

al correr el siguiente codigo en en el analizador de consultas

exec SP_Calc_HIsto '07-10-2008',1,4

la solapa de mensaje mueestra:

"(77 filas afectadas)

Actualizando periodo

(87278 filas afectadas)

Servidor: mensaje 207, nivel 16, estado 1, procedimiento
LH_Calcular_Accidentes, línea 338
Invalid column name 'diasaccidente'."

yo necesito capturar exactamente todo este texto cuando ejecuto el
procedimiento desde un lenguajhe de prog. tipo Visual Basic 6...

Muchas gracias de antemano

Preguntas similare

Leer las respuestas

#1 Jesús López
06/08/2008 - 11:56 | Informe spam
1) Los mensajes se pueden capturar en el evento InfoMessage de
ADODB.Connection
2) Los registros afectados (insertados, eliminados o actualizados) en el
parámetro RecordsAffected del método ADODB.Command.Execute y el parámetro
RecordsAffected del método ADODB.Recordset.NextRecordset
3) Los registros leídos en la propiedad RecordCount de ADODB.Recordset.
4) Los mensajes de error en la colección ADODB.Connection.Errors y en el
objeto Err de VisualBasic.

Saludos:

Jesús López
www.solidq.com



"Líbero Gabriel Pizarro" escribió en el
mensaje news:
Hola, como estan...necesito poder capturar todos los mensajes que devuelve
la ejecucion de un procedimiento almacenado, al estilo
como lo hace el analizador consulta de sql 2000. (en la solapa de
mensajes) ejemplifico...
se acepta cualquier idea que me ayude...muchas gracias.

al correr el siguiente codigo en en el analizador de consultas

exec SP_Calc_HIsto '07-10-2008',1,4

la solapa de mensaje mueestra:

"(77 filas afectadas)

Actualizando periodo

(87278 filas afectadas)

Servidor: mensaje 207, nivel 16, estado 1, procedimiento
LH_Calcular_Accidentes, línea 338
Invalid column name 'diasaccidente'."

yo necesito capturar exactamente todo este texto cuando ejecuto el
procedimiento desde un lenguajhe de prog. tipo Visual Basic 6...

Muchas gracias de antemano


Respuesta Responder a este mensaje
#2 Líbero Gabriel Pizarro
07/08/2008 - 13:22 | Informe spam
muchas gracias por su respuesta
ya esta programado todo, pero elproblema que tengo es que el evento
InfoMessage se esta llamando solo unavez en el sp
por ejemplo si el sp tiene esta forma

print 'entra'
update fichas set campor where condicion
print 'sale'



el infomessage solo se llama o captura el primer print 'entra', obviando o
no capturando el 'Sale', alguna idea de
lo que puede pasar(BUSCando en Inet...puede ver un par de
referenciaspero no logro resolverlo...alguien
podria ayudarme????

les paso los el lnk que hablan al respecto
-
http://www.psicofxp.com/forums/prog...ssage.html :
aqui es comoque aparentemente tengo que uti.lizar
ExecuteNonQuery. para ejecutar los sp, pero yo estoy trbsjando con Visual
BAsico 6.0 y no tengo ese metodo.

si alguien puede ayudar...les agradezco mucho

gabriel
"Jesús López" escribió en el
mensaje news:
1) Los mensajes se pueden capturar en el evento InfoMessage de
ADODB.Connection
2) Los registros afectados (insertados, eliminados o actualizados) en el
parámetro RecordsAffected del método ADODB.Command.Execute y el parámetro
RecordsAffected del método ADODB.Recordset.NextRecordset
3) Los registros leídos en la propiedad RecordCount de ADODB.Recordset.
4) Los mensajes de error en la colección ADODB.Connection.Errors y en el
objeto Err de VisualBasic.

Saludos:

Jesús López
www.solidq.com



"Líbero Gabriel Pizarro" escribió en el
mensaje news:
Hola, como estan...necesito poder capturar todos los mensajes que
devuelve la ejecucion de un procedimiento almacenado, al estilo
como lo hace el analizador consulta de sql 2000. (en la solapa de
mensajes) ejemplifico...
se acepta cualquier idea que me ayude...muchas gracias.

al correr el siguiente codigo en en el analizador de consultas

exec SP_Calc_HIsto '07-10-2008',1,4

la solapa de mensaje mueestra:

"(77 filas afectadas)

Actualizando periodo

(87278 filas afectadas)

Servidor: mensaje 207, nivel 16, estado 1, procedimiento
LH_Calcular_Accidentes, línea 338
Invalid column name 'diasaccidente'."

yo necesito capturar exactamente todo este texto cuando ejecuto el
procedimiento desde un lenguajhe de prog. tipo Visual Basic 6...

Muchas gracias de antemano






Respuesta Responder a este mensaje
#3 Jesús López
07/08/2008 - 20:23 | Informe spam
Asegúrate de llamar a Recordset.NextRecorset hasta que devuelva Nothing.

Dim rst As Recordset
set rst = cmd.Execute( AffectedRecords )
Do Until rst is Nothing
set rst = rst.NextRecordset
Loop

Saludos:

Jesús López


"Líbero Gabriel Pizarro" escribió en el
mensaje news:O$Mbe$H%
muchas gracias por su respuesta
ya esta programado todo, pero elproblema que tengo es que el evento
InfoMessage se esta llamando solo unavez en el sp
por ejemplo si el sp tiene esta forma

print 'entra'
update fichas set campor where condicion
print 'sale'



el infomessage solo se llama o captura el primer print 'entra', obviando o
no capturando el 'Sale', alguna idea de
lo que puede pasar(BUSCando en Inet...puede ver un par de
referenciaspero no logro resolverlo...alguien
podria ayudarme????

les paso los el lnk que hablan al respecto
-
http://www.psicofxp.com/forums/prog...ssage.html :
aqui es comoque aparentemente tengo que uti.lizar
ExecuteNonQuery. para ejecutar los sp, pero yo estoy trbsjando con Visual
BAsico 6.0 y no tengo ese metodo.

si alguien puede ayudar...les agradezco mucho

gabriel
"Jesús López" escribió en el
mensaje news:
1) Los mensajes se pueden capturar en el evento InfoMessage de
ADODB.Connection
2) Los registros afectados (insertados, eliminados o actualizados) en el
parámetro RecordsAffected del método ADODB.Command.Execute y el parámetro
RecordsAffected del método ADODB.Recordset.NextRecordset
3) Los registros leídos en la propiedad RecordCount de ADODB.Recordset.
4) Los mensajes de error en la colección ADODB.Connection.Errors y en el
objeto Err de VisualBasic.

Saludos:

Jesús López
www.solidq.com



"Líbero Gabriel Pizarro" escribió en el
mensaje news:
Hola, como estan...necesito poder capturar todos los mensajes que
devuelve la ejecucion de un procedimiento almacenado, al estilo
como lo hace el analizador consulta de sql 2000. (en la solapa de
mensajes) ejemplifico...
se acepta cualquier idea que me ayude...muchas gracias.

al correr el siguiente codigo en en el analizador de consultas

exec SP_Calc_HIsto '07-10-2008',1,4

la solapa de mensaje mueestra:

"(77 filas afectadas)

Actualizando periodo

(87278 filas afectadas)

Servidor: mensaje 207, nivel 16, estado 1, procedimiento
LH_Calcular_Accidentes, línea 338
Invalid column name 'diasaccidente'."

yo necesito capturar exactamente todo este texto cuando ejecuto el
procedimiento desde un lenguajhe de prog. tipo Visual Basic 6...

Muchas gracias de antemano










Respuesta Responder a este mensaje
#4 Líbero Gabriel Pizarro
08/08/2008 - 12:35 | Informe spam
muchas gracias Jesús, funciona pefecto.
gabriel

"Jesús López" escribió en el
mensaje news:Oufl2qL%
Asegúrate de llamar a Recordset.NextRecorset hasta que devuelva Nothing.

Dim rst As Recordset
set rst = cmd.Execute( AffectedRecords )
Do Until rst is Nothing
set rst = rst.NextRecordset
Loop

Saludos:

Jesús López


"Líbero Gabriel Pizarro" escribió en el
mensaje news:O$Mbe$H%
muchas gracias por su respuesta
ya esta programado todo, pero elproblema que tengo es que el evento
InfoMessage se esta llamando solo unavez en el sp
por ejemplo si el sp tiene esta forma

print 'entra'
update fichas set campor where condicion
print 'sale'



el infomessage solo se llama o captura el primer print 'entra', obviando
o no capturando el 'Sale', alguna idea de
lo que puede pasar(BUSCando en Inet...puede ver un par de
referenciaspero no logro resolverlo...alguien
podria ayudarme????

les paso los el lnk que hablan al respecto
-
http://www.psicofxp.com/forums/prog...ssage.html :
aqui es comoque aparentemente tengo que uti.lizar
ExecuteNonQuery. para ejecutar los sp, pero yo estoy trbsjando con Visual
BAsico 6.0 y no tengo ese metodo.

si alguien puede ayudar...les agradezco mucho

gabriel
"Jesús López" escribió en el
mensaje news:
1) Los mensajes se pueden capturar en el evento InfoMessage de
ADODB.Connection
2) Los registros afectados (insertados, eliminados o actualizados) en el
parámetro RecordsAffected del método ADODB.Command.Execute y el
parámetro RecordsAffected del método ADODB.Recordset.NextRecordset
3) Los registros leídos en la propiedad RecordCount de ADODB.Recordset.
4) Los mensajes de error en la colección ADODB.Connection.Errors y en el
objeto Err de VisualBasic.

Saludos:

Jesús López
www.solidq.com



"Líbero Gabriel Pizarro" escribió en el
mensaje news:
Hola, como estan...necesito poder capturar todos los mensajes que
devuelve la ejecucion de un procedimiento almacenado, al estilo
como lo hace el analizador consulta de sql 2000. (en la solapa de
mensajes) ejemplifico...
se acepta cualquier idea que me ayude...muchas gracias.

al correr el siguiente codigo en en el analizador de consultas

exec SP_Calc_HIsto '07-10-2008',1,4

la solapa de mensaje mueestra:

"(77 filas afectadas)

Actualizando periodo

(87278 filas afectadas)

Servidor: mensaje 207, nivel 16, estado 1, procedimiento
LH_Calcular_Accidentes, línea 338
Invalid column name 'diasaccidente'."

yo necesito capturar exactamente todo este texto cuando ejecuto el
procedimiento desde un lenguajhe de prog. tipo Visual Basic 6...

Muchas gracias de antemano














Respuesta Responder a este mensaje
#5 Oscar
25/06/2009 - 23:22 | Informe spam
Buen día Jesus,

Desafortunadamente me encuentro en la misma situación de Libero, infomessage
solamente me esta capturando el primer PRINT dentro de mis Stored Procedures.
ya me asegure de tener la rutina en mi codigo de la manera que los
especificas:

Dim cmd As ADODB.Command
Dim rs As Recordset

Set cmd = New ADODB.Command
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "miSP"

Set rs = cmd.Execute
Do Until rs Is Nothing
Set rs = rs.NextRecordset
Loop

La ejecución del SP se realiza correctamente sin embargo solamente puedo
capturar el primer PRINT que aparezca dentro del stored.

Mi cadena de conexión es como sigue:

de.cn.Open "Provider=SQLOLEDB.1; " & _
"Persist Security Info=True;" & _
"Initial Catalog=" & cmbTable.text & "; " & _
"Data Source=" & cmbServerName.text & "; " & _
"User id=" & txtUserName.text & "; password=" &
txtPassword.text & ";"

y el cursorLocation de la conexion es adUseServer

No encuentro por ningón lado el problema. Agradezco mucho cualquier
sugerencia.

Estoy utilizando SQL Server 2005 y VB6

Saludos

"Jesús López" wrote:

Asegúrate de llamar a Recordset.NextRecorset hasta que devuelva Nothing.

Dim rst As Recordset
set rst = cmd.Execute( AffectedRecords )
Do Until rst is Nothing
set rst = rst.NextRecordset
Loop

Saludos:

Jesús López


"Líbero Gabriel Pizarro" escribió en el
mensaje news:O$Mbe$H%
> muchas gracias por su respuesta
> ya esta programado todo, pero elproblema que tengo es que el evento
> InfoMessage se esta llamando solo unavez en el sp
> por ejemplo si el sp tiene esta forma
>
> print 'entra'
> update fichas set campor where condicion
> print 'sale'
>
>
>
> el infomessage solo se llama o captura el primer print 'entra', obviando o
> no capturando el 'Sale', alguna idea de
> lo que puede pasar(BUSCando en Inet...puede ver un par de
> referenciaspero no logro resolverlo...alguien
> podria ayudarme????
>
> les paso los el lnk que hablan al respecto
> -
> http://www.psicofxp.com/forums/prog...ssage.html :
> aqui es comoque aparentemente tengo que uti.lizar
> ExecuteNonQuery. para ejecutar los sp, pero yo estoy trbsjando con Visual
> BAsico 6.0 y no tengo ese metodo.
>
> si alguien puede ayudar...les agradezco mucho
>
> gabriel
> "Jesús López" escribió en el
> mensaje news:
>> 1) Los mensajes se pueden capturar en el evento InfoMessage de
>> ADODB.Connection
>> 2) Los registros afectados (insertados, eliminados o actualizados) en el
>> parámetro RecordsAffected del método ADODB.Command.Execute y el parámetro
>> RecordsAffected del método ADODB.Recordset.NextRecordset
>> 3) Los registros leídos en la propiedad RecordCount de ADODB.Recordset.
>> 4) Los mensajes de error en la colección ADODB.Connection.Errors y en el
>> objeto Err de VisualBasic.
>>
>> Saludos:
>>
>> Jesús López
>> www.solidq.com
>>
>>
>>
>> "Líbero Gabriel Pizarro" escribió en el
>> mensaje news:
>>> Hola, como estan...necesito poder capturar todos los mensajes que
>>> devuelve la ejecucion de un procedimiento almacenado, al estilo
>>> como lo hace el analizador consulta de sql 2000. (en la solapa de
>>> mensajes) ejemplifico...
>>> se acepta cualquier idea que me ayude...muchas gracias.
>>>
>>> al correr el siguiente codigo en en el analizador de consultas
>>>
>>> exec SP_Calc_HIsto '07-10-2008',1,4
>>>
>>> la solapa de mensaje mueestra:
>>>
>>> "(77 filas afectadas)
>>>
>>> Actualizando periodo
>>>
>>> (87278 filas afectadas)
>>>
>>> Servidor: mensaje 207, nivel 16, estado 1, procedimiento
>>> LH_Calcular_Accidentes, línea 338
>>> Invalid column name 'diasaccidente'."
>>>
>>> yo necesito capturar exactamente todo este texto cuando ejecuto el
>>> procedimiento desde un lenguajhe de prog. tipo Visual Basic 6...
>>>
>>> Muchas gracias de antemano
>>>
>>>
>>
>>
>
>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida