SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => Bases de Datos => Mensaje iniciado por: kike_monarcas en Miércoles 29 de Agosto de 2007, 01:00

Título: Error Al Cerrar Ventana
Publicado por: kike_monarcas en Miércoles 29 de Agosto de 2007, 01:00
Hola. Estoy realizando una aplicación que manipula los registros de una base de datos, para lo cual, al momento de registrar un artículo en almacén, presento al usuario una ventana emergente que contiene un DataGrid donde se describen los artículos que se pueden registrar en base a una lista de catálogos existentes. Necesito que al presionar la tecla Enter sobre el DataGrid de la ventana emergente retorne los datos al formulario en que se procesa el registro. Sin embargo, al presionar Enter me aparece el error de que "la instrucción xxx hace referencia a la memoria. No se puede read... Aceptar/Cancelar". Más sin embargo cuando cierro la ventana con Alt F4 funciona perfectamente. Estoy utilizando objetos ADODB.Recordset y ADODB.Command para realizar las consultas a la base de datos.

Espero que puedan ayudarme, un saludo y gracias por sus comentarios.
Título: Re: Error Al Cerrar Ventana
Publicado por: LeGatoRojo en Miércoles 29 de Agosto de 2007, 01:22
jejejejej, creo que necesitamos algo de codigo para ver en que podemos ayudar  :P
Título: Re: Error Al Cerrar Ventana
Publicado por: kike_monarcas en Miércoles 29 de Agosto de 2007, 01:40
Bien. En un formulario, el primero que aparece, hay un campo de texto en el cual el usuario coloca una clave, por ejemplo 1502. En el mismo formulario tengo una función que se encarga de establecer la instrucción sql de búsqueda...

Código: Text
  1.  
  2. // Parte de frmRegistrar
  3. Private Function buscarArticulosEnCatalogo(valor As String)
  4.     If resultset.State = adStateOpen Then
  5.         resultset.Close
  6.     End If
  7.     Select Case valor
  8.         Case "XXX"
  9.             With comando  // Variable global
  10.                 .ActiveConnection = sentenciasSQL.conexion // Conexion a la bdd
  11.                 .CommandText = "SELECT * FROM XXX where Clave = '" & cmpClave.Text & "'"
  12.             End With
  13.             With resultset  // Variable global
  14.                 .CursorType = adOpenKeyset
  15.                 .LockType = adLockOptimistic
  16.                 .Open comando
  17.             End With
  18.         // Los otros casos son similares
  19.     End Select
  20.     frmBusqueda.Show vbModal  // Es es el formulario emergente
  21.     resultset.Close
  22. End Function
  23.  
  24.  

Dentro del formulario frmBusqueda solo aparece solamente un DataGrid en el que se coloca el resultado de la búsqueda, y el código siguiente...

Código: Text
  1.  
  2. Private Sub dtgArticulos_KeyPress(KeyAscii As Integer)
  3.     If KeyAscii = 13 Then
  4.         Select Case formularioDestino
  5.              //.. El Select Case lo utilizo porque este formulario es llamado por varios formularios
  6.                 frmRegistrar.cmpColor = dtgArticulos.Columns("Color").Text
  7.                 frmRegistrar.cmpMaterial = dtgArticulos.Columns("Material").Text
  8.                 frmRegistrar.cmpTalla = dtgArticulosColumns("Talla").Text
  9.                 frmRegistrar.cmpPrecio = dtgArticulosColumns("PrecioVenta").Text
  10.                 frmRegistrar.cmpFechaRegistro.Text = Format(Date, "dd/mm/yyyy")
  11.         End Select
  12.    
  13.     Unload Me  // Aqui quiero realizar el Unload Me pero causa el  error
  14.  
  15.     End If
  16. End Sub
  17.  
  18. Private Sub Form_Load()
  19.     Set dtgArticulos.DataSource = resultset  // Esta variable es global
  20.     dtgMarcas.Columns("Color").Width = 1500
  21.     dtgMarcas.Columns("Material").Width = 1500
  22.     dtgMarcas.Columns("Talla").Width = 1500
  23.     dtgMarcas.Columns("Precio").Width = 1500
  24.     dtgMarcas.Columns("PrecioVenta").Width = 1500
  25. End Sub
  26.  
  27.  

Y el error no se produce cuando cierro la ventana con Alt F4.
Título: Re: Error Al Cerrar Ventana
Publicado por: ArKaNtOs en Miércoles 29 de Agosto de 2007, 02:13
podrias decirnos que error te marca y si te selecciona alguna linea en especial?
Título: Re: Error Al Cerrar Ventana
Publicado por: kike_monarcas en Jueves 30 de Agosto de 2007, 00:08
El error es el siguiente:

La instrucción en "0x24ec4e80" hace referencua a la memoria en "0x00000054". La memoria no se puede "read"

Haga clic en Aceptar para finalizar el programa
Haga clic en Cancelar para depurar el programa

Aceptar/Cancelar

Cuando le doy Aceptar finaliza la aplicación, pero si le doy depurar abre MS V C++ y me da el siguiente error:

Unhandled exception in VB6.exe (MSDATGRD.ocx) 0xC0000005: Access violation.

En la ventana de VB no se marca ninguna línea.
Título: Re: Error Al Cerrar Ventana
Publicado por: LeGatoRojo en Jueves 30 de Agosto de 2007, 01:13
es que estas tratando de descargar el datagrid, lo que debes hacer es descargar el form, utiliza el nombre del form en vez de me.
Título: Re: Error Al Cerrar Ventana
Publicado por: kike_monarcas en Jueves 30 de Agosto de 2007, 01:38
He probado como dices Darktigerhell, "Unload frmBusqueda" y el error aparece, pero ejecutando el programa línea por línea me he dado cuenta de que el error se produce justo cuando se llega al End Sub. He intentado también cerrando el objeto ADODB.Recordset que envia los datos al DataGrid, seguiré buscando una solución...

¡Saludos!