Tuesday, 28 July 2009

Editando ficheros dBase (DBF) con Delphi

Debido a las mejoras de Microsoft Office (versión 2007), desaparece la parte de edición y guardado de las tablas en .dbf (DBase IV). Por eso, he creado una pequeña aplicación con delphi que permite realizar una series de consultas SQL y además permite editar la tabla en sí. De esta manera podemos seguir conservando nuestros ficheros DBase y con una aplicación sencilla realizar potentes consultas sobre la table mediante SQL. La aplicación utiliza los componentes típicos de conexión a la BD, y mediante ADO realizo la conexión sobre una carpeta para simular el ConnectionString hacia un ODBC con la ruta del los ficheros DBF. Luego tengo una pequeña grid enlazada al ClientDataSet que recoge los datos y los muestra. Aquí os dejo unas imágenes de la aplicación Thundax DBF Editor.

Aquí os dejo parte del código fuente para que veáis lo simple que es la aplicación:

procedure TForm1.Button1Click(Sender: TObject);
var
    strDBFolder, TextExecute: string;
begin
    if Edit1.text = '' then
        exit;
    if listbox1.Count = 0 then
        exit;
    Screen.Cursor := crSQLWait;
    strDBFolder := Edit1.text;
    ADOConnection1.Close;
    ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +
        strDBFolder +
        ';Extended Properties=dBASE IV;User ID=' + Edit2.text + ';Password=' + Edit3.text + ';';
    ADOConnection1.Open;
    if SelectedText = '' then
        TextExecute := SynEdit1.text
else
        TextExecute := SelectedText;

    if TextExecute = '' then
        exit;

    if not AnsiContainsStr(AnsiUpperCase(TextExecute), 'SELECT') then
        ADOConnection1.Execute(TextExecute)
    else
    begin
        ADOQuery1.Close;
        ClientDataSet1.close;
        ADOQuery1.SQL.Text := TextExecute;
        ADOQuery1.Open;
        ClientDataSet1.open;
    end;
    ADOConnection1.Close;
    Screen.Cursor := crDefault;
    StatusBar1.SimpleText := 'Done.';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
    if clientdataset1.Delta <> null then
        if messagedlg('Save changes ? ', mtConfirmation, mbOKCancel, -1) = mrOK then
            clientdataset1.ApplyUpdates(0)
        else
            abort;
end;

  • Enlaces de interés:
Formatos de archivo que permite Excel 2007.

3 comments:

  1. Hay una gran cantidad de archivos en mi computadora. Pero ayer por la noche no eran demasiado archivos y programas relacionados con archivos de acceso. Por suerte para mí un amigo me llamó y por casualidad me contó - corrupted dbf. El software me devolvió acceder a los archivos dañados y lo hizo de forma gratuita como seguí mente. Me alegro de esta herramienta.

    ReplyDelete
  2. Thank you Alex. Is good to know that the application is useful.

    ReplyDelete
  3. Jordi tendras idea de como usar dbf's en lazarus??

    ReplyDelete