我设计ValueChecked的值为‘T',ValueUnchecked的值为'F', 
我点击Button插入数据时,dbcheckbox被默认设为不选中,假如我不去点它的话,保存到数据库中,对应的这个字段为空(应该为F啊,我是这么认为的),但如果我点过后,不论选中与否,肯定能正确显示T或者F,请问这是怎么回事??
谢谢

解决方案 »

  1.   

    如果数据库中为空只能说明你的数据根本就没有插入到数据库中去,应该将值赋给数据库字段
    if dbchk1.chekced then
      params.parambyname('flag').value:=dbchk1.ValueChecked
    else 
      params.parambyname('flag).value:=dbchk1.ValueUnChecked
      

  2.   

    要求是bool的,但建表的时候在sql server里,我没发现bool,我就用char了,
    这个有问题?
    谢谢
      

  3.   

    但我选中,或者选中后再取消就可以存放到数据库中啊,
    就是在不去点那个dbcheckbox的时候会出现我说的那个情况
      

  4.   

    换个TCheckBox试下,不要用DBCheckBox,我在做数据库操作一般都不用DB的控件
    要不把你代码贴出来看看
      

  5.   

    这个dbcheckbox是和数据库某个字段关联的啊,用checkbox也可以吗?
    谢谢!!
      

  6.   

    你没有改动dbcheckbox,就认为你没有改动该字段,所以就是NULL了。
      

  7.   


    当然可以,举个最简单的例子,table1就一个字段Flag,char类型
    插入数据
     with qry1 do
      begin
        close;
        Sql.Clear;
        Parameters.Clear;
        Parameters.CreateParameter('flag',ftString,pdInput,0,0);
        SQL.Add('insert into table1 values(:flag)');
        if checkbox1.checked then
          Parameters.ParamByName('flag').value:='T'
        else
          Parameters.ParamByName('flag').value:='F'
        Prepared;
        ExecSQL;
      end;
    读取数据
      with qry1 do
      begin
        close;
        Sql.Clear;
        Parameters.Clear;
        Parameters.CreateParameter('flag',ftString,pdInput,0,0);
        SQL.Add('select flag from table1 where flag=:flag)');
        Prepared;
        ExecSQL;
        while not eof do
        begin
          if fieldbyname('flag')='T' then
            checkbox1.checked:=true
          else
            checkbox1.checked:=false
        end;
      end;
    么用过ADOQuery,思路反正是这样的
      

  8.   

    DataSet的OnBeforePost事件里写上,DataSet.FieldByName('flag').Value:=dbchkbox.……