Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-02-2008
gorsan gorsan is offline
Miembro
 
Registrado: jun 2003
Ubicación: Alcala de Henares (Madrid)
Posts: 87
Poder: 21
gorsan Va por buen camino
Un DBGrid díscolo

Hola a todos.
El problema que me ocupa me esta matando y ello porque veo que es la cosa mas tonta del mundo y yo no soy capaz de encontrale la solucion. Así que no me queda mas remedio que abrir este hilo para que el que lo lea se ria un poco de mi. A pesar de ello les comento:
vaya por delante que trabajo con IBX6 y con Delphi 7.
Tengo un DataSet en concreto un IBDataSet en un modulo de datos y en un formulario un DBGrid apuntando a el. En tiempo de ejecucion puedo modificar los datos mostrados en el grid y se guardan los cambios sin problema pero si con los cursores del teclado me voy desplanzando hasta el ultimo registro del grid de ahi no pasa, es decir, no añade un nuevo registro y lo mismo pasa si lo hago desde un ToolButton llamando al metodo append del dataset. Tampoco añade nada y se queda en el ultimo registro de la tabla como anteriormente.
El Grid tiene los siguientes valores a true en la propiedad Options
[dgEditing,dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgConfirmDelete,dgCancelO nExit]
el resto a false. La propiedad del grid ReadOnly esta a false y la propiedad canmodify del dataset debe estar a true porque, como dije, puedo modificar datos. Lo unico que pasa es que no puedo añadir nuevo registro.
¿Alguien me puede dar alguna pista?
Gracias por vuestro tiempo.
Responder Con Cita
  #2  
Antiguo 19-02-2008
gorsan gorsan is offline
Miembro
 
Registrado: jun 2003
Ubicación: Alcala de Henares (Madrid)
Posts: 87
Poder: 21
gorsan Va por buen camino
¿A nadie se le ocurre que puede pasar para que un DBGrid no haga ni append ni insert pero si permita la modificacion de datos? Les agradeceria por lo menos una pista ...
Responder Con Cita
  #3  
Antiguo 19-02-2008
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
si desde otro componente ajeno al dbgrid pero que comparte el mismo origen de datos te da el problema, entonces no busca por el dbgrid, busca por el dataset que de seguro por alli vienen los tiros, lamento no ayudarte mas pero es que no estoy muy puesto en eso de los IBX
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #4  
Antiguo 19-02-2008
gorsan gorsan is offline
Miembro
 
Registrado: jun 2003
Ubicación: Alcala de Henares (Madrid)
Posts: 87
Poder: 21
gorsan Va por buen camino
Gracias por tu respuesta pero no veo nada raro en el dataset ...
Responder Con Cita
  #5  
Antiguo 20-02-2008
gorsan gorsan is offline
Miembro
 
Registrado: jun 2003
Ubicación: Alcala de Henares (Madrid)
Posts: 87
Poder: 21
gorsan Va por buen camino
He descubierto que el dataset no añade registro nuevo porque permanece en dsBrowse
Código Delphi [-]
procedure TWCpu.TBAddClick(Sender: TObject);
begin
   TBAdd.Enabled:=False;
   TBEditar.Enabled:=False;
   TBBorrar.Enabled:=False;
   TBGrabar.Enabled:=True;
   TBCancelar.Enabled:=True;
   EBuscar.SetFocus;
   with DMCpu.IBCpu do
    try
       DisableControls;
       Close;
       Open;
       Append;
    finally
       EnableControls;
       if DMCpu.IBCpu.State in [dsBrowse] then ShowMessage('No has añadido un nuevo registro');
    end;
   DBId_inv_cpu.SetFocus;
end;

No entiendo nada
Responder Con Cita
  #6  
Antiguo 20-02-2008
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Galicia
Posts: 595
Poder: 20
Ivanzinho Va por buen camino
No estoy muy puesto en esto, seguro que cualquiera te puede dar una mejor solución, pero te comento los siguiente por si te puede valer.

Si en el evento AfterInsert le das algún valor a un campo del dataSet éste se pone en estado dsInsert.

Para insertar en el dbgrid, una vez hecho lo anterior, puedes hacerlo con la tecla Ins.

Un saúdo.
__________________
Si no lees esto no vivirás tranquilo
Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao)
Responder Con Cita
  #7  
Antiguo 20-02-2008
gorsan gorsan is offline
Miembro
 
Registrado: jun 2003
Ubicación: Alcala de Henares (Madrid)
Posts: 87
Poder: 21
gorsan Va por buen camino
Gracias a Ivanzinho he resuelto el problema. El tema estaba en que en el evento afterinsert tenia el siguiente codigo:
Código Delphi [-]
procedure TDMCpu.IBCpuAfterInsert(DataSet: TDataSet);
begin
   IBCpu.Transaction.CommitRetaining;
   IBCpu.Refresh;
end;
con lo que la insercion de un registro en blanco quedaba anulada con un CommitRetaining y luego ademas se refrescaba la tabla. Quitando esas dos lineas de codigo problema solucionado.
Muchas gracias a Ivanzinho por la pista.
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
Pasar lineas de in dbgrid a otro dbgrid look OOP 3 21-09-2007 23:16:29
PickList DBGrid (Pregunta acerca de los DBGRID) lazarous Varios 1 10-01-2006 09:53:12
Como extraer datos de un DBgrid a otro DBgrid mickey Conexión con bases de datos 13 29-01-2004 05:05:30


La franja horaria es GMT +2. Ahora son las 20:08: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