我有两个数据表:
表1:mcb————ADOQuery1
MCBM MC
001 煤炭
002 钢材
003 木材表二:RKB——ADOTABLE1
ID MCBM SL

我如果要在程序中将mcb的mcbm字段的值 写入RKB的MCBM字段中,如下程序为什么写不上??
with adotable1 do begin
 open;
 append;
 with ADOQuery1 do begin
  close;
  sql.Clear ;
  sql.Add('select * from mcb where mc=:mc');
  ADOQuery1.Parameters.ParamByName('mc').Value:= MC_DBCombox.Text ;
  open ;
  first;
  adotable1.Fields.FieldByName('mcbm').AsString:= adoquery1.fieldbyname('mcbm').AsString ;
  end ;
post;
end;
程序运行中也不报错,但是就是写不进RKB表中,我发现是 “adoquery1.fieldbyname('mcbm').AsString ;”这一句代码没有取到mcb表中的MCBM字段的值,请问这是为什么??

解决方案 »

  1.   

    那就是你中间的查询没有结果,是不是要加trim(mc_dbcombobox.text),你直接'select * from mcb where mc='''+trim(mc_dbcombobox.text)+''' '试试,判断一下recordcount
    看看有无查询的结果
      

  2.   

    sql.Add('select * from mcb where mc='':mc''');
      

  3.   

    sql.Add('select * from mcb where mc='+QuotedStr( MC_DBCombox.Text ));确保你的MC_DBCombox.Text中有值 并且查询有结果
      

  4.   

    还有,你用了两个with,建立不用with看看,我就吃过这方面的kui.
    另外,正如上面的虾哥们所述,你用个 常量试试看,如果能提交,说明是你的查询里根本就没数值
      

  5.   

    你已经把问题缩小了
    close;
      sql.Clear ;
      sql.Add('select * from mcb where mc=:mc');
      ADOQuery1.Parameters.ParamByName('mc').Value:= MC_DBCombox.Text ;
      open ;那就主要看这一段,单步跟踪,看看你的adoquery1.sql.text究竟是什么?
      

  6.   

    open ;
    first;
    adotable1.edit; //<--这里加入
    adotable1.Fields.FieldByName('mcbm').AsString:= adoquery1.fieldbyname('mcbm').AsString ;
    adotable1.post;//加入
    end ;
    post;<--没有编辑不需要post,应删除。
    //整理一下吧!你的思路有点乱。
      

  7.   

    常量是可以提交的,可是为什么我的查询中会没有结果呢??是MC_DBCOMBOX.TEXT的值取的不对吗??
      

  8.   

    的确象楼上的那位仁兄所说的,我的思路是有点乱,但是我还没有想到好的方法,请问一下:
    adotable1.Fields.FieldByName('mcbm').AsString:= adoquery1.fieldbyname('mcbm').AsString ;这个句子本身有错吗???如果没有错,那就是MC_DBCOMBOX没有取到值了,是这样的吗??
    用两个WITH有什么隐患吗??我是初学DELPHI,会问一些很菜的问题,还请大家多多帮忙!!我在这里十分感谢大家!!!
      

  9.   

    学习一下.adotable1.Fields.FieldByName('mcbm').AsString:= adoquery1.fieldbyname('mcbm').AsString ; 应该是没有问题.先看看你查询 的时候有没有结果
      

  10.   

    楼主可以用showmessage随时显示一下所取值
      

  11.   

    没edit并且没post,肯定写不进了:)
      

  12.   

    select * from mcb where mc=:mc
    我觉得这句sql有点问题
    是不是应该 'select * from mcb where mc='''+ mc + ''''
    后面这个mc是个变量还是字段?
    你用的是什么数据库?
      

  13.   

    hfltp(红枫叶) 此言差矣!
    他是用的参数访问形式