输入或修改的问题?(100分)

  • 主题发起人 主题发起人 thj
  • 开始时间 开始时间
T

thj

Unregistered / Unconfirmed
GUEST, unregistred user!
先有一个窗体,用dbgrid或ListView作为浏览,当按增加或修改按纽后打开另一窗体,
窗体上用edit或dbedit作为输入控件,输入或修改完后,按确定按纽即增加或修改一
条记录。很多程序都这么做,不知如何实现?
我用的是:ADO+ACCESS
 
简单的思路:
1、提供输入
2、修改数据库
3、刷新dbgrid或listview,如果是dbgrid,调用刷新就可以了。如果是listview,则要手工
修改listview对应的item
 
我的意思是按增加按纽打开输入窗体时,应不显示数据。请各位高手具体说说!
 
没错。按确定时进行处理,而且你可以不关闭输入窗口。
 
最好有原码。
 
原码看起来更麻烦,思路理清了再做不是更轻松。
其实我的做法是在点增加、修改按钮时不用新开一个窗体,直接在当前窗体的上半部分或右半
部分放置那些用于编辑的edit或combobox等控件(不使用dbedit等数据感知控件),点增加
或修改按钮时使这些控件有效,确定后再置为无效(所有这些控件都放在一个Panel上,设
置它们有效无效时只需设置panel的enabled属性就可以了,不必一个一个设过去)。点添加
时将所有这些控件清空,点修改时显示的应是当前记录的内容(在dbgrid中点击之类的操作
使当前记录位置发生变化时,应及时使那些控件显示的值跟着变化。这种方法另有一个好处
是如果一行字段太多,dbgrid中无法在不使用滚动条的情况下看到全部数据时,可以在那些
控件上看到当前行的全部数据)。在点确定保存时应检查数据是否合法,如不合法则禁止保
存回数据库。当然,点增加或修改时也可以弹出一个编辑窗口,但思路也还是一样的。
 
在第一个窗口(frm1.frm,u1.pas),放上ADOTable或ADOQuery,Datasource,dbgrid,
在第二个窗口(frm2.frm,u2.pas),在u2.pas的加上uses u1;并且在frm2上放dbedit,
dbedit.datasource=frm1.DATASOURCE.

 
to thj:
你还没有完全理解Delphi数据库编程模型
若是两个窗体的数据集都是同一个,你还担心什么呢??
 
添加按钮中
begin
table1.append;
form2.show;
end;


关闭输入窗体的按钮
begin
table1.post;
form2.close;
end;
 
建一个DataModule,放ADOQuery,这样便于数据管理
输入窗体用Edit;
新增 with DataModule1.ADOQuery1 do
begin
insert;
FieldByName('FieldName').AsString:=Edit1.Text;
...
post;
end;
修改 Edit1.Text:=DataModule1.ADOQuery1.AsString;
...


 
他可能是问哪种方法更好。。。
 
向你介绍一个可视控件的属性:
visible
该属性可以控制控件的显示与否。
我觉得你应该用dbedit等控件,最多你在点添加按钮后运行一条Table1.ApplyRange;
命令。
 
前段时间,我下载了几个高手的原码,效果就是我说的哪样,但方法与大家讲的不同,
基本上都用函数,有些看不懂。
输入窗口的做法,仁者见仁,智者见智,各有各的欣赏观。谢谢大家的回答!
 

Similar threads

D
回复
0
查看
859
DelphiTeacher的专栏
D
D
回复
0
查看
827
DelphiTeacher的专栏
D
D
回复
0
查看
745
DelphiTeacher的专栏
D
后退
顶部