程序里有一个datagridview,其中第五个字段的值是1,或0.我想实现的目的就是当数据库内的值是0时,C#.net程序显示“已借出”,当数据库内的值是1时,C#.net程序显示“未借出”,请问这个语句是用SQL写麽?怎么写?在哪写?
小弟初学,最好说的详细点,谢谢!!!
对了平台是VS2005,数据库是Access2007。

解决方案 »

  1.   

    常用的有两种做法。第一种就是在后台代码中加判断后再进行绑定到datagridview;第二种做法就是使用SQL语句,就是使用case……when语句
      

  2.   

    假设你查询数据的sql为select a,b,c,d,e from Member而e就是你说的这个字段改为select a,b,c,d, (case e when 0 then '已借出' when 1 then '未借出' end) as e from Member
      

  3.   

    case when column= '0' then  column='已借出' else column='未借出' end
      

  4.   

    不要在数据库去做,用dataGridView的CellFormatting就可以:        private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
            {
                try
                {
                    if (e.ColumnIndex == 1)        //控制要格式化的列
                    {
                        int val = Convert.ToInt32(e.Value);
                       string valStr ="";
                        switch (val )
                        {
                            case 0:
                                valStr = "已借出";
                                break;
                            case 1:
                                valStr = "未借出";
                                break;
                            default:
                                break;
                        }
                        e.Value = valStr;                    //替换格式化值
                        e.FormattingApplied = true;
                    }
                }
                catch (System.Exception ex)
                {
                    e.FormattingApplied = false;
                }
            }
      

  5.   

    datagridview在CellFormatting事件里处理比较好。
      

  6.   

    楼上的高手们啊,2、3、4、5楼的我全都试过了,都不对啊!
    我在详细点说说我要修改的是Book_State字段,在SQL语句中,还要加一个别称的条件,我已经写好的、没有问题的语句是这样的:
    strSql = "Select Book_ID as 图书ID,Book_Name as 书名,Book_Type as 图书分类,Book_Press as 出版社,Book_State as 图书状态,Book_Owner as 所有者,Book_HuanTime as 还书时间 From BookMaster order by Book_ID desc";
    请哪位高手帮我改下,兄弟非常诚恳,非常迫切,并且非常感谢!!!
      

  7.   


    对,我上面形容错了,不是修改,只是显示,我上面写的那条语句就是写在程序里的,不是写在数据库里的,只是这个显示方式怎么改啊?strSql   =   "Select   Book_ID   as   图书ID,Book_Name   as   书名,Book_Type   as   图书分类,Book_Press   as   出版社,Book_State   as   图书状态,Book_Owner   as   所有者,Book_HuanTime   as   还书时间   From   BookMaster   order   by   Book_ID   desc "; 
    红字部分怎么改?高手你说你总挑我的错,你到是给我个结果啊!!!
      

  8.   

    select a,b,c,d, (case e when 0 then '已借出' when 1 then '未借出' end) as e from Member这个方法有什么不对吗?
      

  9.   

    不对啊,而且我那个SQL语句里面还有一个别称的条件呢,不太好组合啊,SQL执行问题,我在程序里执行有错,我直接在数据库里执行也是说括号里面的执行错误,所以...
    高手们,再费费心帮帮忙吧。谢谢啦!!!
      

  10.   

    跟你说了了多少遍历,你不需要在sql语句做任何处理,原始的就可以了!你这个sql语句:
    strSql   =   "Select   Book_ID   as   图书ID,Book_Name   as   书名,Book_Type   as   图书分类,Book_Press   as   出版社,Book_State   as   图书状态,Book_Owner   as   所有者,Book_HuanTime   as   还书时间   From   BookMaster   order   by   Book_ID   desc "; 仅仅是把字段名字从英文改成中文显示而已,值还是原来的值!这样也可以,免得再界面那边也要改成中文,是吧?你就用这个sql语句,获取你的数据DataTable,然后绑定dataGridView,设置断点在我给你的那个事件里:
    dataGridView1_CellFormatting。F5执行,一步一步走下去,看看是不是执行了我那些代码,这下,你清楚没有?
      

  11.   


    呃 高手,还有个问题,如果我不想放到CellFormatting这个事件里呢,我觉得这个有点浪费资源,我只想把这个判断放到一个共通函数中,一个普通的SQL查询语句周围,请问怎么做呢再帮忙指教一下,谢谢!!!