[yunqa.de] ClientDataset and Primary Key

  • From: Hans-Inge Hansson <Hans-Inge.Hansson@xxxxxxxxx>
  • To: "yunqa@xxxxxxxxxxxxx" <yunqa@xxxxxxxxxxxxx>
  • Date: Tue, 23 Nov 2010 13:12:57 +0100

Hi,

How do I insert and post records in a table using a clientdataset and a table 
with primary key?

See simple example below. Must be something obvius I'm missing.

//Hansson

uses
  Classes, Controls, Forms, StdCtrls, ComCtrls, ExtCtrls, Provider, DBClient,
  DB, DISQLite3DataSet, DISQLite3Database, SysUtils;

type
  TfrmMain = class(TForm)
    DISQLite3Database: TDISQLite3Database;
    DISQLite3UniDirQuery: TDISQLite3UniDirQuery;
    ClientDataset1: TClientDataSet;
    DataSetProvider: TDataSetProvider;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  public
  end;

var
  frmMain: TfrmMain;

implementation

uses
  Dialogs, MidasLib;

{$R *.dfm}

procedure TfrmMain.Button1Click(Sender: TObject);
var
  j: Integer;
begin
  DISQLite3Database.Close;
  DeleteFile('Test.db');
  DISQLite3Database.DatabaseName := 'Test.db';
  DISQLite3Database.CreateDatabase;

 // DISQLite3Database.Execute('CREATE TABLE TEMP (A INTEGER NOT NULL,B SMALLINT 
NOT NULL, VALUE NVARCHAR(20))');    // WORKS WITH NO PRIMARY KEYS
  DISQLite3Database.Execute('CREATE TABLE TEMP (A INTEGER NOT NULL,B SMALLINT 
NOT NULL, VALUE NVARCHAR(20) , CONSTRAINT I PRIMARY KEY (A, B))'); // DON'T WORK

  ClientDataset1.Close;

  DISQLite3UniDirQuery.SelectSQL := 'SELECT * FROM TEMP';
  ClientDataset1.Open;

  ClientDataset1.Insert;
  ClientDataset1.FieldByName('A').AsString := '203921';
  ClientDataset1.FieldByName('B').AsString := '0';
  ClientDataset1.FieldByName('VALUE').AsString := '203921010';
  ClientDataset1.Post;

  ClientDataset1.ApplyUpdates(-1);
  ClientDataset1.Close;

end;_______________________________________________
Delphi Inspiration mailing list
yunqa@xxxxxxxxxxxxx
//www.freelists.org/list/yunqa



Other related posts: