有一个产品表:
   ID    Name
   001   汽车
   002   飞机在ComboBox中显示的是name字段中的值,但传递的也是name值,而我要保存的是该产品对应的ID。在asp中很方便可以通过<OPTION value="<%=rs("id")%>"><%=rs("id")%>"></OPTION>就解决,Delphi中该如何处理阿。这种情况在List中也存在这个问题。

解决方案 »

  1.   

    应该为<OPTION value="<%=rs("id")%>"><%=rs("name")%>"></OPTION>
      

  2.   

    如果ID是顺序的,则id:=combobox.items.indexof('...')+1
    如果是非顺序的,则使用dataset.locate方法
      

  3.   

    to syl79() :
      谢谢你!!
      我用的是非顺序的,dataset.locate可以说的具体一点吗  checklistbox中允许多选的又该如何来获取ID呢
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      i : integer;
    begin
      for i := 0 to checklistbox1.Count - 1 do
      begin
        if checklistbox1.Checked[i] then
        begin
          if table1.Locate('NAME',checklistbox1.Items.Strings[i],[]) then
            listbox1.Items.Add(table1.FieldByName('ID').AsString);
        end;
      end;
    end;
      

  5.   

    说白了就是获得text后到数据库反查ID,不能直接获得.
      

  6.   

    with zbquery do
        begin
        close;
        sql.Clear;
        sql.Add('select * from d_dwdm');
        open;
        end;
    zbquery.first;
    if zbquery.Locate('dwmc',trim(dbediteh7.Text),[]) then
    dbediteh8.Value:=zbquery.FieldByName('dwdm').AsString
    else
    dbediteh8.Value:='0';
      

  7.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ComboBox1.AddItem(rs.Name,Tobject(rs.id)); //添加对象
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      id : integer;
    begin
      id := integer(ComboBox1.Items.Objects[0]);  //访问对象
    end;