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 Buscar Temas de Hoy Marcar Foros Como Leídos

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.325
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


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 21:17:01.


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