ADO的SQL如下:
SELECT A.* B.P_NAME FROM XZMX_INFO A LEFT JOIN PEOPLE_INFO B ON A.P_CODE=B.P_CODE使用DBGRID控件,当我修改数据时,如果修改了P_NAME内数据,PEOPLE_INFO内的数据也会修改。如何能够只修改XZMX_INFO内的数据而不修改PEOPLE_INFO内的数据。

解决方案 »

  1.   

    不建议直接修改dbgrid里的内容。这样好控制。
      

  2.   

    我看你这条sql中,p_name是people_info中的字段呀?什么叫做“如果修改了P_NAME内数据,PEOPLE_INFO内的数据也会修改”。你修改一个表中字段的值,还不想改这个表的数据,不懂。
      

  3.   

    写一个存储过程或触发器,如果PEOPLE_INFO数据被修改过,RollBack 数据表PEOPLE_INFO的变化。
      

  4.   

    我的意思是,修改DBGRID内P_NAME的值时,只修改XZMX_INFO的P_CODE的字段而不修改PEOPLE_INFO内数据
      

  5.   

    你没有讲清楚,但我明白你的意思:你是想修改P_NAME的值但不想保存是吧?我也碰到这个问题,得到的答案是:不要让它能修改,设期ReadOnly := false,如果要修改,但不想保存,没有什么好办法,有一种方法:请看我的贴子: http://expert.csdn.net/Expert/topic/1586/1586269.xml?temp=.4449427
      

  6.   

    SQL为'SELECT * FROM XZMX_INFO A LEFT JOIN PEOPLE_INFO B ON A.P_CODE=B.P_CODE
    DBGRID 表格如下编号 |姓名 | 单位 | 天数|其中姓名,单位为PEOPLE_INFO中的内容
    编号,单位,天数为XZMX_INFO中的内容
    我想实现的功能是,在姓名列中输入PEOPLE_INFO中的数据,编号和单位内容自动显示。只XZMX_INFO表中只存'编号','单位','天数'
    可我在输入信息提交时,总是在PEOPLE_INFO内也增加一条记录
      

  7.   

    呵呵,在query里用了left join是不行的,修改会出问题。
      

  8.   

    最好不要直接修改DBgrid,如果相关联的数据最好放到后台去处理,
      

  9.   

    为什么用BDE就可以为,ADO就不行