Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda con aplicacion (BD) (https://www.clubdelphi.com/foros/showthread.php?t=68975)

TheJoker 18-07-2010 22:01:23

Ayuda con aplicacion (BD)
 
Hola, soy nuevo en Delphi y queria saber si es posible crear una base de datos para mi aplicacion.

En esencia la aplicacion tiene como funcion buscar y eliminar ciertos archivos pero al ser numerosos no se si tengo que poner linea por linea o puedo crear una base de datos donde pongo la localizacion de los archivos a eliminar, y de forma automatica lea cada archivo y lo elimine?

Se puede hacer eso?

Bye.

marcoszorrilla 18-07-2010 22:08:14

Sería necesario saber de cuantos archivos estamos hablando, pero en síntesis creo que podría hacerse sin base de datos, es decir guardar los nombres y ubicación de los archivos en un archivo de texto, luego abrirlo ir leyendo línea por línea e ir ejecutado el Delete correspondiente.

Un Saludo.

TheJoker 18-07-2010 22:14:59

Si yo lei que se podia hacer tambien con un .txt pero no tengo muy en claro como integrarlo. Me refiero conoces algun manual o tutorial que me ayude a programar esa funcion?

Osea que lea el texto, cambie sus atributos y elimine los archivos. Algun tuto?

marcoszorrilla 18-07-2010 22:31:58

Aquí te pego unas líneas que utilizo para leer líneas de un fichero que te pueden servir como base de ejemplo, no tengo tiempo para más.
Código Delphi [-]
Procedure Leer_Cabecera_Pedidos();
var
  F: TextFile;
  S: string;
  cNPedido:String;
  nContPedido:Integer;
begin
nContPedido:=0;
cNomFicCNotas:='Noc010'+Vendedor + cTipFileim;
cNomFicCNotas:=cCaminoTerminales + cNomFicCNotas;
Ultimo_Pedido();

  Try
  Serie:=FormatFloat('0000000',StrToInt(DmTerm.QrUltCons.Fields[0].AsString)+1);
  Except
  Serie:='0000001';
  ShowMessage('Atención:No había pedidos se registra con el número 1.');
  end;
  AssignFile(F, cNomFicCNotas);
  Reset(F);

//Grabar la serie que es la cabecera del pedido.
DmTerm.PedCliSerie.Append;
DmTerm.PedCliSerieSerie.Value:=Serie;

DmTerm.PedCliSerieFecha.Value:=FileDateToDateTime(FileAge(cNomFicCNotas));
DmTerm.PedCliSerieHora.Value :=FileDateToDateTime(FileAge(cNomFicCNotas));

DmTerm.PedCliSerieFechadescarga.Value:=Date;
DmTerm.PedCliSerieHoradescarga.Value:=Time;

DmTerm.PedCliSerieVendedor.Value:=Vendedor;
DmTerm.PedCliSerieObservaciones.Value:='Gestionado por: '+cNombreUsuario;
DmTerm.PedCliSerie.Post;

  While not Eof(F) Do
  begin
  Readln(F, S);  { Read the first line out of the file }
  cNPedido  :=Copy(S,11,10);

    if Not DmTerm.BusPedcli.FindKey([cNPedido]) then
    begin
    nContPedido:=nContPedido + 1;
    DmTerm.Pedcli.Append;
    DmTerm.PedcliNPedido.Value  :=Copy(S,11,10);
    PedidoBis:=Copy(S,11,10);
    DmTerm.PedcliCodClient.Value:=Trim(Copy(S,0,10));

    if DmTerm.QrClient.Locate('Codigo',Trim(Copy(S,0,10)),[])then
    DmTerm.PedcliNombre.Value   :=DmTerm.QrClientBuscar.Value
    else
    DmTerm.PedcliNombre.Value:='No encontrado';

    DmTerm.PedcliFecha.Value    :=Invierte_Fecha(Copy(S,261,10));
    DmTerm.PedcliHora.Value     :=StrToTime(Copy(S,272,5));
    DmTerm.PedcliAgnus.Value    :=Copy(s,263,2);
    DmTerm.PedcliBase1.Value    :=StrToFloat(Trim(StringReplace(Copy(S,114,8),'.',',',[rfReplaceAll])));
    DmTerm.PedcliBase2.Value    :=StrToFloat(Trim(StringReplace(Copy(S,122,8),'.',',',[rfReplaceAll])));
    DmTerm.PedcliBase3.Value    :=StrToFloat(Trim(StringReplace(Copy(S,130,8),'.',',',[rfReplaceAll])));

    DmTerm.PedcliIva1.Value     :=StrToFloat(Trim(StringReplace(Copy(S,154,8),'.',',',[rfReplaceAll])));
    DmTerm.PedcliIva2.Value     :=StrToFloat(Trim(StringReplace(Copy(S,162,8),'.',',',[rfReplaceAll])));
    DmTerm.PedcliIva3.Value     :=StrToFloat(Trim(StringReplace(Copy(S,170,8),'.',',',[rfReplaceAll])));

    DmTerm.PedcliRec1.Value          :=StrToFloat(Trim(StringReplace(Copy(S,194,8),'.',',',[rfReplaceAll])));
    DmTerm.PedcliRec2.Value          :=StrToFloat(Trim(StringReplace(Copy(S,202,8),'.',',',[rfReplaceAll])));
    DmTerm.PedcliRec3.Value          :=StrToFloat(Trim(StringReplace(Copy(S,210,8),'.',',',[rfReplaceAll])));

    DmTerm.PedcliImporte.Value       :=StrToFloat(Trim(StringReplace(Copy(S,243,8),'.',',',[rfReplaceAll])));
    DmTerm.PedcliObservaciones.Value :=Copy(S,293,60);
    DmTerm.PedcliProcesado.Value     :=False;
    DmTerm.Pedcli.Post;
      Try
      Leer_Lineas_Pedidos();
      Except
      ShowMessage('Error al leer líneas del pedido');
      end;

      Try
      Leer_Incidencias();
      Except
      //ShowMessage('Error al leer Incidencias');
      end;

    end
    else
    begin
    ShowMessage('El pedido del Cliente '+Trim(Copy(S,0,10))+' ya existe.'+
    Chr(10)+'y no se incorporará');
    end;

  end;
  CloseFile(F);

  if nContPedido = 0 then
  begin
  DmTerm.PedCliSerie.Edit;
  DmTerm.PedCliSerie.Delete;
  ShowMessage('Error:No había ningún pedido.');
  lError:=True;
  end;
end;
Un Saludo.

marcoszorrilla 18-07-2010 22:34:54

Quizás este otro que es más corto te ayude más.

Código Delphi [-]
Procedure Leer_Incidencias();
Var
{Primero habrá ver si tiene fihero de incidencias}
  F   :TextFile;
  S   :string;
  cIncidencia:String;
  cCli:String;
  dFecha:TDate;
begin
cNomFicIncide:='Inc010'+Vendedor+cTipFileim;
cNomFicIncide:=cCaminoTerminales + cNomFicIncide;

  if FileExists(cNomFicIncide) then
  begin
    AssignFile(F, cNomFicIncide);
    Reset(F);

    While not Eof(F) Do
    begin
    Readln(F, S);

    cCli  :=Trim(Copy(S,1,10));
    dFecha:=Invierte_Fecha(Copy(S,13,10));

        if  Not DmTerm.BusInci.FindKey([cCli,Serie]) then
        begin
          DmTerm.PInciCli.Append;
          DmTerm.PInciCliCodClient.Value  := Trim(Copy(S,1,10));

            if DmTerm.QrClient.Locate('Codigo',Trim(Copy(S,0,10)),[]) then
            DmTerm.PInciCliNombre.Value     := DmTerm.QrClientBuscar.Value
            else
            DmTerm.PInciCliNombre.Value     := 'No encontrado';

          DmTerm.PInciCliCodigo.Value     := Copy(S,11,2);

             Case StrToInt(Copy(S,11,2)) of
             01:cIncidencia:=AInciden[01];
             02:cIncidencia:=AInciden[02];
             03:cIncidencia:=AInciden[03];
             04:cIncidencia:=AInciden[04];
             05:cIncidencia:=AInciden[05];
             06:cIncidencia:=AInciden[06];
             07:cIncidencia:=AInciden[07];
             08:cIncidencia:=AInciden[08];
             09:cIncidencia:=AInciden[09];
             10:cIncidencia:=AInciden[10];
             11:cIncidencia:=AInciden[11];
             end;

          DmTerm.PInciCliIncidencia.Value := cIncidencia;
          DmTerm.PInciCliFecha.Value      :=Invierte_Fecha(Copy(S,13,10));
          DmTerm.PInciCliHora.Value       :=StrToTime(Copy(S,24,5));
          DmTerm.PInciCliObservaciones.Value:=Copy(S,29,60);

          DmTerm.PInciCli.Post;
        end;

      end;

    CloseFile(F);

  end;
end;

Un Saludo.

TheJoker 18-07-2010 22:58:40

Muchas gracias voy a ir leyendo haber q tal me sale.


Gracias de nuevo.

ecfisa 18-07-2010 23:25:53

Hola Joker.

Se me ocurre que podrías utilizar un OpenDialog para agregar los nombres al archivo de texto y eliminarlos desde allí.

Algo así :

Código:

unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    btnAgregar: TButton;
    OpenDlg: TOpenDialog;
    btnBorrar: TButton;
    procedure FormCreate(Sender: TObject);
    procedure btnAgregarClick(Sender: TObject);
    procedure btnBorrarClick(Sender: TObject);
  private
    FArchivos: TextFile;
    procedure AgregarArchivo;
    procedure BorrarArchivos;
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
 
implementation {$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  AssignFile(FArchivos,'C:\AELIMINAR.TXT');
  try
    Reset(FArchivos);
  except
    Rewrite(FArchivos);
  end;
end;

procedure TForm1.AgregarArchivo;
var
  SList: TStringList;
begin
  SList:= TStringList.Create;
  SList.LoadFromFile('C:\AELIMINAR.TXT');
  if OpenDlg.Execute then
  begin
    if SList.IndexOf(OpenDlg.FileName)> 0 then
      ShowMessage('El archivo ya existe en la lista para ser eliminado')
    else
    begin
      Append(FArchivos);
      Writeln(FArchivos, OpenDlg.FileName);
      CloseFile(FArchivos);
    end;
  end;
end;
 
procedure TForm1.BorrarArchivos;
var
  Nombre: string;
begin
  Reset(FArchivos);
  while not Eof(FArchivos) do
  begin
    Readln(FArchivos, Nombre);
    if not DeleteFile(Nombre) then
      ShowMessage('No se pudo eliminar: '+Nombre);
  end;
  CloseFile(FArchivos);
end;

procedure TForm1.btnAgregarClick(Sender: TObject);
begin
  AgregarArchivo;
end;

procedure TForm1.btnBorrarClick(Sender: TObject);
begin
  BorrarArchivos;
end;
 
end.


Carece de algunas comprobaciones necesarias quizás, pero es para dar una idea.


Saludos.


La franja horaria es GMT +2. Ahora son las 20:13:51.

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