数据库如下:
用户  密码  权限
 A     aa    1
 B     bb    2怎样在DBGrid中将权限字段中的
‘1’显示为‘管理员’
‘2’显示为‘录入员’请教大家??

解决方案 »

  1.   

    使用计算字段,在数据级控间的oncalculate中处理
      

  2.   

    如果你使用ADOQUERY,可以直接设置属性。
      

  3.   

    1.
    SELECT  用户,密码, (CASE WHEN 权限 ='1' THEN '管理员' WHEN id = '2 'THEN '录入员' END) 权限 FROM table2.
    procedure Tform1.dbgrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    var str:string;
    begin
      if column.FieldName='权限' then
      begin
        str:=trim(CdsMain.fieldbyname('权限').AsString);
        if str='1' then
           canvas.TextOut(Rect.Left+1,Rect.Top+2,'管理员');
        else if rstr='2' then
           canvas.TextOut(Rect.Left+1,Rect.Top+2,'录入员')
      end;
    end;
      

  4.   

    suny_2001(小鱼儿)
    您说得我试了方法好像不行呀!
    方法1在Access下好像不行
      

  5.   

    有字典表
    wks(mex)你会可以教我一下吗?
      

  6.   

    你可以这样,把一个登陆用户名的窗体改成用一个combobox吧
    然后在登陆时可以这样编写
    procedure Tlogin.FormCreate(Sender: TObject);
    var
      id:ansistring;
    begin
      adoquery1.sql.add('select * from login');
      while not sql_login.Eof do
      begin
        id:=adoquery1.fielbyname('');
        if id=1 then
        combobox.Items.Add('管理员');
        else
        combobox.items.add('录入员');
        adoquery1.next;
       end;
       combobox.ItemIndex:=0;
    end;
      

  7.   

    我上面只是举个例子
    我用的表比较复杂必须用DBGrid显示
    我用的SQL语句如下
      SELECT A.日期,A,B.名称,A.代码,A.单位 FROM 表1 A,表2 B
        WHERE A.代码=B.代码
    但是这种方法在DBGrid中修改数据会出现一个错误
    “缺少更新或刷新的键列信息”
    哪位大虾可以帮我解决这个问题,或者有什么别的方法!分不够可以再给!!!
      

  8.   

    建立一个字典表
    code     name
    1        管理员
    2        录入员然后,在delphi中放两个记录集,一个连主表,一个连字典表在字典表记录集上打右键,字段编辑,然后装入所有字段。
    在主表记录集上打右键,字段编辑,打右键,装入所有字段,然后再新键字段,这个字段是一个虚拟字段,为了把主表记录集的字段和字典表记录集的字段连起来,name:随便,type:string,field type:lookup,key field:打算翻译的字段,dataset:字典表记录集,lookupkey:code,result field:name
    好了,可以了,
    你可以研究研究,很好用的,不用写一句代码