Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-01-2005
JCarlos JCarlos is offline
Miembro
 
Registrado: nov 2004
Posts: 25
Poder: 0
JCarlos Va por buen camino
Question Como puedo guardar campos de un DBGrid

Hola,
Tengo una duda respecto al componente DBGrid, me gustaria saber si desde este componente yo puedo por medio de un boton aceptar guardar campos del DBGrid en una tabla..
Explicando mejor para que me puedan entender, yo tengo un DBGrid con tres campos de una tabla, que son: Id, Nombre y Apellido.
Entonces a el DBGrid le adicione dos columnas mas, que serian Hora de entrada y Hora de salida.
Y me gustaria de este DBGrid guardar los campos Id, Hora de Ent y Hora de Salida en otra tabla..
Y me gustaria saber si esto es posible, de ser posible, agradeceria que me explicaran como.
Gracias de Antemano..
Responder Con Cita
  #2  
Antiguo 17-01-2005
Gydba Gydba is offline
Miembro
 
Registrado: ene 2004
Ubicación: Argentina
Posts: 673
Poder: 21
Gydba Va por buen camino
Hola,

La verdad es que no entiendo cuál es tu complicación. Los valores de un DBGrid es sólo el reflejo de un DataSource conectado a un DataSet. En todo caso deberías obtener los valores del DataSet y asignarlo donde quieras con algún evento On[Before/After]Post del mismo, ya sea con las propiedades FieldByName, Fields o componentes DBAware directamente.

Info sobre los DataSet hay bastante en el Help de Delphi.

Pero repito, no comprendí del todo tu problema.
__________________
Suerte
.: Gydba :.
Responder Con Cita
  #3  
Antiguo 17-01-2005
JCarlos JCarlos is offline
Miembro
 
Registrado: nov 2004
Posts: 25
Poder: 0
JCarlos Va por buen camino
Bueno te explico mejor..
Lo que quisiera en guardar los campos que no estan en el dataset, pues al dar doble click sobre el dbgrid te pone una ventana donde estan todos los campos de la tabla como tal, pero el dbgrid le adicione otras columnas, que no necesito en esa tabla especificamente, pero que quiero guardar en otra, entonces mi problema radica en que no se si puedo guardar estas columnas desde el mismo dbgrid mediante un boton guardar para una tabla nueva..
Bueno espero que me entiendas, pues no se de que manera puediera explicartelo.

Muchas gracias por tu ayuda, y disculpa las molestias.

Última edición por JCarlos fecha: 17-01-2005 a las 19:00:43.
Responder Con Cita
  #4  
Antiguo 24-01-2005
JCarlos JCarlos is offline
Miembro
 
Registrado: nov 2004
Posts: 25
Poder: 0
JCarlos Va por buen camino
Buenas a todos..
Tratare de explicar nuevamente cual es mi problema, pues realmente necesito una solución por que creo que me voy a volver loco...
El caso es que en un dbgrid estoy mostrando tres campos de una tabla, dando doble click sobre el dbgrid, en la ventanita que aparece le agregue otra columna nueva para un dato de si ó no...
Necesito guardar en una tabla nueva los campos del dbgrid, los tres campos y la columna adicional..
Por favor si esto se puede hacer, agradeceria cualquier ayuda o recomendacion.. Y en caso de que alguien tenga otra idea de como mostrar campos de una tabla existente, adicionarle otro campo y luego guardarlo en una tabla nuevo.. Tambien me serviria, el caso es poder guardar los 4 campos, no importa con que componentes......
Ya he tratado con la ayuda, pero en realidad no he conseguido nada, quizas es por que ya estoy algo frustrado...
Gracias de antemano...
Responder Con Cita
  #5  
Antiguo 25-01-2005
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 21
salvica Va por buen camino
Dependerá del componente que utilices para crear la tabla, en todo caso solo tienes que hacer un bucle que te lea las columnas de la primera fila (para crear la tabla) y luego otro (esta vez doble) para que recorra las filas y de cada una pase los datos de cada columa a los distintos campos.

El "donde" los pones dependerá del uso de la nueva tabla, si es en la misma aplicación lo suyo será cuando acabes de rellenar el grid, si solo quieres tenerla como resultado lo puedes poner antes de cerrar el form/aplicación (en el "OnClose" del form)

Con un componente TDbf (búscalo en sourceforge.net)
Código Delphi [-]
  procedure CrearNuevaTabla( Grid:TStringGrid; Path, Fichero:string);
  var
    Tabla:TDbf; 
    i, j : integer;
    strCampo : string;
  begin
  { crear la tabla de bases, en caso de que no exista }
      if FileExists( Path+'\'+fichero+'.dbf' ) then exit;
    Tabla :=TDbf.Create( nil ); 
  { configurar el objeto "Tabla" }
    with Table do begin
       { no abrirla en modo EXLUSIVO }
         Active       := false;
         Exclusive    := false;
         FilePathFull := Path;
         TableLevel   := 4;
         TableName    := fichero+'.dbf';
    end;
  { eliminar campos anteriores, si los hubiera }
    Tabla.FieldDefs.Clear;
    for i:=1 to 4 do begin
       { leer el nombre del campo }
         strCampo : =  Grid.Cells[i, 0];
      { definir los campos, el tipo depende de su posición en el grid }
         with Tabla.FieldDefs do
             { definir los campos }
                case i of
                       1:{ suponemos que es "string" }
                            Add( strCampo, ftString,     10, false );
                       2:{ suponemos que es "float" }
                            Add( strCampo, ftFloat,     0, false );
                       3:{ suponemos que es "integer" }
                            Add( strCampo, ftInteger,     0, false );
                       4:{ suponemos que es "boolean" }
                            Add( strCampo, ftBoolean,     0, false );
                end; { del case }
    end; { del for }
    with Tabla do begin
       { eliminar el fichero de índices que hubiese anteriormente }
         IndexDefs.Clear;
       { crear la tabla nueva }
         CreateTable;
       { 
         definir el nuevo fichero de índices, 
         suponemos que es por el primer campo del grid 
       }
         Exclusive := true;
         Open;
         AddIndex( fichero, Grid.Cells[i, 0], [ixPrimary, ixUnique] );
         Close;
         Exclusive := false;
       { eliminar el objeto "Tabla" }
         Free;
  end;
Luego llamarías al procedimiento (donde creas necesario) tal que así
Código Delphi [-]
    CrearNuevaTabla( miGrid, 'C:\copias', 'copia');
Espero no haberme equivocado con el código y que te sirva de algo.
Saludos:
Salvica

Última edición por salvica fecha: 25-01-2005 a las 14:38:03.
Responder Con Cita
  #6  
Antiguo 26-01-2005
JCarlos JCarlos is offline
Miembro
 
Registrado: nov 2004
Posts: 25
Poder: 0
JCarlos Va por buen camino
Gracias Salvica..
No lo use exactamente asi, pero me fue de muchisima ayuda...
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


La franja horaria es GMT +2. Ahora son las 13:15:25.


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