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 07-06-2010
Avatar de chino150
chino150 chino150 is offline
Miembro
 
Registrado: dic 2007
Posts: 86
Poder: 17
chino150 Va por buen camino
Grid Index out of range

Saludos a todos,

mi consulta es la seguiente tengo delphi 7, mysql 5.0, Zeos 6.0 cuando guardo un nuevo registro y luego navego al ultimo registro me da el siguiente error Grid Index out of range cual es la causa de este error y como es la solución.


Gracias de ante manos!!!!
Responder Con Cita
  #2  
Antiguo 07-06-2010
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
Faust Va por buen camino
Puedes detallar más tu problema, parece que el error se trata de un componente visual ya que dice Grid Index out of range, ¿qué componentes viusales usas? y si podrías poner en que parte de tu codigo da el error.
__________________
Herr Heins Faust
Responder Con Cita
  #3  
Antiguo 08-06-2010
Avatar de chino150
chino150 chino150 is offline
Miembro
 
Registrado: dic 2007
Posts: 86
Poder: 17
chino150 Va por buen camino
Cita:
Empezado por Faust Ver Mensaje
Puedes detallar más tu problema, parece que el error se trata de un componente visual ya que dice Grid Index out of range, ¿qué componentes viusales usas? y si podrías poner en que parte de tu codigo da el error.
El componente es dbGrid no es el código que marca el error todo fa bien el guarda las modificaciones es cuando le hago click al boton de sigiente o se mueve el siguiente registro que marca el error de todas forma este es el código
Código Delphi [-]
procedure TfrmGAportacion.btnAceptarClick(Sender: TObject);
begin
    if txtRecibo.Text = '' then
        begin
        MessageDlg ('El campo Recibo debe tener un valor.', mtWarning, [mbok], 0);
        txtRecibo.setfocus;
        end;
     if txtNombre.Text = '' then
        begin
        MessageDlg ('El campo Nombre debe tener un valor.', mtWarning, [mbok], 0);
        txtNombre.SetFocus;
        end;
     if txtAporte.Text = '' then
        begin
        MessageDlg ('El campo Aporte debe tener un valor.', mtWarning, [mbok], 0);
        txtAporte.SetFocus;
        end;
     if dblTransac.Text = '' then
        begin
        MessageDlg ('El campo Transacción debe tener un valor.', mtWarning, [mbok], 0);
        txtAporte.SetFocus;
        end;
     if md.qryAportaciones.State in [dsinsert, dsedit] then
        begin
          try
           md.qryAportaciones.Post;
           md.qryAportaciones.Insert;
           except
             txtNombre.setfocus;
          raise;
       end;
    end;
       txtRecibo.SetFocus
end;
end.

Gracias Faust
Responder Con Cita
  #4  
Antiguo 08-06-2010
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
Faust Va por buen camino
Va...

Este código no me dice mucho...

Si estás haciendo la edición sobre un dbGrid y después pulsas el botón Aceptar del que me pones el código... pues no es necesario hacer un Post, pues al terminar de editar o insertar registros en un dbGrid, el post se hace solito al salir del control, saltar a otra fila o llegar al final de tu captura y dar enter, en caso de querer cancelarla tienes que pulsar ESC, este manejo lo hace solito el dbGrid.

¿cuál es el objetivo de este código?

Primero haces una comprobación si se encuentra en modo de inserción o modificación, si se encuentra en cualquiera de estos modos haces Post (que sirve para guardar solamente datos que estás modificando o insertando) y enseguida haces un Insert (lo que indica que estás a punto de insertar un nuevo registro y tu query se pondrá en state=dsInsert) y finalmente dejas la tabla en modo Insert si es que no ha saltado una excepción (perdón pero no he probado el código).

La manera correcta de realizar inserciones o ediciones sin un dbGrid es la siguiente:


Código Delphi [-]
// Suponiendo que tu query está abierto y mostrando registros existentes

with Query do
begin
  Edit;              // Pones en modo de inserción el registro actual
  FieldByName('Recibo').AsString:= txtRecibo.Text;
....  // Editas el valor de cada campo que requieras cambiar
  FieldByName('Transac').AsString:= txtTransac.Text;
  Post;            // Al terminar haces un Post para guardar los datos
end;

Y para Insertar solo cambias el Edit por un Insert, pero el Post se queda...

Te recomiendo cheques el libro gratuito de La Cara Oculta de Delphi 4, disponible en el FTP del Club, aquí encontrarás detalles sobre estas operaciones que por prisa no las he puesto, pero te podrían ayudar más.

Saludos
__________________
Herr Heins Faust
Responder Con Cita
  #5  
Antiguo 09-06-2010
Avatar de chino150
chino150 chino150 is offline
Miembro
 
Registrado: dic 2007
Posts: 86
Poder: 17
chino150 Va por buen camino
Cita:
Empezado por Faust Ver Mensaje
Va...

Este código no me dice mucho...

Si estás haciendo la edición sobre un dbGrid y después pulsas el botón Aceptar del que me pones el código... pues no es necesario hacer un Post, pues al terminar de editar o insertar registros en un dbGrid, el post se hace solito al salir del control, saltar a otra fila o llegar al final de tu captura y dar enter, en caso de querer cancelarla tienes que pulsar ESC, este manejo lo hace solito el dbGrid.

¿cuál es el objetivo de este código?

Primero haces una comprobación si se encuentra en modo de inserción o modificación, si se encuentra en cualquiera de estos modos haces Post (que sirve para guardar solamente datos que estás modificando o insertando) y enseguida haces un Insert (lo que indica que estás a punto de insertar un nuevo registro y tu query se pondrá en state=dsInsert) y finalmente dejas la tabla en modo Insert si es que no ha saltado una excepción (perdón pero no he probado el código).

La manera correcta de realizar inserciones o ediciones sin un dbGrid es la siguiente:



Código Delphi [-]
// Suponiendo que tu query está abierto y mostrando registros existentes

with Query do
begin
Edit; // Pones en modo de inserción el registro actual
FieldByName('Recibo').AsString:= txtRecibo.Text;
.... // Editas el valor de cada campo que requieras cambiar
FieldByName('Transac').AsString:= txtTransac.Text;
Post; // Al terminar haces un Post para guardar los datos
end;





Y para Insertar solo cambias el Edit por un Insert, pero el Post se queda...

Te recomiendo cheques el libro gratuito de La Cara Oculta de Delphi 4, disponible en el FTP del Club, aquí encontrarás detalles sobre estas operaciones que por prisa no las he puesto, pero te podrían ayudar más.

Saludos
el post se hace desde otro formulario es despues que cierra este formulario cuando hago click sobre el navagador me da ese error
Responder Con Cita
  #6  
Antiguo 10-06-2010
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
Faust Va por buen camino
A ver me perdí...

¿entonces me puedes decir como lo estás haciendo? es que creo que no estoy captando
__________________
Herr Heins Faust
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
grid index out of range ingabraham Varios 1 30-05-2008 15:57:02
Grid index out of range jmlifi Varios 29 19-10-2007 17:50:01
XSQLDA Index out of range RESP 3.0 Firebird e Interbase 5 15-12-2006 15:14:34
Grid Index out of range javicho_villa Varios 4 25-08-2006 16:30:19
Grid index out of range zugazua2001 Varios 5 22-06-2006 16:57:50


La franja horaria es GMT +2. Ahora son las 00:10:59.


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