各位大佬:
小弟做一前台收银超市,一个FORM中有6个QUERY,requestlive:=true;但query6不能赋值不知为何,大致程序如下,请指教,THANKYOU.
begin
query6.Close;
query6.SQL.Clear;
query6.sql.add('select * from xiaoshou');
query6.Open;
query6.First;
for b11i1:=0 to query6.RecordCount-1 do
  begin
  b11_sl:=query6.fieldbyname('sl').asfloat;
  b11_dalei:=query6.fieldbyname('dalei').AsString;
  b11_spmc:=query6.fieldbyname('spmc').AsString;  if  b11_dalei='组合' then
   begin
   edit5.Text:=b11_dalei;//执行这句时,edit5为空,同时打开数据库所有的记录在'dalei'字段上都是'组合'这句本是测试所添加的
   showmessage('');
   query4.Close;
   query4.sql.Clear;
   query4.sql.Add('select * from zh where zsp_name=:sp1 ');
   query4.ParamByName('sp1').AsString:=b11_dalei;
   query4.Open;
   query4.First;
     for b11i2:=0 to query4.RecordCount-1 do
     begin
        b11_zhspmc:=query4.fieldbyname('dsp_name').AsString;
        b11_zhdalei:=query4.fieldbyname('dsp_dalei').asstring;
        b11_zhdw:=query4.fieldbyname('dsp_dw').AsFloat ;
        query5.close;
        query5.SQL.Clear;
        query5.sql.Add('select * from price where spmc=:sp2 and daile=:da');
        query5.ParamByName('da').AsString:=b11_zhdalei;
        query5.Open;
        b11_sl1:=query5.fieldbyname('kc_sl').AsFloat;
        query5.Edit;
        query5.ParamByName('kc_sl').AsFloat:=b11_sl1-(b11_zhdw*b11_sl);
        query5.Post;
        end;

解决方案 »

  1.   

    如果真有值,加个trim上去看看b11_dalei:=trim(query6.fieldbyname('dalei').AsString); 
      

  2.   

    把查不出数据的那句SQL放到数据库上执行,看看结果是什么。
    也可以在执行这个方法时,监视SQL,找到具体执行的SQL,到数据库上执行,看看结果。
      

  3.   

    先去人sql语句是否正确,数据集中是否选出数据了,然后再看query6.fieldbyname('dalei').AsString是否有值
      

  4.   

    你看一下SQL中的dalei数据类型是什么你把它改成 varchar 试试。
      

  5.   

    如edit5为空,
    那么:if b11_dalei='组合' then
    这句是不可能成立的,根本不会执行下面的代码如果:b11_dalei='组合' 
    那么edit5.Text肯定也等'组合'showmessage(''); 
    改成
    showmessage(edit5.Text); 看有没有for b11i1:=0 to query6.RecordCount-1 do 
    这种写法,最好改成下面的
    while not query6.eof do