我用Delphi编程,没有系统学过SQL,我在一次联合查询后想修改查询结果中选中单元格中的内容,如下:
MainForm.Q_M_A_Update.SQL.Add('Update GTAW Set DBG_M_A.SelectedField.FieldName=InputStr Where E_TYPE =DBG_M_A.SelectedRows.Items[1] and E_TRADEMARK =DBG_M_A.SelectedRows.Items[2] and E_SIZE =DBG_M_A.SelectedRows.Items[3]');
提示“DBG_M_A.SelectedField.FieldName=InputStr ”中有错误,我对SQL语法不熟悉,想问问在这种情况下应该怎么写?
即:1、DBGrid中选中单元格对应的字段名在SQL修改语句中应该怎么表达?
    2、还有Where后面是否可以直接像“E_TRADEMARK =DBG_M_A.SelectedRows.Items[2]”这样写?

解决方案 »

  1.   

    联合查询,不能直接修改,只能用update更新后,重新load数据“E_TRADEMARK =DBG_M_A.SelectedRows.Items[2]”
    改成
    'E_TRADEMARK ='+DBG_M_A.SelectedRows.Items[2],当然还要看你这个字段和变量的数据类型
      

  2.   

    update 表A set 表A.字段A=xxx where 。
      

  3.   


    我本来就是这么直接写的:Update GTAW Set DBG_M_A.SelectedField.FieldName=InputStr Where 
    但是运行到这里的时候提示“SQL error code=-104 Token unknown - line 1, char 37”。
    这是怎么回事呢?
      

  4.   

    老大,真服了你了,DBG_M_A.SelectedField.FieldName是个字符值,你把它直接放到sql中能对吗
    'Update GTAW Set '+DBG_M_A.SelectedField.FieldName+'=InputStr ...'