SQl no graba registros de un aplicacion Visual Basic con grilla sp

15/07/2005 - 22:02 por Jose Luis | Informe spam
Tenemos un programa que se esta desarrollando con visual Basic 6.0 con base
de datos SQL Server 2000 y nuestro principal problema radica en la digitación
de información que se realiza en una de las opciones del programa, en esta
opción se digita información en una grilla Spread Designer 3.0.32 – 32 bit,
cuando se realiza la digitación se gatilla la llamada a un store procedure el
cual se encarga de grabar la información realizando un update contra la
tabla, produciéndose lo siguiente, en algunas ocasiones se digitan n
registros y los graba, pero en algún momento de forma aleatoria deja de
grabar, es decir de una digitaron por ejemplo de 1000 registros solo graba la
mitad, creyendo por supuesto que los 1000 registros se han grabado, pero
cuando se realiza un chequeo de la información esta no esta completa.

Hemos probado con muchas alternativas ya que este problema se presenta
siempre, es decir un día graba una determinada cantidad de registro y en otro
momento otra cantidad, es decir aleatoriamento graba y otras no.
Pensamos que podía ser la aplicación, por lo mismo cambiamos en varias
ocasiones el código que lleva los datos al store procedure, por ejemplo lo
ultimo que se creo fue un objeto comand.

Dim Comando As ADODB.Command
Set Comando = New ADODB.Command
Comando.ActiveConnection = DB

Comando.CommandType = adCmdStoredProc
Comando.CommandText = "Sp_GrabaGrillaResultado"
Comando.Parameters.Append Comando.CreateParameter("NroProyecto",
adBigInt, adParamInput)
Comando.Parameters.Append Comando.CreateParameter("Fono", adBigInt,
adParamInput)
Comando.Parameters.Append Comando.CreateParameter("CodResultado",
adBigInt, adParamInput)
Comando.Parameters.Append Comando.CreateParameter("Cod_C",
adVarChar, adParamInput, 2)
Comando.Parameters.Append Comando.CreateParameter("Cod_D",
adVarChar, adParamInput, 2)
Comando.Parameters.Append Comando.CreateParameter("Fecha_Mov",
adDate, adParamInput, 2)

Comando("NroProyecto").Value = lProyecto
Comando("Fono").Value = CLng(fono)
Comando("CodResultado").Value = CodResultado
Comando("Cod_C").Value = Trim(COD_C)
Comando("Cod_D").Value = Trim(COD_D)
Comando("Fecha_Mov").Value = hoy
Comando.Execute
Set Comando = Nothing

Vemos en el Profiler lo que sucede con la información que pasamos por el
store procedure y dándonos cuenta que al parecer los datos están siendo
grabados, pero lamentablemente no es así, al store procedure se le agrego el
siguiente código, antes de hacer el update
Set Implicit_Transaction Off

Con la idea que no se limitara el numero de transacciones posibles, pero
lamentablemente no funciono, además se instalo el cliente de SQL Server
actualizando también el Mdac.
Hay que señalar que cuando nos damos cuenta que la información se grabo
hasta cierto punto y seguimos digitando no recibimos ningún mensaje de parte
del servidor, que nos indique que algo esta sucediendo con esos registros que
de alguna manera no se están grabando

SERA ALGUNA CONFIGURACION DEL DRIVER DE CONEXION O SETEOS EN SQL SERVER
(buffer, temporales, restricciones,etc)

Preguntas similare

Leer las respuestas

#1 Eleazar
15/07/2005 - 23:52 | Informe spam
Hola quiza la recomendacion que hare ya la hiciste pero por si acaso.
sugiero que 'debuges' desde VB para obtener los valores de los parametros
del stored procedure y lo ejecutes en el QA y asi analizar que es lo que
esta afectando ejemplo:

Begin Tran
Exec Sp_GrabaGrillaResultado 1,'Fono',1,,1,'20050715'
Select *
From TablaGrilla
Where CampoFecha >= '20050715'
Rollback
"Jose Luis" escribió en el mensaje
news:
Tenemos un programa que se esta desarrollando con visual Basic 6.0 con


base
de datos SQL Server 2000 y nuestro principal problema radica en la


