• Domingo 22 de Diciembre de 2024, 21:16

Autor Tema:  Error Al Cerrar Ventana  (Leído 3841 veces)

kike_monarcas

  • Miembro activo
  • **
  • Mensajes: 41
    • Ver Perfil
Error Al Cerrar Ventana
« en: Miércoles 29 de Agosto de 2007, 01:00 »
0
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.

LeGatoRojo

  • Miembro HIPER activo
  • ****
  • Mensajes: 552
  • Nacionalidad: mx
    • Ver Perfil
    • LeGatoRojo
Re: Error Al Cerrar Ventana
« Respuesta #1 en: Miércoles 29 de Agosto de 2007, 01:22 »
0
jejejejej, creo que necesitamos algo de codigo para ver en que podemos ayudar  :P
Un día desperte y en lugar de dientes tenía colmillos, en lugar de manos, tenía garras; pero lo más impactante fue el color escarlata de mi pelaje.

kike_monarcas

  • Miembro activo
  • **
  • Mensajes: 41
    • Ver Perfil
Re: Error Al Cerrar Ventana
« Respuesta #2 en: Miércoles 29 de Agosto de 2007, 01:40 »
0
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.

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Error Al Cerrar Ventana
« Respuesta #3 en: Miércoles 29 de Agosto de 2007, 02:13 »
0
podrias decirnos que error te marca y si te selecciona alguna linea en especial?

kike_monarcas

  • Miembro activo
  • **
  • Mensajes: 41
    • Ver Perfil
Re: Error Al Cerrar Ventana
« Respuesta #4 en: Jueves 30 de Agosto de 2007, 00:08 »
0
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.

LeGatoRojo

  • Miembro HIPER activo
  • ****
  • Mensajes: 552
  • Nacionalidad: mx
    • Ver Perfil
    • LeGatoRojo
Re: Error Al Cerrar Ventana
« Respuesta #5 en: Jueves 30 de Agosto de 2007, 01:13 »
0
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.
Un día desperte y en lugar de dientes tenía colmillos, en lugar de manos, tenía garras; pero lo más impactante fue el color escarlata de mi pelaje.

kike_monarcas

  • Miembro activo
  • **
  • Mensajes: 41
    • Ver Perfil
Re: Error Al Cerrar Ventana
« Respuesta #6 en: Jueves 30 de Agosto de 2007, 01:38 »
0
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!