代码如下:
WITH Q_QueryPattern DO BEGIN
   IF NOT ACTIVE THEN OPEN;
   CASE TYPEID OF
     1:BEGIN
        APPEND;
        FIELDBYNAME('CTM_C').AsString:=G_FormName;    //G_FormName是一全局变量,string型的
        FIELDBYNAME('BM_C').AsString:=cxGridDBTableView1.DataController.DataSource.DataSet.FieldValues['TABLENAME'];
        FIELDBYNAME('ZDM_C').AsString:=cxGridDBTableView1.DataController.DataSource.DataSet.FieldValues['FIELDNAME'];
        post;
       END;
     2:BEGIN
        IF NOT ISEMPTY THEN
           DELETE;
     END;
   END;
END;
程序执行到FIELDBYNAME('CTM_C').AsString:=G_FormName;这一句就出错,是什么"EOleException,发生未知错误",请问这是怎么回事?

解决方案 »

  1.   

    可能'CTM_C'跟你的G_FormName全局变量有问题吧
      

  2.   

    >>WITH Q_QueryPattern DO BEGIN
    你用 query ?? 可能參數設置不對, 是只讀的, 無法增加記錄
      

  3.   

    我用的是query,locktype是batchoptimistic的,cursortype是static,这样设应该没问题呀.
    我用showmessage看了一下G_FormName,也是对的,然后我把append下面到post为止的语句都屏闭掉,就没有错误了,可我还是想不出哪儿出了问题.
      

  4.   

    找找相应的帮助吧,看看OleException是由哪些问题引起的。
      

  5.   

    你再加一個updatesql控件.
    還有你寫的代碼.我還是看得一頭霧水
      

  6.   

    才一个with嘛.
    我用的是ADO控件,没有updatesql的
    Q_QueryPattern是一个adoquery,case语句的2不用看的,只要看with下面的,我就是对Q_QueryPattern做一个append的工作,然后在添加FIELDBYNAME('CTM_C')的时候出错,就这么回事.
      

  7.   

    是不是你的Append有问题呀!试试把它放在后面,在post之前!
      

  8.   

    FIELDBYNAME('CTM_C').AsString:=G_FormName;            
    FIELDBYNAM('BM_C').AsString:=...;
    FIELDBYNAME('ZDM_C').AsString:=...;
    Append;
    Post;
    这样?
      

  9.   

    应该是FIELDBYNAME('CTM_C').AsString:=G_FormName;  的错误!
    你试试
    Fields[i].AsString:=G_FormName;
    其中,i是你取出的数据集中的排位。
      

  10.   

    你试过形成sql语句执行吗?既然没有思路,就先将可试的进行排除。
      

  11.   

    对了,用fieldbyname('ctm_c').value:=g_formname;或
    parameter.fieldbyname('ctm_c').value:=g_formname;试试