Guionardo Furlan escreveu:
Well

This code:

//  sqlite is a TSQLite3DataSet
  sqlite.FieldDefs.Clear;
  sqlite.FieldDefs.Add('id',ftAutoInc);
  sqlite.FieldDefs.Add('name',ftString);
  sqlite.FileName:='test.sq3';
  sqlite.TableName:='test';
  sqlite.CreateTable;

Try

 sqlite.PrimaryKey := 'id';
 sqlite.FieldDefs.Clear;
 sqlite.FieldDefs.Add('id',ftInteger);
 sqlite.FieldDefs.Add('name',ftString);
 sqlite.FileName:='test.sq3';
 sqlite.TableName:='test';
 sqlite.CreateTable;

Luiz


produces a table with this code

CREATE TABLE test (id AUTOINC_INT , name VARCHAR(255))

When I browse the code, using an external application like SQLiteAdministrator the ID field isn't "auto_inced" when I append a new line to the table and commit.

But, checking the DDL that the SQLiteAdministrator and SQLiteStudio produces when I define an autoinc field, they result in: CREATE TABLE test (id INTEGER NOT NULL PRIMARY KEY ASC AUTOINCREMENT, name VARCHAR(255))

And this works perfectly. 2010/3/17 Luiz Americo Pereira Camara <[email protected] <mailto:[email protected]>>

    Guionardo Furlan escreveu:

        Hello, source-owners
        I''ve made a change in the *CreateTable* method of the
        *TCustomSqliteDataset *class to include the *AutoInc *field
        type working ok. The current implementation don't of the type
        ftAutoInc doesn't work.

        This is the source on the file *CustomSQLiteDS.pas*
        *
        *
        *Could this be updated in the sources?*


    Hi, ftAutoInc field is a type that is incremented at
    TSqliteDataset side so there's no need to set  in sqlite field name.
    But why not use the field type you propose (INTEGER AUTOINC)?

    1. It will not be possible to determine that's an ftAutoInc field
    when dataset is loaded because it's recognized as INTEGER
    2. It's already possible to get the behavior you want:
     - Set PrimaryKey to your integer field
     - (Optional) If you want that this field is autoincremented in
    TSqliteDataset side set AutoIncrementKey to true
     - The table will be created with a INTEGER PRIMARY KEY field that
    by definition is an autoincrement field. See the sqlite.org
    <http://sqlite.org> FAQ

    Luiz


    --
    _______________________________________________
    Lazarus mailing list
    [email protected]
    <mailto:[email protected]>
    http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus




--
Timeo hominem unius libri
Cogito ergo sum - Carpe diem

[]s
Guionardo Furlan
http://guionardo.blogspot.com
http://www.guionardofurlan.com.br
------------------------------------------------------------------------

--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus


--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to