为什么总是出错?(100分)

  • 主题发起人 主题发起人 phil911
  • 开始时间 开始时间
P

phil911

Unregistered / Unconfirmed
GUEST, unregistred user!
我在写一个小程序时,想对修改的数据库进行保存,可是我的程序不能通过,
我的代码是:
procedure TMainForm.Button1Click(Sender: TObject);
var Save:integer;
begin
if myclass.state=dsEdit then
begin
Save:=MessageDlg('Save Changes?',confirmation,[mbyes,mbno],0);
if Save=mrYes then
table1.post
else table1.cancel
end
else showmessage('Not in Edit Mode!');
end;

总是不能识别myclass.state=dsEdit 为什么,如何解决?我的数据库名为myclass。
 
当然不会dsEdit,记录设为DSEDIT后(双击或EDIT),一旦失去焦点,自动POST,状态回到初始,
当你BUTTON 单击时,焦点到了BUTTON,记录失去焦点了.
 
你应该在MyClass的BeforePost事件中写这段代码。
 
我几十次碰过,权当作dug,换个法吧,用myclass.tag值作标记吧!当编辑时令myclass.tag:=1
 
我是菜鸟,一点看法
如果myclass是TDataSet的子类的话:
DataSet的State属性是集合类型,最好不要用'='作比较,而应该用in
还有这段代码看得太涩了。改一下:

procedure TMainForm.Button1Click(Sender: TObject);
begin
if myclass.state in [dsEdit] then
// ^^^^^^^^^^^^^^^^^^^^^^^^^^
begin
if MessageDlg('Save Changes?',confirmation,[mbyes,mbno],0)=mrYes then
table1.post
else
table1.cancel
end
else
showmessage('Not in Edit Mode!');
end;
 
还不行呀。说是:Undeclared identifer:'myclass'呀
 
>我的数据库名为myclass
你不能在程序中直接使用数据库的名称来访问数据库。应该用与之相连的数据库控件的名称。“Table1”?
 
应该引用DB 单元,
uses DB;
 
都通不过
 
你的myclass是在MainForm中吗?
 
应该是table1吧,不是myclass:
if Table1.state=dsEdit then
....
 
多人接受答案了。
 
后退
顶部