digitación
de información que se realiza en una de las opciones del programa, en esta
opción se digita información en una grilla Spread Designer 3.0.32 - 32


bit,
cuando se realiza la digitación se gatilla la llamada a un store procedure


el
cual se encarga de grabar la información realizando un update contra la
tabla, produciéndose lo siguiente, en algunas ocasiones se digitan n
registros y los graba, pero en algún momento de forma aleatoria deja de
grabar, es decir de una digitaron por ejemplo de 1000 registros solo graba


la
mitad, creyendo por supuesto que los 1000 registros se han grabado, pero
cuando se realiza un chequeo de la información esta no esta completa.

Hemos probado con muchas alternativas ya que este problema se presenta
siempre, es decir un día graba una determinada cantidad de registro y en


otro
momento otra cantidad, es decir aleatoriamento graba y otras no.
Pensamos que podía ser la aplicación, por lo mismo cambiamos en varias
ocasiones el código que lleva los datos al store procedure, por ejemplo lo
ultimo que se creo fue un objeto comand.

Dim Comando As ADODB.Command
Set Comando = New ADODB.Command
Comando.ActiveConnection = DB

Comando.CommandType = adCmdStoredProc
Comando.CommandText = "Sp_GrabaGrillaResultado"
Comando.Parameters.Append Comando.CreateParameter("NroProyecto",
adBigInt, adParamInput)
Comando.Parameters.Append Comando.CreateParameter("Fono",


adBigInt,
adParamInput)
Comando.Parameters.Append Comando.CreateParameter("CodResultado",
adBigInt, adParamInput)
Comando.Parameters.Append Comando.CreateParameter("Cod_C",
adVarChar, adParamInput, 2)
Comando.Parameters.Append Comando.CreateParameter("Cod_D",
adVarChar, adParamInput, 2)
Comando.Parameters.Append Comando.CreateParameter("Fecha_Mov",
adDate, adParamInput, 2)

Comando("NroProyecto").Value = lProyecto
Comando("Fono").Value = CLng(fono)
Comando("CodResultado").Value = CodResultado
Comando("Cod_C").Value = Trim(COD_C)
Comando("Cod_D").Value = Trim(COD_D)
Comando("Fecha_Mov").Value = hoy
Comando.Execute
Set Comando = Nothing

Vemos en el Profiler lo que sucede con la información que pasamos por el
store procedure y dándonos cuenta que al parecer los datos están siendo
grabados, pero lamentablemente no es así, al store procedure se le agrego


el
siguiente código, antes de hacer el update
Set Implicit_Transaction Off

Con la idea que no se limitara el numero de transacciones posibles, pero
lamentablemente no funciono, además se instalo el cliente de SQL Server
actualizando también el Mdac.
Hay que señalar que cuando nos damos cuenta que la información se grabo
hasta cierto punto y seguimos digitando no recibimos ningún mensaje de


parte
del servidor, que nos indique que algo esta sucediendo con esos registros


que
de alguna manera no se están grabando

SERA ALGUNA CONFIGURACION DEL DRIVER DE CONEXION O SETEOS EN SQL SERVER
(buffer, temporales, restricciones,etc)

Respuesta Responder a este mensaje
#2 Maxi
16/07/2005 - 02:08 | Informe spam
Hola, púes.. algunos detalles:

1) No usas transacciones para asegurar la operacion?
2) No tendras algun trigger que este molestando?


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Jose Luis" escribió en el mensaje
news:
Tenemos un programa que se esta desarrollando con visual Basic 6.0 con
base
de datos SQL Server 2000 y nuestro principal problema radica en la
digitación
de información que se realiza en una de las opciones del programa, en esta
opción se digita información en una grilla Spread Designer 3.0.32 - 32
bit,
cuando se realiza la digitación se gatilla la llamada a un store procedure
el
cual se encarga de grabar la información realizando un update contra la
tabla, produciéndose lo siguiente, en algunas ocasiones se digitan n
registros y los graba, pero en algún momento de forma aleatoria deja de
grabar, es decir de una digitaron por ejemplo de 1000 registros solo graba
la
mitad, creyendo por supuesto que los 1000 registros se han grabado, pero
cuando se realiza un chequeo de la información esta no esta completa.

