如何在dbgrid添加记录的时候自动显示表的默认值?(ado类型)(50分)

  • 主题发起人 主题发起人 Adnil
  • 开始时间 开始时间
A

Adnil

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在通过在adodataset的insert事件中赋值的方法来做到的
procedure TFormMain.ADODataSet1AfterInsert(DataSet: TDataSet);
begin
ADODataSet1.FieldByName('Title').AsString := 'Untitled';
ADODataSet1.FieldByName('Description').AsString := 'N/A';
ADODataSet1.FieldByName('Priority').AsInteger := 3;
ADODataSet1.FieldByName('CreateDate').AsDateTime := Now;
ADODataSet1.FieldByName('Handled').AsBoolean := False;
ADODataSet1.FieldByName('Checked').AsBoolean := False;
end;
非常麻烦,这些值都在数据库中设置过了,以后如果更改了,还需要更改程序。 :(
是否有办法让dbgrid自动读取缺省值? 我用的是access本地数据库。
 
不可能所有的字段都使用默认值吧,你增加记录时只
指定需要指定值的字段。试试。
 
那是当然,但是我要把缺省值显示出来给用户看的,用户可不知道哪些字段是有缺省值的。
 
如果都有默认值的话就POST一下再EDIT吧,不要就删除
 
重新刷新一下就行了,
access本地数据库
ADODataSet1.Close;
ADODataSet1.Open;


 
增加记录时只指定需要指定值的字段
use adotabel.requery
 
你只需要对要更改的字段赋值,其它的数据库会自动添加的。假如只有title需要,则
procedure TFormMain.ADODataSet1AfterInsert(DataSet: TDataSet);
begin
ADODataSet1.FieldByName('Title').AsString := 'Untitled';
//ADODataSet1.FieldByName('Description').AsString := 'N/A'; 不需要
//ADODataSet1.FieldByName('Priority').AsInteger := 3; 不需要
// ADODataSet1.FieldByName('CreateDate').AsDateTime := Now; 不需要
// ADODataSet1.FieldByName('Handled').AsBoolean := False; 不需要
// ADODataSet1.FieldByName('Checked').AsBoolean := False; 不需要
end;

 
to mlzhou:

it's quite right. but what i need is to display the default value of a new record.
Of course, the default value is defined in the database logic.

sorry for my can't type chinese :(
 
在ADODataSet1的OnNewRecord事件中填写默认值
 
接受答案了。
 
后退
顶部