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 14-08-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
agregar registros de tedit a dbgrid

que hay aqui con un problemilla para ver si me pueden echar la mano resulta que en un form5 tengo varios tedit los cuales quiero llenar y mediante un boton mandar ea informacion al form4 donde tengo un dbgrid, entonces qiero meter los registros que yo vaya necesitando, pero no lo e podido lograr este es el codigo con el que estoy intentando pero no me inserta nada de informacion:


Código Delphi [-]
procedure TForm5.guardarClick(Sender: TObject);
begin
form4.tabla.close();
 form4.tabla.SQL.Text := 'select * from entradas where codigo=:codigo';
  form4.tabla.Params[0].Value := codigo.Text;

    form4.tabla.Open;

 codigo.Text:=form4.dbgrid1.DataSource.DataSet.FieldByName('codigo').AsString;
 nombre.Text:=form4.dbgrid1.DataSource.DataSet.FieldByName('nombre').AsString;
 cantidad.Text:=form4.dbgrid1.DataSource.DataSet.FieldByName('cantidad').AsString;
 precio.Text:=form4.dbgrid1.DataSource.DataSet.FieldByName('precio').AsString;
Responder Con Cita
  #2  
Antiguo 14-08-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
ya logre insertar un registro pero ahora mi problema es que si inserto otro nuevo me sustituye el primero, como le puedo hacer para agregar varios registros aqui va mi codigo de lo que llevo

Código Delphi [-]
form4.tabla.close();
 form4.tabla.SQL.Text := 'select * from entradas where codigo=:codigo';
  form4.tabla.Params[0].Value := codigo.Text;
    form4.tabla.Open;
      form4.tabla.Insert;


     form4.tabla.FieldByName('codigo').asString:=codigo.text;
     form4.tabla.FieldByName('unidad').asString:=unidad.text;
     form4.tabla.FieldByName('nombre').asString:=nombre.text;
     form4.tabla.FieldByName('unidad').asString:=unidad.text;
     form4.tabla.FieldByName('cantidad').asString:=cantidad.text;
     form4.tabla.FieldByName('precio').asString:=precio.text;
     form4.tabla.FieldByName('importe').asString:=importe.text;
Responder Con Cita
  #3  
Antiguo 14-08-2012
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
Cita:
Empezado por edgar_prospero Ver Mensaje
ya logre insertar un registro pero ahora mi problema es que si inserto otro nuevo me sustituye el primero, como le puedo hacer para agregar varios registros
Hola Edgar.

Proba de este modo:
Código Delphi [-]
 with Form4.Tabla do
  begin
    Close;
    SQL.Text:= 'select * from entradas'; 
    Open;
    Append;
    FieldByname('codigo').AsString    := codigo.Text
    FieldByName('nombre').AsString    := nombre.Text;
    FieldByName('Continent').AsString := cantidad.Text;
    FieldByName('Area').AsString      := precio.Text
    Post;
    ...
  end;
Si estas añadiendo datos, la sentencia
Código SQL [-]
select * from entradas where codigo=:codigo
carece de sentido si el código no existe, o bién sobreescribe los datos si este existe.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 14-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Pero qué quieres hacer?, creo que estás confundido.
Responder Con Cita
  #5  
Antiguo 14-08-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
a lo mejor no me e explicado bien tengo varios edit los cuales lleno y quieros mandar la informacion a un dbgrid con lo que me dijo ecfisa
ya lo logre pero nomas puedo pasar un regsitro al dbgrid si pongo otro lo quiere poner donde mismo que el primero no se brinca al segundo
Responder Con Cita
  #6  
Antiguo 14-08-2012
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
Cita:
Empezado por edgar_prospero Ver Mensaje
a lo mejor no me e explicado bien tengo varios edit los cuales lleno y quieros mandar la informacion a un dbgrid con lo que me dijo ecfisa
ya lo logre pero nomas puedo pasar un regsitro al dbgrid si pongo otro lo quiere poner donde mismo que el primero no se brinca al segundo
Hola.

Para agregar registros debería bastarte con este código:
Código Delphi [-]
  with Form4.Tabla do
  begin
    Open; // (Necesario solo si la tabla esta cerrada)
    Append;
    FieldByname('codigo').AsString    := codigo.Text
    FieldByName('nombre').AsString    := nombre.Text;
    FieldByName('Continent').AsString := cantidad.Text;
    FieldByName('Area').AsString      := precio.Text
    Post;
    Close; // (Solo si deseas cerrar la tabla al finalizar la inserción )
  end;