Hemos probado con muchas alternativas ya que este problema se presenta
siempre, es decir un día graba una determinada cantidad de registro y en
otro
momento otra cantidad, es decir aleatoriamento graba y otras no.
Pensamos que podía ser la aplicación, por lo mismo cambiamos en varias
ocasiones el código que lleva los datos al store procedure, por ejemplo lo
ultimo que se creo fue un objeto comand.

Dim Comando As ADODB.Command
Set Comando = New ADODB.Command
Comando.ActiveConnection = DB

Comando.CommandType = adCmdStoredProc
Comando.CommandText = "Sp_GrabaGrillaResultado"
Comando.Parameters.Append Comando.CreateParameter("NroProyecto",
adBigInt, adParamInput)
Comando.Parameters.Append Comando.CreateParameter("Fono", adBigInt,
adParamInput)
Comando.Parameters.Append Comando.CreateParameter("CodResultado",
adBigInt, adParamInput)
Comando.Parameters.Append Comando.CreateParameter("Cod_C",
adVarChar, adParamInput, 2)
Comando.Parameters.Append Comando.CreateParameter("Cod_D",
adVarChar, adParamInput, 2)
Comando.Parameters.Append Comando.CreateParameter("Fecha_Mov",
adDate, adParamInput, 2)

Comando("NroProyecto").Value = lProyecto
Comando("Fono").Value = CLng(fono)
Comando("CodResultado").Value = CodResultado
Comando("Cod_C").Value = Trim(COD_C)
Comando("Cod_D").Value = Trim(COD_D)
Comando("Fecha_Mov").Value = hoy
Comando.Execute
Set Comando = Nothing

Vemos en el Profiler lo que sucede con la información que pasamos por el
store procedure y dándonos cuenta que al parecer los datos están siendo
grabados, pero lamentablemente no es así, al store procedure se le agrego
el
siguiente código, antes de hacer el update
Set Implicit_Transaction Off

Con la idea que no se limitara el numero de transacciones posibles, pero
lamentablemente no funciono, además se instalo el cliente de SQL Server
actualizando también el Mdac.
Hay que señalar que cuando nos damos cuenta que la información se grabo
hasta cierto punto y seguimos digitando no recibimos ningún mensaje de
parte
del servidor, que nos indique que algo esta sucediendo con esos registros
que
de alguna manera no se están grabando

SERA ALGUNA CONFIGURACION DEL DRIVER DE CONEXION O SETEOS EN SQL SERVER
(buffer, temporales, restricciones,etc)

Respuesta Responder a este mensaje
#3 Alejandro Mesa
17/07/2005 - 17:51 | Informe spam
Jose Luis,

1 - Has debugueado el sp con esos mismos parametros de entrada?
2 - Como sabe tu aplicacion que el sp tuvo exito o fallo, si la aplicacion
no hace ningun uso del valor de retorno del sp?
3 - Quizas si posteas el codigo del sp, pudieramos darte alguna recomendacion.


AMB

"Jose Luis" wrote:

Tenemos un programa que se esta desarrollando con visual Basic 6.0 con base
de datos SQL Server 2000 y nuestro principal problema radica en la digitación
de información que se realiza en una de las opciones del programa, en esta
opción se digita información en una grilla Spread Designer 3.0.32 – 32 bit,
cuando se realiza la digitación se gatilla la llamada a un store procedure el
cual se encarga de grabar la información realizando un update contra la
tabla, produciéndose lo siguiente, en algunas ocasiones se digitan n
registros y los graba, pero en algún momento de forma aleatoria deja de
grabar, es decir de una digitaron por ejemplo de 1000 registros solo graba la
mitad, creyendo por supuesto que los 1000 registros se han grabado, pero
cuando se realiza un chequeo de la información esta no esta completa.

Hemos probado con muchas alternativas ya que este problema se presenta
siempre, es decir un día graba una determinada cantidad de registro y en otro
momento otra cantidad, es decir aleatoriamento graba y otras no.
Pensamos que podía ser la aplicación, por lo mismo cambiamos en varias
ocasiones el código que lleva los datos al store procedure, por ejemplo lo
ultimo que se creo fue un objeto comand.

