请看这段代码:
ADOQuery4.Close;
     ADOQuery4.SQL.Clear;
     s3:='select * from  vesselsconditioncode ';
     ADOQuery4.SQL.Add(s3);
     ADOQuery4.Open;
DBGrid3.Columns[1].PickList.Clear;
adoQuery4.First;
while not adoQuery4.Eof do begin
  DBGrid3.Columns[1].PickList.Add(adoQuery4.Fields[0].AsString+' '+adoQuery4.Fields[1].AsString);
  adoQuery4.Next;
end;
我在dbgrid里做下拉框,该下拉空有两列,一列是序号,另一列是代码,
我明明选择的序号1,可是显示在dbgrid中却是1和一个空格。也就是说显示在序号列里为两位,为什么呢?请指教!

解决方案 »

  1.   

    是啊, 你看看 sql 这个表的字段定义, 是 char, 还是 varchar, char 是定长的, 没有也会用空格填的改 varchar, 或取的时候 Trim() 一下
      

  2.   

    我用的是access,没有区分char,varchar,而且数据库中定义的该字段的长度为50,不明白到底是怎么回事啊。
      

  3.   

    DBGrid3.Columns[1].PickList.Add(adoQuery4.Fields[0].AsString+' '+adoQuery4.Fields[1].AsString);
    是不是adoQuery4.Fields[1].AsString为空,中间那个' '的问题
      

  4.   

    单步跟踪调试一下嘛或者这样:
    ...
    adoQuery4.First;
    while not adoQuery4.Eof do begin
    ShowMessage(adoQuery4.Fields[0].AsString+' '+adoQuery4.Fields[1].AsString);//显示一下字符串试试看嘛
    DBGrid3.Columns[1].PickList.Add(adoQuery4.Fields[0].AsString+' '+adoQuery4.Fields[1].AsString);
    adoQuery4.Next
    ...
      

  5.   

    不是,我把那个空格去掉了,结果把下一个字段的第一个字母也给读进来了。
    比如:下拉框中是1Prog,结果显示在该列中为1P。其中1是第一个字段的,prog是第二个字段的。