关于网友提出的“ 一个关于Cannot modify a read-only dataset的问题,请高手帮忙,在线等!”问题疑问,本网通过在网上对“ 一个关于Cannot modify a read-only dataset的问题,请高手帮忙,在线等!”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 一个关于Cannot modify a read-only dataset的问题,请高手帮忙,在线等!
描述: 各位大侠好,又是我,这次是一个修改按钮的问题,代码如下:
procedure Tfrminput.Button4Click(Sender: TObject);
var
date1:String;
begin
if Query1.Active = True then
if (Trim(Edit1.Text)<>'')and(Trim(Edit2.Text)<>'')then
with Query1 do
begin
Try
Edit;
Query1.ParambyName('MC').AsString:=Trim(Edit1.Text); //工具名称
Query1.ParambyName('GG').AsString:=Trim(Edit2.Text); //工具规格
Query1.ParambyName('DFL').AsString:=Trim(Combobox1.Text); //大分类
Query1.ParambyName('XFL').AsString:=Trim(Combobox2.Text); //小分类
Query1.ParambyName('DW').AsString:=Trim(Edit3.Text); //单位
Query1.ParambyName('LR').AsInteger:=Strtoint(Trim(Edit4.Text)); //在库领入
Query1.ParambyName('MS').AsInteger:=Strtoint(Trim(Edit5.Text)); //磨损
Query1.ParambyName('SH').AsInteger:=Strtoint(Trim(Edit6.Text)); //损坏
Query1.ParambyName('DS').AsInteger:=Strtoint(Trim(Edit7.Text)); //丢失
Query1.ParambyName('DJ').AsInteger:=Strtoint(Trim(Edit8.Text)); //短借
Query1.ParambyName('CJ').AsInteger:=Strtoint(Trim(Edit9.Text)); //长借
Query1.ParambyName('KCSL').AsInteger:=Strtoint(Trim(Edit10.Text)); //库存数量
Query1.ParambyName('ZJC').AsInteger:=Strtoint(Trim(Edit11.Text)); //总结存
date1 :=FormatDateTime('yyyy-mm-dd',DateTimePicker3.Date); //格式化日期为年月日
Query1.ParambyName('RQ').value:=strtodate(date1);//登记日期
Query1.ParambyName('BZ').AsString:=Trim(Memo1.Text); //备注
Post;
Application.MessageBox('修改成功。','提示',0+64);
Except
Application.MessageBox('修改失败。','提示',0+64);
Close;
end;
end;
点击该按钮时报错:Cannot modify a read-only dataset;
我觉得是可能编辑一个readonly属性设置为True的TTable组建Table1时出现的问题,可是窗口中的DbGrid指向的datasource关联的是一个Query1,而不是一个表格啊,怎么会出现表格的readonly没设置成false的问题呢?难道query能形成一个表格么?那这个表格在哪儿?怎么把它的readonly属性设置成false呢?
请各位大侠帮忙,谢了!!!!挺着急的~
解决方案1: 给 Query1 加一个 TUpdateSQL,设置好属性即可。
解决方案2: procedure Tfrminput.Button4Click(Sender: TObject);
var
date1:String;
begin
if Query1.Active = True then
if (Trim(Edit1.Text)<>'')and(Trim(Edit2.Text)<>'')then
with Query1 do
begin
Try
Edit;
FieldByName('MC').AsString:=Trim(Edit1.Text); //工具名称
FieldByName('GG').AsString:=Trim(Edit2.Text); //工具规格
FieldByName('DFL').AsString:=Trim(Combobox1.Text); //大分类
FieldByName('XFL').AsString:=Trim(Combobox2.Text); //小分类
FieldByName'DW').AsString:=Trim(Edit3.Text); //单位
FieldByName('LR').AsInteger:=Strtoint(Trim(Edit4.Text)); //在库领入
FieldByName('MS').AsInteger:=Strtoint(Trim(Edit5.Text)); //磨损
FieldByName('SH').AsInteger:=Strtoint(Trim(Edit6.Text)); //损坏
FieldByName('DS').AsInteger:=Strtoint(Trim(Edit7.Text)); //丢失
FieldByName('DJ').AsInteger:=Strtoint(Trim(Edit8.Text)); //短借
FieldByName('CJ').AsInteger:=Strtoint(Trim(Edit9.Text)); //长借
FieldByName('KCSL').AsInteger:=Strtoint(Trim(Edit10.Text)); //库存数量
FieldByName('ZJC').AsInteger:=Strtoint(Trim(Edit11.Text)); //总结存
date1 :=FormatDateTime('yyyy-mm-dd',DateTimePicker3.Date); //格式化日期为年月日
FieldByName('RQ').value:=strtodate(date1);//登记日期
FieldByName('BZ').AsString:=Trim(Memo1.Text); //备注
Post;
Application.MessageBox('修改成功。','提示',0+64);
Except
Application.MessageBox('修改失败。','提示',0+64);
Close;
end;
end;
注意看一下不同的地方
以上介绍了“ 一个关于Cannot modify a read-only dataset的问题,请高手帮忙,在线等!”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3236479.html