La línea
Código Delphi [-]
   SQL.Text:= 'select * from entradas';
Es solo necesaria si la sentencia SQL no fué definida con anterioridad.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 14-08-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
efectivamente con ese codigo si me muestra la informacion en el dbgrid pero solo el primer registro si pongo otro registro no me lo muesta en el dbgrid y es lo que quiero lograr primero ingresar los registros que necesite en el dbgrid y ya despues ahora si guardarlos en la base de datos. a lo mejor ahi esta la clave para explicarme mejor que primero quiero ir agregando los registros a mi dbgrid y ya despues por ,medio de un bton guardarlos en mi base de datos

Última edición por edgar_prospero fecha: 14-08-2012 a las 20:28:22.
Responder Con Cita
  #8  
Antiguo 14-08-2012
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 Edgar.

Cita:
quiero ir agregando los registros a mi dbgrid y ya despues por ,medio de un bton guardarlos en mi base de datos
Ahí esta tu confusión, del modo que lo trabajas, lo que ves en el TDBGrid es lo que ya fué almacenado en tu BD.

Para realizar lo que deseas tendrías que usar CachedUpdates, un TClientDataSet ,o también podrías valerte de un TStringGrid (aunque lo creo más complicado de usar).

¿ Que componentes y que SGBD estas utilizando ?

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 14-08-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
pues de componentes no tengo muchos uso rx, mysql access y la base de datos la trabajo en mysql y creo que si ando un poco perdido jeje ojala me puedas orientar
Responder Con Cita
  #10  
Antiguo 14-08-2012
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 Edgar.

No conozco los componentes RX, pero supongo que a grandes rasgos el pequeño código de ejemplo que te pongo tendría que funcionar.
Código Delphi [-]
// Activar CachedUpdates, abrir Table4
procedure TForm1.FormCreate(Sender: TObject);
begin
  with Form4.Table4 do
  begin
    CachedUpdates := True;
    SQL.Text      := 'SELECT * FROM ENTRADAS';
    Open
  end;
end;

// Mostrar en el DBGrid
procedure TForm1.btAgregarAlGridClick(Sender: TObject);
begin
  with Form4.Table4 do
  begin
    Append;
    FieldByname('Nivel').AsString := codigo.Text;
    FieldByName('Texto').AsString := nombre.Text;
    ...
    Post
  end
end;

// Aplicar lo insertado
procedure TForm1.btnAplicarClick(Sender: TObject);
begin
  Form4.Table4.ApplyUpdates
end;

// Cancelar lo insertado
procedure TForm1.btnCancelarClick(Sender: TObject);
begin
  Form4.Table4.CancelUpdates
end;

// Desactivar CachedUpdates, cerrar Table4
procedure TForm1.FormDestroy(Sender: TObject);
begin
  with Form4.Table4 do
  begin
    CachedUpdates:= False;
    Close;
  end;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #11  
Antiguo 14-08-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
excelente respuesta justo lo que andaba buscando, pero ahora al cerrar el programa me marca un error tabla: cannot perform this operation on an open dataset, pero solo cuando ya cierro elprograma me marca este error
Responder Con Cita
  #12  
Antiguo 14-08-2012
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 Edgar.

El error fue mío por haber escrito el código en el aire...

Donde dice:
Código Delphi [-]
  with Form4.Table4 do
  begin
    CachedUpdates:= False;
    Close;
  end;
Tendría que decir:
Código Delphi [-]
  with Form4.Table4 do
  begin
    Close;
    CachedUpdates:= False
  end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #13  
Antiguo 15-08-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
gracias por tu respuesta ecfisa me fue de gran ayuda ya tenia tiempo atorado con este problema y gracias a los demas que respondieron
Responder Con Cita
  #14  
Antiguo 15-08-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
creo que cante victoria muy pronto nomas me guarda un registro en mi base de datos si pongo 3 registros y voy a la base de datos nomas guardo el ultimo y los otros 2 no aparecen
Responder Con Cita
  #15  
Antiguo 15-08-2012
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
Cita:
Empezado por edgar_prospero Ver Mensaje
creo que cante victoria muy pronto nomas me guarda un registro en mi base de datos si pongo 3 registros y voy a la base de datos nomas guardo el ultimo y los otros 2 no aparecen
Hola.

