|
проблемы dbExpress
|
|||
---|---|---|---|
#18+
Купил книжонку "Руководство разработчика баз данных в Delphi/Kylix" Eric.Harmon скачал примерчик www.williamspublishing.com. Там описывается компонент dbExpress. Когда дошел до самого интересного ApplyUpdates внесение изменений в базе прога начала выдовать ошибку "Token unknown - line 2, char 2 FIRST". В таблице используется генератор для приращения ключевого поля. Кода беру другую таблицу без генератора всё работает нормально. В чём трабл не пойму. unit MainForm; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, DBXpress, FMTBcd, Grids, DBGrids, DB, Provider, DBClient, SqlExpr, StdCtrls, DBCtrls; type TfrmMain = class(TForm) pnlClient: TPanel; pnlBottom: TPanel; SQLConnection1: TSQLConnection; SQLDataSet1: TSQLDataSet; ClientDataSet1: TClientDataSet; DataSetProvider1: TDataSetProvider; DataSource1: TDataSource; DBGrid1: TDBGrid; btnApplyUpdates: TButton; btnCancelUpdates: TButton; lblUpdates: TLabel; Timer1: TTimer; DBNavigator1: TDBNavigator; SQLDataSet1ID: TIntegerField; SQLDataSet1FIRST: TStringField; SQLDataSet1LAST: TStringField; SQLDataSet1DEAR: TStringField; SQLDataSet1TITLE: TStringField; SQLDataSet1COMPANYNAME: TStringField; SQLDataSet1ADDRESS1: TStringField; SQLDataSet1ADDRESS2: TStringField; SQLDataSet1CITY: TStringField; SQLDataSet1STATE: TStringField; SQLDataSet1POSTALCODE: TStringField; SQLDataSet1COUNTRY: TStringField; SQLDataSet1PHONE: TStringField; SQLDataSet1FAX: TStringField; SQLDataSet1CELLULAR: TStringField; SQLDataSet1PAGER: TStringField; SQLDataSet1EMAIL: TStringField; SQLDataSet1IMAGE: TBlobField; SQLDataSet1NOTES: TMemoField; sqlID: TSQLDataSet; procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure btnApplyUpdatesClick(Sender: TObject); procedure btnCancelUpdatesClick(Sender: TObject); procedure ClientDataSet1ReconcileError(DataSet: TCustomClientDataSet; E: EReconcileError; UpdateKind: TUpdateKind; var Action: TReconcileAction); procedure DataSetProvider1BeforeUpdateRecord(Sender: TObject; SourceDS: TDataSet; DeltaDS: TCustomClientDataSet; UpdateKind: TUpdateKind; var Applied: Boolean); private function GetNextID: Integer; { Private declarations } public { Public declarations } end; var frmMain: TfrmMain; implementation uses RecErrorForm; {$R *.dfm} procedure TfrmMain.FormCreate(Sender: TObject); begin ClientDataSet1.Open; end; procedure TfrmMain.Timer1Timer(Sender: TObject); begin lblUpdates.Caption := IntToStr(ClientDataSet1.ChangeCount) + ' Update(s)'; end; procedure TfrmMain.btnApplyUpdatesClick(Sender: TObject); begin ShowMessage('ApplyUpdates returned a value of ' + IntToStr(ClientDataSet1.ApplyUpdates(0))); end; procedure TfrmMain.btnCancelUpdatesClick(Sender: TObject); begin ClientDataSet1.CancelUpdates; end; procedure TfrmMain.ClientDataSet1ReconcileError( DataSet: TCustomClientDataSet; E: EReconcileError; UpdateKind: TUpdateKind; var Action: TReconcileAction); begin Action := HandleReconcileError(DataSet, UpdateKind, E); end; function TfrmMain.GetNextID: Integer; begin sqlID.ExecSQL; Result := sqlID.ParamByName('AValue').AsInteger; end; procedure TfrmMain.DataSetProvider1BeforeUpdateRecord(Sender: TObject; SourceDS: TDataSet; DeltaDS: TCustomClientDataSet; UpdateKind: TUpdateKind; var Applied: Boolean); begin if UpdateKind = ukInsert then if DeltaDS.FieldByName('ID').OldValue <= 0 then DeltaDS.FieldByName('ID').NewValue := GetNextID; end; end. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2002, 13:45 |
|
|
start [/forum/search_topic.php?author=%D0%93%D0%BE%D1%81%D1%82%D1%8C%D1%8C&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
36ms |
get tp. blocked users: |
2ms |
others: | 658ms |
total: | 816ms |
0 / 0 |