一个关于Cannot modify a read-only dataset的问题,请高手帮忙,在线等!_Delphi_编程问答

一个关于Cannot modify a read-only dataset的问题,请高手帮忙,在线等!

来源:互联网  时间:2016/8/12 22:04:49

关于网友提出的“ 一个关于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;
注意看一下不同的地方

上一篇delphi 与VBnet区别
下一篇用数据库字段做变量问题。上次问过了但是还想看看大家的意见
明星图片
相关文章
《 一个关于Cannot modify a read-only dataset的问题,请高手帮忙,在线等!》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)