我建了一个表(GRP_ID组别,MENU_ID菜单,ACTIVE是否可用1/0),我想用DBCHECKBOX来点击就改变ACTIVE的值,写进数据库。例如MENU_ID有三个值sys,user,righi。我用三个DBCHECKBOX代表这三个值的,点击时就可改变ACTIVE的值。但是我我这三个DBCHECKBOX的DATAFIELD的属性设为ACTIVE,更新时就提示,不能插入重复值的提示,请问要这样才能解决呢?
调试欢乐多
你将代码贴出看看。
(aa,sys,0)
(aa,query,1)
(aa,stockin,0)
(bb,sys,0)
(bb,query,1)
(bb,stockin,1)我想修改aa这个组的权限,用三个DBCHECKBOX分别代表sys,query,stockin的ACTIVE值,只要我点一下DBCHECKBOX,哪个相应的ACTIVE就改变。问题是我把那三个DBCHECKBOX连接到一个TQUERY(已经过滤到了AA组),DATAFIELD值设为ACTIVE,我保存数据库时他就提示插入重复值的错误
如果你的MENU_ID的值是固定的话可以做成字段就方便了
数据就是
aa,1,0,1
------------------------------------------------------------------
字段多了 数据少了啊晕 字段多了怕什么 你用什么库偶MSSQL 80个字段的表也是经常用滴
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.Edit;
ADOQuery1.Post;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
ADOQuery1.Edit;
end;procedure TForm1.ADOQuery1AfterScroll(DataSet: TDataSet);
begin //CheckBox1 对应修改密码 其它的可以类似的增加
if (DataSet.FieldByName('active').AsBoolean) then
CheckBox1.Checked:=true
else
CheckBox1.Checked:=false;
end;procedure TForm1.ADOQuery1BeforePost(DataSet: TDataSet);
begin
DataSet.FieldByName('active').AsBoolean:=CheckBox1.Checked;
end;
begin //CheckBox1 对应修改密码 其它的可以类似的增加
if (DataSet.FieldByName('active').AsBoolean) then
CheckBox1.Checked:=true
else
CheckBox1.Checked:=false;
end;这样只能够通过选择了一行,然后就修改、保存一行,这个我知道。况且你保存的时候还要判断哪个CHECKBOX是不是有CHECKED了,要是有很多条菜单权限的话,就要写很多代码了
所以最好你就在dbgird里修改吧!