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)
 

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)

Preguntas similares