Dim Comando As ADODB.Command
Set Comando = New ADODB.Command
Comando.ActiveConnection = DB

Comando.CommandType = adCmdStoredProc
Comando.CommandText = "Sp_GrabaGrillaResultado"
Comando.Parameters.Append Comando.CreateParameter("NroProyecto",
adBigInt, adParamInput)
Comando.Parameters.Append Comando.CreateParameter("Fono", adBigInt,
adParamInput)
Comando.Parameters.Append Comando.CreateParameter("CodResultado",
adBigInt, adParamInput)
Comando.Parameters.Append Comando.CreateParameter("Cod_C",
adVarChar, adParamInput, 2)
Comando.Parameters.Append Comando.CreateParameter("Cod_D",
adVarChar, adParamInput, 2)
Comando.Parameters.Append Comando.CreateParameter("Fecha_Mov",
adDate, adParamInput, 2)

Comando("NroProyecto").Value = lProyecto
Comando("Fono").Value = CLng(fono)
Comando("CodResultado").Value = CodResultado
Comando("Cod_C").Value = Trim(COD_C)
Comando("Cod_D").Value = Trim(COD_D)
Comando("Fecha_Mov").Value = hoy
Comando.Execute
Set Comando = Nothing

Vemos en el Profiler lo que sucede con la información que pasamos por el
store procedure y dándonos cuenta que al parecer los datos están siendo
grabados, pero lamentablemente no es así, al store procedure se le agrego el
siguiente código, antes de hacer el update
Set Implicit_Transaction Off

Con la idea que no se limitara el numero de transacciones posibles, pero
lamentablemente no funciono, además se instalo el cliente de SQL Server
actualizando también el Mdac.
Hay que señalar que cuando nos damos cuenta que la información se grabo
hasta cierto punto y seguimos digitando no recibimos ningún mensaje de parte
del servidor, que nos indique que algo esta sucediendo con esos registros que
de alguna manera no se están grabando

SERA ALGUNA CONFIGURACION DEL DRIVER DE CONEXION O SETEOS EN SQL SERVER
(buffer, temporales, restricciones,etc)

Respuesta Responder a este mensaje
#4 jlel
18/07/2005 - 18:51 | Informe spam
Eleazar wrote:
Estimado te adjunto el codigo del Store Procedure, para que me ayudes

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

ALTER procedure Sp_GrabaGrillaResultado(
@PAR_Proyecto as numeric,
@PAR_Telefono as numeric,
@PAR_Cod_Resultado as numeric,
@PAR_Cod_C as varchar(2),
@PAR_Cod_D as varchar(2),
@PAR_Fecha_Mov as datetime)
as

SET IMPLICIT_TRANSACTIONS OFF

Update Selecciones
Set Cod_Resultado =@PAR_Cod_Resultado,
Cod_C = @PAR_Cod_C,
Cod_D = @PAR_Cod_D,
fecha_mov = @PAR_Fecha_Mov
Where Nro_Proyecto = @PAR_Proyecto
And NFon = @PAR_Telefono

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO



Hola quiza la recomendacion que hare ya la hiciste pero por si acaso.
sugiero que 'debuges' desde VB para obtener los valores de los parametros
del stored procedure y lo ejecutes en el QA y asi analizar que es lo que
esta afectando ejemplo:

