我的数据库中有一个字段内记载的是分析的结果,结果分别为,含水,含油,含水油,含有水,油,水,六中结果现在要在数据库中心插入一列,将分析结果转化为数字,对应的解释结果变成1,2,3,4,5,6,  请问如何实现   用adoquery  数据库为access数据库

解决方案 »

  1.   

    先插入一列,然后使用下面的代码
    function GetValueByName(name:string):integer;
    begin
    if name='含水' then
       result:=1   else
    if name='含油' then
       result:=2   else
    if name='含水油' then
       result:=3   else
    if name='含有水' then
       result:=4   else
    if name='油' then
       result:=5   else
    if name='水' then
       result:=6;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
    i:integer;
    s:string;
    begin
    ADOQuery1.First;
    for i:=0 to ADOQuery1.RecordCount-1 do
      begin
      s:=ADOQuery1.FieldByName('你要分析的那个字段名').AsString;
      ADOQuery1.Edit;
      ADOQuery1.FieldByName('你插入的那一列的字段名').AsInteger:=GetValueByName(s);
      ADOQuery1.Post;
      end;
    end;
      

  2.   

    有点问题!
    procedure TForm1.Button2Click(Sender: TObject); 
    var 
      i:integer; 
      s:string; 
    begin 
      ADOQuery1.First; 
      while not ADOQuery1.Eof do
    ///!!for i:=0 to ADOQuery1.RecordCount-1 do 
      begin 
        s:=ADOQuery1.FieldByName('你要分析的那个字段名').AsString; 
        ADOQuery1.Edit; 
        ADOQuery1.FieldByName('你插入的那一列的字段名').AsInteger:=GetValueByName(s); 
        ADOQuery1.Post; 
        ADOQuery1.Next;
      end; 
    end;
      

  3.   


    var
    sl:TStringList;
    str:string;
    i:Integer;
    begin
    sl:=TStringList.Create;
    sl.Add('含水');
    sl.Add('含油');
    ...
    str:='含水';//你取的值
    i:=sl.IndexOf(str)+1;//i即为你要转换的值
    //用Case也可以
    case sl.IndexOf(str) of
    0: i:=你要赋予的值;
    1:....
    end;
      

  4.   

    这种情况下建议在数据库上做点文章,可以建立编码表.这样做的好处是以后如果编码对应的名字有改变或者扩展,直接修改编码表配置就可以。code name
      1  含水
      2  含油
      3  含水油
      4  含有水
      5  油
      6  水
      

  5.   

    Access不支持 case when 语句
    参考楼上各位的吧
      

  6.   

    ACCESS不支持 CASE WHEN 但是 它有IIF可以代替,使用起来也差不多,针对你这个问题解决起来没什么问题。给个参考:
    SELECT .... IIF(A='含水',1,IIF(A='含油',2,IIF(....)))
      

  7.   

    ADOQuery1.Open之前加上如下代码:
    ADOQuery1.Close;
    ADOQuery1.SQL.Text := 'select * from 表名 where ....';//SQL语句打开表就可以