第一个问题实在是...
你可以在选择了该条记录之后就赋值呀.
form2上的grid对应的dataset是什么,form1上的grid对应的dataset又是什么,找出你想要对应的字段名:比如:dataset1.fieldbyname('goodid').asstring := dataset2.fieldbyname('goodid');即可呀.
第二个问题:你可以用计算字段,计算字段就是你在dataset上右键点击,然后选择Fields editor,再右键,new field,出现的界面上有一个ridiogroup,你选calculate项,加入你的计算公式吧.

解决方案 »

  1.   

    可以直接传递dbgrid2的DATASOURCE对应的DATASET的字段值,如下:
    FORM1.TABLE1.FIELDVALUES['FIELD1']:=FORM2.TABLE1.FIELDVALUES['FIELD1'];//事先需要在FORM1中引用FORM1
    可以添加一个计算字段,在ONCALCFIELDS事件中写相映计算公式。
      

  2.   

    对于第一问题,可以用循环啊
    while not ADO1.Eof
     for J:= 0 to ADO1.Fields.count do
      ADO2.FieldByName(ADO1.Fields[J].FieldName).value 
       := ADO1.Fields[J].Value或者内存拷贝,不知道可不可以 ADO2.Assign(ADO1)第二个问题呢:你可以在 对应字段的OnSetText事件中写代码,这个事件发生在从界面将数据传到数据集之前,所以呢,你还可以在这里进行输入的合法性监测;简单一点呢,你可以在字段的OnChange事件里面写代码(如何设置字段的事件,你应该知道吧,就是双集你的数据集控件,Add all Fields就可以了)
      

  3.   

    对不起,上面的代码我忘记了写 ADO1.Next 还有 Begin...end
      

  4.   

    第一个问题:
    在dbgrid2的dbclick中写代码
    var i:integer;
    for i:=0 to form1.query1.fieldcount-1 do
    begin
      try
      form1.query1.fields[i].value:=query2.fields[i].value;
      except
      continue;
      end;
    end;
    第二个问题在query的beforepost事件中写代码
    query1.fieldbyname('金额').asfloat:=query1.fieldbyname('单价').asfloat*query1.fieldbyname('数量').asinteger
      

  5.   

    我不是想把所有的商品编码都赋过去,而且我想通过dbgrid来实现,主要目地是节省输入。
      

  6.   

    请看一下:
    var i:integer;
    begin
    for i:=0 to dm.temp.fieldcount-1 do
    begin
      try
      dm.temp.fields[i].value:=dm.sp_temp.fields[i].value;
      except
      continue;
      end;
    end;
     end;
    错误出现在: dm.temp.fields[i].value:=dm.sp_temp.fields[i].value;
    DataSet not in edit or insert mode.
    求哪位帮助解决一下。
      

  7.   

    没有进入编辑状态
    好象要设置一个query的什么属性
      

  8.   

    你要先edit呀.
    var i:integer;
    begin
    dm.temp.edit;  //加入这条语句
    for i:=0 to dm.temp.fieldcount-1 do
    begin
      try
      dm.temp.fields[i].value:=dm.sp_temp.fields[i].value;
      except
      continue;
      end;
    end;
    end;如果还出错,看看dm.temp的属性吧,你用的是adoquery或query吧,要将其属性requestlive设为true.