Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #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: 23
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
 



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 19:03:30.


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