表中创建了一个“用户类型”字段CHAR(10),填入了“管理员”名称,但用
case QUERY1.FIELDBYNAME('用户类型').value of 
 管理员:执行语句一;
 管理员2:执行语句二;
end;
就是这个语句经常报错,究竟怎样才能把当前记录的字段值能和下面字符串执行成功??

解决方案 »

  1.   

    看看帮助中的说明:
    where selectorExpression is any expression of an ordinal type (string types are invalid) and each caseList is one of the following:
    你会看到这一句:string types are invalid。也就是在case..of的结构中不能用string类型。
      

  2.   

    case 字符串 of 是语法不允许的
      

  3.   

    CASE ...OF
    XXX:执行语句一;
    end;這裏的XXX只能是INTEGER或BOOLEN
      

  4.   

    case后面只能是字符,而不是字符串
      

  5.   

    不能用string程序写.recno代替一下吧
      

  6.   

    var
      mUserType:Variant;
    begin
      mUserType:=QUERY1.FIELDBYNAME('用户类型').value;
      if mUserType=管理员 then 执行语句一
      else if mUserType=管理员2 then 执行语句二
    end;
      

  7.   

    var
      mUserType:Variant;
    begin
      mUserType:=QUERY1.FIELDBYNAME('用户类型').AsVariant; //這樣寫較好, 盡量少用.Value!!!!
      if mUserType=管理员 then 执行语句一
      else if mUserType=管理员2 then 执行语句二
    end;
      

  8.   

    再說CHAR(10)字段定義也會產生問題
    比如輸入'xxx', 那麼在數據庫內生成'xxx       ',後面多了7個空格!!
    因改成Varchar(10)!!!否則每次讀QUERY1.FIELDBYNAME('用户类型').AsString都要加上
    Trim(QUERY1.FIELDBYNAME('用户类型').AsInteger)!!!!var
      mUserType:string;
    begin
      mUserType:=QUERY1.FIELDBYNAME('用户类型').Asstring; <<<<<<!!!!!!!這里根本不要用Value 或Variant類型讀數據, 因為本身知道它是string類型!!