如何实现此功能?( 简单 ) 急死了,解决此问题者,另送分200! (10分)

  • 主题发起人 主题发起人 wp531
  • 开始时间 开始时间
W

wp531

Unregistered / Unconfirmed
GUEST, unregistred user!
如何实现Query的修改、保存?并且保存之后不能修改了,除非点击修改按钮?
 
什么意思?
说说清楚啊?人家都不明白的!
 
参考这个函数
procedure SetInfoPowerGridState(InfoPowerGrid: TwwDbGrid; IsModify: Boolean);
begin
if IsModify then
InfoPowerGrid.Options := InfoPowerGrid.Options - [dgRowSelect] + [dgAlwaysShowEditor] + [dgEditing]
else
InfoPowerGrid.Options := InfoPowerGrid.Options + [dgRowSelect];
end;
 
补充:在DBGrid里浏览数据,不能修改,点击修改按钮,则可以编辑数据,然后点击保存,
此时,除非再点击修改按钮,否则,又不可以编辑数据了。
控件有DBGrid、Datasource、Query、Button。
 
加一个clientDataset吧。那样控制起来很方便
 
当保存数据以后,Dbgrid.ReadOnly:=true;
当修改数据时, Dbgrid.ReadOnly:=false;
 
不是在DBGrid里修改数据,是在DBEdit里修改数据。对不起,还有DBEdit控件!
 
很简单啊,跟在DBGrid里面修改差不多的
假设Button1是修改钮,Button2是保存钮
Button1:
DBGrid1.ReadOnly:=False;//可以修
DBEdit1.DataSource:=DataSource1;
DBEdit1.DataField:='姓名';//设置好与DBEdit所对应的字段
DBGrid1.ReadOnly:=True;//不可修改
Button2:
也很简单,直接用SQL语句好了。什么都不用设置
 
重新说一下,程序在 DBGrid里显示全部数据,这里是只读的。在DBEdit里修改数据,在点
击‘修改’前,DBEdit里的数据是只读的。当保存后,数据又变成只读的了。
我的代码如下:
点击修改按钮: Query1.Open;
Query1.RequestLive :=True;
Query1.Edit;
BTedit.Enabled :=False;
BTsave.Enabled :=True;

点击保存按钮: Query1.Post;
Query1.RequestLive :=False;
BTedit.Enabled :=True;
BTsave.Enabled :=False;
当点击修改时,程序说不能修改只读的数据集,如果加上UpdateSql控件,则任何时候都
可修改。我刚学数据库编程,请高手指点。

 
修DBGrid的readonly属性.这个才是真正控制读和写的
 
不管用。而且,我的目的是让客户在DBEdit里修改数据,DBGrid只是浏览数据。
 
我刚刚开始学数据库的时候写了一个这种东西,不如发给你自己看吧!!
 
好,谢谢。wp531@sina.com
希望快些。
 
在设计阶段,把Query的RequestLive设置成True,
把DataSource的AutoEdit设置成False即可,其它不用做任何事
但要保证Query只对一个数据表操作,否则你得用UpdateSQL代替Query了
 
试试这个:
直接改以下属性
DBGRID。READONLY:=TRUE; //DBGRID只读
DATASOUSE。AUTOEDIT:=FALSE; //不可自动修改
 
我不太明白你的意思
 
如果你只用了如你所说的几个控件,在Dbedit里是只读的。因为Query
数据集单独使用时为只读数据集,其需与updatesql搭配使用,才能实现修改功能.
 
新情况如下。我把Datasource的Autoedit属性设为False,在修改按钮里又把它设为True。
提示我的表‘Table not indexed’,我的表原来没有索引,于是我加了一个‘编号’字段,
并以它为主键,建立了索引。但是现在,程序运行后,点击显示全部数据,却为0条。
我的显示全部数据是用Sql写的('select * from info'),原来可以显示,现在却不行了。
为什么?我错在哪儿了?请帮帮忙,很急。
 
我知道你什么意思了,DBEdit和DBGrid你是用了一个datasource吧,datasource用同一个
dataset,你可以吧修改和浏览数据库放在两个tabsheet里面,就是使用pagecontrol.
一个tabsheet上面放DBEdit,另一个上面放DBGrid,在pagecontol的onchange事件里面,
控制,当ActivePageIndex=0时候,dataset.readonly:=false;
ActivePageIndex1时候(DBGrid的那个tabsheet),dataset.readonly:=true.
不知道我说得够不够明白.
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部