Begin Tran
Exec Sp_GrabaGrillaResultado 1,'Fono',1,,1,'20050715'
Select *
From TablaGrilla
Where CampoFecha >= '20050715'
Rollback
"Jose Luis" escribió en el mensaje
news:
> Tenemos un programa que se esta desarrollando con visual Basic 6.0 con
base
> de datos SQL Server 2000 y nuestro principal problema radica en la
digitación
> de información que se realiza en una de las opciones del programa, en esta
> opción se digita información en una grilla Spread Designer 3.0.32 - 32
bit,
> cuando se realiza la digitación se gatilla la llamada a un store procedure
el
> cual se encarga de grabar la información realizando un update contra la
> tabla, produciéndose lo siguiente, en algunas ocasiones se digitan n
> registros y los graba, pero en algún momento de forma aleatoria deja de
> grabar, es decir de una digitaron por ejemplo de 1000 registros solo graba
la
> mitad, creyendo por supuesto que los 1000 registros se han grabado, pero
> cuando se realiza un chequeo de la información esta no esta completa.
>
> Hemos probado con muchas alternativas ya que este problema se presenta
> siempre, es decir un día graba una determinada cantidad de registro y en
otro
> momento otra cantidad, es decir aleatoriamento graba y otras no.
> Pensamos que podía ser la aplicación, por lo mismo cambiamos en varias
> ocasiones el código que lleva los datos al store procedure, por ejemplo lo
> ultimo que se creo fue un objeto comand.
>
> Dim Comando As ADODB.Command
> Set Comando = New ADODB.Command
> Comando.ActiveConnection = DB
>
> Comando.CommandType = adCmdStoredProc
> Comando.CommandText = "Sp_GrabaGrillaResultado"
> Comando.Parameters.Append Comando.CreateParameter("NroProyecto",
> adBigInt, adParamInput)
> Comando.Parameters.Append Comando.CreateParameter("Fono",
adBigInt,
> adParamInput)
> Comando.Parameters.Append Comando.CreateParameter("CodResultado",
> adBigInt, adParamInput)
> Comando.Parameters.Append Comando.CreateParameter("Cod_C",
> adVarChar, adParamInput, 2)
> Comando.Parameters.Append Comando.CreateParameter("Cod_D",
> adVarChar, adParamInput, 2)
> Comando.Parameters.Append Comando.CreateParameter("Fecha_Mov",
> adDate, adParamInput, 2)
>
> Comando("NroProyecto").Value = lProyecto
> Comando("Fono").Value = CLng(fono)
> Comando("CodResultado").Value = CodResultado
> Comando("Cod_C").Value = Trim(COD_C)
> Comando("Cod_D").Value = Trim(COD_D)
> Comando("Fecha_Mov").Value = hoy
> Comando.Execute
> Set Comando = Nothing
>
> Vemos en el Profiler lo que sucede con la información que pasamos por el
> store procedure y dándonos cuenta que al parecer los datos están siendo
> grabados, pero lamentablemente no es así, al store procedure se le agrego
el
> siguiente código, antes de hacer el update
> Set Implicit_Transaction Off
>
> Con la idea que no se limitara el numero de transacciones posibles, pero
> lamentablemente no funciono, además se instalo el cliente de SQL Server
> actualizando también el Mdac.
> Hay que señalar que cuando nos damos cuenta que la información se grabo
> hasta cierto punto y seguimos digitando no recibimos ningún mensaje de
parte
> del servidor, que nos indique que algo esta sucediendo con esos registros
que
> de alguna manera no se están grabando
>
> SERA ALGUNA CONFIGURACION DEL DRIVER DE CONEXION O SETEOS EN SQL SERVER
> (buffer, temporales, restricciones,etc)
>
Respuesta Responder a este mensaje
#5 jlel
18/07/2005 - 18:53 | Informe spam
Maxi wrote:

Hola, púes.. algunos detalles:

1) No usas transacciones para asegurar la operacion?
2) No tendras algun trigger que este molestando?



con respecto a la pregunta N° 1 no
la pregunta N°2 no uso triggers

te adjunto el codigo del store procedure para que me ayudes.


SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

ALTER procedure Sp_GrabaGrillaResultado(
@PAR_Proyecto as numeric,
@PAR_Telefono as numeric,
@PAR_Cod_Resultado as numeric,
@PAR_Cod_C as varchar(2),
@PAR_Cod_D as varchar(2),
@PAR_Fecha_Mov as datetime)
as

SET IMPLICIT_TRANSACTIONS OFF

Update Selecciones
Set Cod_Resultado =@PAR_Cod_Resultado,
Cod_C = @PAR_Cod_C,
Cod_D = @PAR_Cod_D,
fecha_mov = @PAR_Fecha_Mov
Where Nro_Proyecto = @PAR_Proyecto
And NFon = @PAR_Telefono

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida