ورود

View Full Version : OnPostError نمی رود در DBISAM



spicirmkh
سه شنبه 23 دی 1382, 16:24 عصر
سلام

بانک با DBISAM نوشتم اما وقتی POST میخواهد کند قبل از اینکه به OnPostError برود پنجره خطا DBISAM باز می شود اطلا به OnPostError نمی رود

ایا باید چیزی تنظیم کنم

لطفا کمکم کنید
با تشکر

مهدی کرامتی
سه شنبه 23 دی 1382, 16:27 عصر
کدام ورژن DBISAM رو استفاده میکنید؟

مثالی از برنامه‌ای که چنین مشکلی دارد بهمراه Table های مربوطه را در اینجا ضمیمه کنید.

spicirmkh
سه شنبه 23 دی 1382, 16:45 عصر
Ver 3.5

جدید تهیه کردم از شما


procedure TFormMain.DBISAMQuery1PostError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
begin
showmessage('Error') ;
end;


نه در table نه در Query

spicirmkh
سه شنبه 23 دی 1382, 16:50 عصر
همه برنامه ام



unit Main;

interface

uses
Windows, Messages, Classes, SysUtils, Graphics, Controls, StdCtrls, Forms,
Dialogs, DBCtrls, DB, DBGrids, DBTables, Grids, ExtCtrls, Buttons, FileCtrl,
ADODB, Mask, ComCtrls, DBISAMTb, DBISAMCt ;

type
TFormMain = class(TForm)
PanelTop: TPanel;
Image1: TImage;
Image2: TImage;
Panelmain: TPanel;
Panel1: TPanel;
Panel2: TPanel;
DataSource1: TDataSource;
DBEdit1: TDBEdit;
Label6: TLabel;
Label7: TLabel;
Label9: TLabel;
Label10: TLabel;
DBEdit4: TDBEdit;
DataSource2: TDataSource;
DBEdit3: TDBEdit;
DBEdit2: TDBEdit;
DBCheckBox1: TDBCheckBox;
DBEdit5: TDBEdit;
Label1: TLabel;
DBEdit6: TDBEdit;
Label2: TLabel;
DBEdit7: TDBEdit;
Label3: TLabel;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet3: TTabSheet;
DBNavigator2: TDBNavigator;
DBCheckBox2: TDBCheckBox;
DBMemo1: TDBMemo;
DBISAMDBGrid1: TDBISAMDBGrid;
Panel3: TPanel;
Label5: TLabel;
DBNavigator1: TDBNavigator;
Sname: TEdit;
Label4: TLabel;
Lselect: TLabel;
Lall: TLabel;
DBISAMQuery1: TDBISAMQuery;
DBISAMQuery1Company_farsi: TStringField;
DBISAMQuery1Company_latin: TStringField;
DBISAMQuery1Email: TStringField;
DBISAMQuery1WEBSITE: TStringField;
DBISAMQuery1PHON: TStringField;
DBISAMQuery1Not_sned_fax: TBooleanField;
DBISAMQuery1ADDRESS: TStringField;
DBISAMQuery1Location: TStringField;
DBISAMQuery1SCRIPTION: TStringField;
DBISAMQuery1Date_enter: TStringField;
DBISAMQuery1Notes: TMemoField;
DBISAMQuery1Erro_send_fax: TBooleanField;
DBISAMTable1: TDBISAMTable;
Label8: TLabel;
Ename: TEdit;
Label11: TLabel;
DBISAMQuery1CompanyID: TAutoIncField;
DBISAMQuery1FAX: TStringField;
procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
procedure SnameKeyPress(Sender: TObject; var Key: Char);
procedure Label5Click(Sender: TObject);
procedure posRec ;
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure EnameKeyPress(Sender: TObject; var Key: Char);
procedure DBISAMQuery1PostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
private
{ private declarations }
public
{ public declarations }
end;

var
Sdir, Slable,D: string ;
FormMain: TFormMain;
Organ, Database : string ;
Sabet : Boolean ;
implementation


{$R *.DFM}





procedure TFormMain.DBNavigator1Click(Sender: TObject;
Button: TNavigateBtn);
begin
posRec ;

end;

procedure TFormMain.SnameKeyPress(Sender: TObject; var Key: Char);
var
S : string ;
begin
if key<> char(13) then exit ;

// DBISAMTable1.Locate('Company_farsi',VarArrayOf([Qu otedStr(Sname.Text)]), [loPartialKey]);
with DBISAMQuery1 do
begin
Close;
SQL.Clear ;
S := 'SELECT * FROM COMPANY where Company_farsi Like ' + QuotedStr('%'+Trim(Sname.Text)+'%');
SQL.add (S);
Open ;
posRec ;
end;

end;

procedure TFormMain.Label5Click(Sender: TObject);
var
S : string ;
begin
with DBISAMQuery1 do
begin
Close;
SQL.Clear ;
S := 'SELECT * FROM COMPANY' ;
SQL.add (S);
Open ;
Sname.Text := '' ;
Ename.Text := '' ;
posRec ;
end;
end;

procedure TFormMain.posRec;
begin
Lall.Caption := intTostr(DBISAMQuery1.RecordCount);
Lselect.Caption := '/ '+intTostr(DBISAMQuery1.RecNo);
end;

procedure TFormMain.FormActivate(Sender: TObject);
begin
DBISAMQuery1.Open ;
DBISAMTable1.Open ;
posRec ;
end;

procedure TFormMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DBISAMQuery1.Close ;
DBISAMTable1.Close ;

end;

procedure TFormMain.EnameKeyPress(Sender: TObject; var Key: Char);
begin
if key<> char(13) then exit ;

with DBISAMQuery1 do
begin
Close;
SQL.Clear ;
SQL.add ('SELECT COMPANY.*, Customer_name.Name');
SQL.add ('FROM COMPANY INNER JOIN Customer_name ON COMPANY.CompanyID = Customer_name.CompanyID');
SQL.add ('WHERE Customer_name.Name Like ' + QuotedStr('%'+Trim(Ename.Text)+'%'));
Open ;
posRec ;
end;

end;

procedure TFormMain.DBISAMQuery1PostError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
begin
showmessage('Error') ;
end;

end.

مهدی کرامتی
سه شنبه 23 دی 1382, 17:18 عصر
منظور من این بود که فایلهای نمونه برنامه بهمراه Table های ساخته شده را بصورت یک فایل Zip اینجا ضمیمه کنید تا بررسی شود.

DataMaster
چهارشنبه 24 دی 1382, 07:39 صبح
شاید این باشه که شما از دلفی برنامه رو اجرا می کنید
در این صورت اول پیام خطاهای خود دلفی و اگر برنامه رو دوباره اجرا کنید پیامهای شما نمایش داده میشه

spicirmkh
چهارشنبه 24 دی 1382, 09:08 صبح
سلام

بله من از داخل دلفی اجرا می کنم پیغام خطا می دهد اما وقتی کامپایل هم می کنم سراغ
onposterror نمی رود

حال برنامه مثالی ضمیمه کردم لطقا کمکم کنید

با تشکر
مرتضی