Hi all,

I was trying to adapt TDbf table creation demo to SQLiteDataset, but I get this error:

An unhandled exception occurred at 0x080557E4 :
EDatabaseError :  : Dataset is read-only.
 0x080557E4
 0x00000050

I have no idea how to put the DataSet in read/write mode...

fpc 1.9.2 linux
sqlite library 2.8.13

Cheers,
Milos
{$linklib c}

program sqlitetest;

{$mode objfpc}{$H+}

uses
  SysUtils, Classes, db, SQLiteDataset;
  
var
  Sqlite: TSqlite;
  f1, f2: TField;
  df: TDateField;
  dtf: TDateTimeField;
  i: integer;

begin
  Sqlite := TSQLite.create(nil);
  with Sqlite do begin
   Close;
   DataBase := ExtractFilePath(ParamStr(0)) + 'base1.db';
   TableName := 'table1';
// Method 1
    with FieldDefs do begin
      Clear;
      Add('Field1',ftString,10,False);
      Add('Field2',ftInteger,0,False);
      //Add('Address',ftMemo,0,False);
      Add('DateTime', ftDateTime, 0, False);
      Add('Date',ftDate,0,False);
    end;
   CreateTable;
   Open;
  end;
  f1:=Sqlite.FindField('Field1');
  f2:=Sqlite.FindField('Field2');
  df:=TDateField(Sqlite.FindField('Date'));
  dtf:=TDateTimeField(Sqlite.FindField('DateTime'));

  for i:=0 to 100 do begin
    Sqlite.Append;
    f1.AsString:=
      chr((i * 1 + 4)  mod 26 + 65)+
      chr((i * 2 + 5)  mod 26 + 65)+
      chr((i * 3 + 6)  mod 26 + 65);
    f2.AsLongint := i;
    df.AsDateTime := date;
    dtf.Value := Now;
    Sqlite.Post;
  end;
  Sqlite.Close;
  Sqlite.Free;
end.

Reply via email to