Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-02-2016
andresjh87 andresjh87 is offline
Registrado
NULL
 
Registrado: ene 2016
Posts: 9
Poder: 0
andresjh87 Va por buen camino
Exclamation Problema al insertar datos a DBF

Hola comunidad.

Tengo un problema que no le encuentro explicacion, uso delphi XE8 y agregue el componente TDBF.

El problema es que el insert o append no funciona. me dice delphi raised exception class EDATABASEerror cannot a modify read-only dataset. probe poniendo append, insert y nada, al llegar al insert pasa eso. me funciona perfecto el crear el dbf pero el insertar datos nada.

dejare el codigo por si alguien me puede ayudar


Código Delphi [-]
unit Unit6;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Data.DB, dbf, Vcl.Grids,
  Vcl.DBGrids, Vcl.ExtCtrls, Vcl.DBCtrls;

type
  TForm6 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Dbf1: TDbf;
    Dbf2: TDbf;
    Dbf3: TDbf;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    Button3: TButton;
    DBNavigator1: TDBNavigator;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure DataSource1DataChange(Sender: TObject; Field: TField);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form6: TForm6;

implementation

{$R *.dfm}

procedure TForm6.Button1Click(Sender: TObject);
begin
Dbf2 := TDbf.Create(nil);
  try
    { make sure the data directory exists - otherwise this may fail (e.g. on Windows XP): }
    ForceDirectories('C:\EMPRESA\pruebaDBF\DATOS\');
    DeleteFile('C:\EMPRESA\pruebaDBF\DATOS\personas.dbf');
    DeleteFile('C:\EMPRESA\pruebaDBF\DATOS\personas.mdx');


    { use relative path to "data" directory }
    Dbf2.Close;
    Dbf2.FilePath := 'C:\EMPRESA\pruebaDBF\DATOS\';
    { we want to use Visual dBase VII compatible tables }
    Dbf2.TableLevel := 7;

    dbf2.ReadOnly:=false;
    //Dbf2.Exclusive := True;
    Dbf2.TableName := 'personas.dbf';
    With Dbf2.FieldDefs do begin
      Clear;
      Add('Rut', ftString, 15, false);
      Add('Nombre', ftString, 80, false);
    End;
    Dbf2.CreateTable;
    Dbf2.Open;
    Dbf2.AddIndex('personaId', 'Rut', [ixPrimary, ixUnique]);


    { add a secondary index }
    //Dbf1.AddIndex('custname','Name', [ixCaseInsensitive]);
    Dbf2.Close;
  finally
    Dbf2.Free;
  end;

end;

procedure TForm6.Button2Click(Sender: TObject);
var i:integer;
f1,f2:TField;
begin
//Dbf2:= TDbf.Create(self);
//with Dbf2 do
 //begin
 //Close;
 //Free;

 Dbf2.FilePath := 'C:\EMPRESA\pruebaDBF\DATOS\';
 Dbf2.TableLevel := 7;
 //dbf2.OpenMode:=omNormal;
 //Dbf2.Exclusive := true;
 Dbf2.TableName := 'personas.dbf';

 Dbf2.open;
 //Dbf2.First;
 //Dbf2.IndexName  :='personaId';

 //active:=true;

 try
 //Dbf2.Insert;
 Dbf2.Insert;
 Dbf2.FieldByName('Rut').AsString := '1-9';
 Dbf2.FieldByName('Nombre').AsString := 'Roxana';
 Dbf2.Post;

 except
       On E: Exception do begin
        Dbf2.Close;
        Dbf2.Free;
       end;
 end;
end;


procedure TForm6.Button3Click(Sender: TObject);
begin
Dbf3.FilePath := 'C:\EMPRESA\pruebaDBF\DATOS\';
Dbf3.TableName:='personas.dbf';
dbf3.Active:=false;

end;

procedure TForm6.DataSource1DataChange(Sender: TObject; Field: TField);
begin

end;

//end;

end.

Se los agradeceria demasiado (quiero salir de vacaciones u.u) jajajaa
Responder Con Cita
  #2  
Antiguo 05-02-2016
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Qué versión de Windows está utilizando?
¿Tienes permisos de acceso a ese directorio?

No conozco el componente TDBF. ¿Puedes hacer una prueba con ADO, por ejemplo, para descartar que sea el componente?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 08-02-2016 a las 10:16:06.
Responder Con Cita
  #3  
Antiguo 05-02-2016
bitbow bitbow is offline
Miembro
 
Registrado: jul 2006
Posts: 366
Poder: 18
bitbow Va camino a la fama
Como comenta Neftali , puedes usar ADO o los componentes DBExpress dependiendo de la versión de Delphi que estes usando, yo me conecto a base de datos paradox todavia en delphi XE 5 sin problemas, desconozco el estatus de desarrollo del componente TDBF o en que versión de paradox se quedo.

Saludos.
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
problema al insertar datos a tablas mysql elmago00 PHP 5 20-05-2014 21:32:41
Insertar datos entre bases de datos diferentes franjero Firebird e Interbase 1 19-06-2012 08:32:42
Insertar datos en una base de datos desde delphi con sql angelvazv Conexión con bases de datos 16 08-05-2012 19:25:20
Insertar Datos a un campo de la base de datos desde un DBEdit saltamirano Varios 11 12-12-2007 17:29:35
Problema al insertar un registro en la base de datos mcalmanovici Conexión con bases de datos 2 30-08-2007 04:48:59


La franja horaria es GMT +2. Ahora son las 02:10:18.


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