如何在运行期内修改DBGrid的Options的属性值。(100分)

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

app2001

Unregistered / Unconfirmed
GUEST, unregistred user!
1、是这样的,我想用户在按了增加或修改键后才能更改DBGrid中的内容,否则只能用作
浏览数据用,但是在DBGrid中双击任一单元格时均能对里面的数据进行更改于是想到设
Options属性中的dgEditingr的值,但却找不到在程序运行期内更改该属性值的方法,请帮忙,
2、我用TABLE控件及DBNavigator控件和DataSource1控件以及DBGRID控件来设计一个数据录入
模块时(用的是ACCESS),在局域网中的另一台电脑执行该程序
进行增加、编辑记录时,出现错误提示“Key violation[Microsoft][ODBC Microsoft Access Driver]操作必须使用
一个可更新的查询”,当删除记录是出现的是”无法从指定的数据表中删除“, 是何解呢?
我用的联接数据库的方式是用ODBC,在程序运行时动态的为当前程序目录中数据库建立一别名,

 
dbgrid.options:=options+[dgeditingr]
 
只浏览用:dbgrid1.Options:=dbgrid1.Options-[dgEditing];
要编辑用:dbgrid1.Options:=dbgrid1.Options-[dgEditing];
 
2.是不是有个自增字段?
 
>>想用户在按了增加或修改键后才能更改DBGrid中的内容
设置DataSource的AutoEdit为False就可以了.
 
打开时将数据集置为浏览状态,在网格的OnDBClick 事件中定段代码,先将数据集的状态
置为Edit状态.
在你的修改和增加按钮里也有段代码不就可以啦!
你的这么方法,不是很可靠不信的会你可以试试!
 
感谢大家的帮忙第一个问题已解决,zhanggeye的方法最好用,第二个问题还没解决
现在我想问另一问题即怎样既能按动DBGrid的标题按钮,又可以限制用户不能拖动标题
换来换去呢

或者是这样的因为在增加记录时,为了方便用户输入有两个记录我是自动输入的,
代码是这样的:
wwDBGrid1.Fields[2].asString:='abc';
wwDBGrid1.Fields[3].asDateTime:=now();
如果用户乱拖标栏的话就会造成输入顺序不对的情况了,如果有别的方法不用限制
用户拖动标题的也行,我会给分的,还望各位多多指教,再次感谢!!!
盼答复。
 
你可以有fieldbyname('字段').asstring
 
在OnNewRecord中设置初值,不就可以避免这个问题吗!
 
lzliang 你好,能不能讲得更清楚些呢? 谢谢
 
也就是说对数据库操作,不要对表格操作。
在OnNewRecord事件中直接对数据库字段赋初始值,
不必理会字段在表格中是第几个Fields。
 
我说应该用 fieldbyname('字段名').asstring=xxx;
 
多人接受答案了。
 
后退
顶部