Es muy probable que te hayas olvidado de presionar el botón que guarda los datos en caché.

De este modo es mas difícil que eso suceda:
Código Delphi [-]
// Activar CachedUpdates, abrir Table4
procedure TForm1.FormCreate(Sender: TObject);
begin
  with Form4.Table4 do
  begin
    CachedUpdates := True;
    SQL.Text      := 'SELECT * FROM ENTRADAS';
    Open
  end;
end;

// Mostrar en el DBGrid
procedure TForm1.btnAgregarAlGridClick(Sender: TObject);
begin
  with Form4.Table4 do
  begin
    Append;
    FieldByname('Nivel').AsString := codigo.Text;
    FieldByName('Texto').AsString := nombre.Text;
    ...
    Post
  end
end;

...

// Al salir: ¿ Hay datos pendientes  en caché ? => preguntar si desea guardar
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
const
   UTYPE = MB_ICONQUESTION or MB_APPLMODAL or MB_DEFBUTTON1 or MB_YESNO;
begin
  if Form4.Table4.UpdatesPending and
   (MessageBox(Handle, '¿ Guarda los cambios ?', '', UTYPE) = IDYES) then
     Form4.Table4.ApplyUpdates
end;

...

// Desactivar CachedUpdates, cerrar Table4
procedure TForm1.FormDestroy(Sender: TObject);
begin
  with Form4.Table4 do
  begin
    Close;
    CachedUpdates:= False
  end
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 15-08-2012 a las 03:44:03. Razón: corrección
Responder Con Cita
  #16  
Antiguo 15-08-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
gracias ahora si lo guardo, pero hay te va parte completo de lo que quiero hacer mira enel form tengo para capturar un folio y una fecha y en el dbgrid la demas informacion que ponia arriba mi pregunta es com puedo hacer para ligar voy a tratar de explicarme por ejemplo tengo el folio 1con fecha de hoy y capturo 2 registros en el dbgrid ahora si los guardo y quiero que esos 2 registros del datagrid me aparesca con el folio 1 y fecha de hoy que capture
Responder Con Cita
  #17  
Antiguo 15-08-2012
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 Edgar.

Hay dos cosas que no me quedan claro:
  1. Sería bueno que especificaras bién que datos y en que órden deseas hacer la unión. Por Ej. FECHA + FOLIO + CODIGO + ... ¿ Deseas algún separador entre ellos ?
  2. ¿ Donde queres que aparezcan esos 2 registros con el folio y fecha ?

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #18  
Antiguo 15-08-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
bueno voy a tratar de explicar lo que quiero, al entrar al form tengo que capturar 2 datos en 2 tedit los cuales son folio y fecha de ahi me voy al dbgrid y mediante click derecho me abre un menu el cual selecciono agegar registros y me abre otro form con lo cual lleno la informacion con codigo, unidad, nombre, cantidad, precio, total, y mediante un boton voy agregando los registros al dbgrid (ya eso lo logre gracias a tu ayuda), ya que tengo la informacion quiero por un boton guardar toda esa informacion en una base de datos llamada entradas, quiero que folio y fecha se agregue a todos los registros que guarde del dbgrid, es para un control por ejemplo de esos productos que se guarden lleven el mismo folio y fecha espero haberme explciado un poco
Responder Con Cita
  #19  
Antiguo 15-08-2012
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 Edgard.

Si, creo que te entiendo.

Ahora la pregunta es, en el DataSet relacionado al DBGrid ¿ Existen los campos como para almacenar esos datos ?

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #20  
Antiguo 15-08-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
hola
si si estan los campos ligados para guardar lo que necesito en eso no habria problema
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
Agregar registros a un DBGrid lucas05 Varios 1 27-11-2011 21:55:21
Agregar registros a un DBListBox Malau Conexión con bases de datos 2 12-12-2009 19:20:10
Agregar registros muppett .NET 1 15-04-2008 01:25:22
Novato (Busqueda de registros con TEdit y DBGrid) enecumene Conexión con bases de datos 3 27-05-2006 20:04:12
Agregar registros a un DBGRID provenientes de otro Formulario JoanKa Varios 2 19-05-2006 01:58:09


La franja horaria es GMT +2. Ahora son las 09:28:19.


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