Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-10-2015
ReiCk_Z ReiCk_Z is offline
Registrado
 
Registrado: mar 2010
Posts: 6
Poder: 0
ReiCk_Z Va por buen camino
Post DBGrid no tiene nada asignado

Cordial saludo a los miembros del club.
Espero que me puedan ayudar con la siguiente inquietud.
Tengo un DBGrid que le asigno una consulta sin ningún problema, cuando ejecuto la consulta el DBGrid me carga la información sin problemas.
El problema está cuando trato de acceder a la información que contiene el DBGrid, me sale que no tiene nada asignado. Pero si vuelvo a ejecutar la consulta por segunda vez ya no pone problema. Hasta el momento de esta manera he pasado por alto este impase, pero me gustaría saber a que se debe y como solucionarlo.

Código Delphi [-]
procedure TFMenu.DBGrid5_1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 try
  if Key = VK_RETURN then
  begin
  if Assigned(DBGrid5_1.Fields[1]) then   // Al realizar este chequeo me devuelve False *
  begin                                                     
    if DBGrid5_1.SelectedField.FieldName = DM1.Q5_9.Fields[0].FieldName then
    begin
      Edit5_01.Text := DBGrid5_1.Fields[1].AsString;
    end;
  end;

*Resalto que puedo ver la información en el DBGrid pero al realizar este paso devuelve False

Les agradezco mucho la ayuda que me puedan brindar.
Responder Con Cita
  #2  
Antiguo 29-10-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola ReiCk_Z.

Algunas dudas,
Cita:
...El problema está cuando trato de acceder a la información que contiene el DBGrid, me sale que no tiene nada asignado.
  • ¿ Cuál es "textualmente" el mensaje de error que te muestra ?
  • ¿ El modo en que accedes es con el código de tu mensaje en el evento OnKeyDown ?

Cita:
...Pero si vuelvo a ejecutar la consulta por segunda vez ya no pone problema.
  • ¿ En que evento/procedimiento se ejecuta la consulta inicial ?
  • ¿ Para ejecutar la consulta por segunda vez llamas al mismo código ?
  • ¿ Se ejecuta algún código o dispara otro método entre la primer asignación que da error y la segunda que funciona ?

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 29-10-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
No deberias acceder a los datos mediante el DBGrid. Lo correcto es usar el DataSet. Si el DBGrid se mueve al registro nro 5, en realidad lo que pasa tras los bastidores es que el DataSet se movio al registro nro 5, el DBGrid "se entera magicamente", y para reflejarlo, muestra el registro nro 5 como seleccionado. Pero quien contiene el estado es el DataSet. El DBGrid solamente muestra informacion
Responder Con Cita
  #4  
Antiguo 30-10-2015
ReiCk_Z ReiCk_Z is offline
Registrado
 
Registrado: mar 2010
Posts: 6
Poder: 0
ReiCk_Z Va por buen camino
Arrow

Hola ecfisa
Respondo tus preguntas:

¿ Cuál es "textualmente" el mensaje de error que te muestra ?
Ya no me sale error porque como vez en el codigo la linea señalada evita que entre si el DBGrid no tiene nada asignado
Código Delphi [-]
if Assigned(DBGrid1.Fields[0]) then
Pero antes de implementarla el error era:
First chance exception at $006BE2FA. Exception class $C0000005 with message 'access violation at 0x006be2fa: read of address 0x00000000'.

¿ El modo en que accedes es con el código de tu mensaje en el evento OnKeyDown ?
Sí...

¿ En que evento/procedimiento se ejecuta la consulta inicial ?
R/ La consulta inicial se ejecuta en un DBLookComboBox1.CloseUp
La primera vez que selecciono un dato del DBLookComboBox1 me ejecuta la consulta y me refleja la información en el DBGrid. lo raro del asunto es que cuando me posiciono en un registro del DBGrid y le doy enter no hace nada por que supuetamente el DBgrid no tiene ningun Valor asigando. Esto no tiene logica pues pudo ver la información reflejada en el DBGrid.
Cuando vuelvo al DBLookComboBox1 y vuelvo a ejecutarlo ahora si puedo acceder a la información

¿ Para ejecutar la consulta por segunda vez llamas al mismo código ?
Sí...

¿ Se ejecuta algún código o dispara otro método entre la primer asignación que da error y la segunda que funciona ?
No...
Responder Con Cita
  #5  
Antiguo 30-10-2015
ReiCk_Z ReiCk_Z is offline
Registrado
 
Registrado: mar 2010
Posts: 6
Poder: 0
ReiCk_Z Va por buen camino
Thumbs up

Hola AgustinOrtu

He analizado lo que dijistes:

Cita:
Empezado por AgustinOrtu Ver Mensaje
No deberias acceder a los datos mediante el DBGrid. Lo correcto es usar el DataSet.
Y después de Aplicar tu sugerencia, me ejecuta el procedimiento a la primara, como debe ser.
Claro para esto me toco quitar la linea de código que tenia donde se comprobaba si el DBGrid tenia algo asignado.

Seria bueno saber a que se debe este comportamiento:
Que al ejecutar la consulta por primera vez el DBGrid muestre que no tiene nada asignado y al ejecutarlo por segunda vez si.

Si alguien sabe la razón le agradecería que la comentaran para ampliar nuestro conocimiento.

De todas maneras espero que este tema le sirva a las personas que estaban cometiendo este mismo error y que gracias a AgustinOrtu pude solventar.

También quiero agradecerle a ecfisa, por tomarse su tiempo y analizar mi pregunta.
Responder Con Cita
  #6  
Antiguo 30-10-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Solamente podemos adivinar si no tenemos el codigo

Última edición por AgustinOrtu fecha: 30-10-2015 a las 06:09:36.
Responder Con Cita
  #7  
Antiguo 30-10-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola ReiCk_Z
Cita:
Empezado por ReiCk_Z Ver Mensaje
...
Pero antes de implementarla el error era:
First chance exception at $006BE2FA. Exception class $C0000005 with message 'access violation at 0x006be2fa: read of address 0x00000000'.

Seria bueno saber a que se debe este comportamiento:
Que al ejecutar la consulta por primera vez el DBGrid muestre que no tiene nada asignado y al ejecutarlo por segunda vez si.

Si alguien sabe la razón le agradecería que la comentaran para ampliar nuestro conocimiento.
...
Viendo el mensaje, muy probablemente el error se produce por que al momento de hacer la asignación a Edit5_01 la propiedad DataSource del DBGrid aún no ha sido asignada, o en alguna parte del código que se ejecutó previamente (¿ algún evento ?) fue modificada.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Saber si un control tiene asignado OnEnter cesarsoftware OOP 17 15-06-2012 13:02:25
El ejecutable no muestra el icono asignado jcasassa Gráficos 1 17-07-2007 17:50:09
¿el DBgrid tiene memoria?? (no refersca) amadis Conexión con bases de datos 3 17-04-2006 20:43:44
Saber qué procedimento tiene asignado un evento Ohcan OOP 2 21-06-2005 13:56:38
No se nada de nada... Me ayudan???? Vampire Conexión con bases de datos 12 02-06-2004 18:14:30


La franja horaria es GMT +2. Ahora son las 16:39:42.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi