我要檢查DBGRID1的Columns[4]值,是不是輸入"O"或是為NULL
如果不是"O"或不是NULL就請跳出視窗告知
程式碼如下IF (DBGRID1.Columns[4] <> 'O' OR  DBGRID1.Columns[4] IS NIL) THEN
  BEGIN
      MessageDlg('是否輸入O以外字',mtWarning,[mbok],0);
      abort;
  END;可是他會出現"Operator not applicable to this operand type"這個錯誤訊息
出錯點在"DBGRID1.Columns[4] IS NIL"這裡,請問該怎麼判斷他是否為空值或是怎麼在Columns[4]屬性質的地方設定他就只能是空值或O,其他符號不可以輸入

解决方案 »

  1.   

    你直接判斷它的單元格是否為空就可以了
     if adoq.fieldbyname('aa').isnull then
      

  2.   

    Columns[4]返回的 列索引,他包含很多的单元格,你至少也需要指定那个cell吧
      

  3.   

    如果你DataSet用的 ADOQuery
    建议你这样做
    IF ((ADOQuery1.FieldByName('字段名').AsString <> '0') OR ADOQuery1.FieldByName('字段名').IsNull) THEN指定是当前行
      

  4.   

    謝謝大家提供意見...Dear kye_jufei:
    謝謝幫忙,他預設是空值,"判斷為空就好"不可以防呆呀@@
    對不起
    可能我說的不是很清楚DBGRID1.Columns[4],我是從資料庫拉資料出來,要讓user修改
    但輸入前希望可以判斷他只能輸入"O"跟"空值"或是要怎麼樣讓DBGRID1.Columns[4]這個地方只能輸入"O"或是"空值"其他KEY
      

  5.   

    楼主语法本身就有错。。1、判断nil不能用is,is是判断类的。用assigned或者直接用等号
    2、or前后两部分如果是表达式的华,要加括号,不然编译不过
      

  6.   

    至于判断null的话,也不是用nil,参看楼上各楼
      

  7.   

    那就直接在数据集的beforepost事件中判断当前字段的值就好了
      

  8.   

    同意用此方法
    还有 你要求的是
    如果不是"O"或不是NULL就請跳出視窗告知
    这里不应该用or 而是用and  
    在beforepost事件中进行如下判断
    IF ((ADOQuery1.FieldByName('dwdm').AsString <> '0') and (ADOQuery1.FieldByName('dwdm').AsString<>'')) THEN
      

  9.   

    方法很多種,在ado的beforepost事件中也可以:IF ((ADOQuery1.FieldByName('dwdm').AsString <> '0') and (ADOQuery1.FieldByName('dwdm').AsString<>''))