我有1个字段,定义为char,字段值为中文字(如"事故处理")或者数字(12345),当我新添加记录的时候,对于该字段,如果输入的是中文,可以重复,不用考虑;如果是数字的话,就判断下以前的记录,如果该数字存在就提示已经存在,不能添加记录,哪位高手帮帮我.最好有详细点的代码,本人新手

解决方案 »

  1.   

    樓主可以只判斷輸入是否為數字就行了function IsNumber(pStr: String):Boolean; 
    var 
    i: integer; 
    tStr : String; 
    begin 
      Result := True; 
      tStr := Trim(pStr); 
      for i := 1 to Length(tStr) do 
      begin 
        if not tStr[i]  in ['0'..'9'] then 
        begin 
          Result := False; 
          Break; 
        end;  
      end; 
    end; 
      

  2.   

    现在delphi中判断是否位数字,然后再到数据库里面去查询或插入,不知道你那个不会,数据库里面这样判断
    select count(*) from tablename where trim(col)='123'   判断count(*) 是否等于0
      

  3.   

    如果是数字,先去库里查找是否有相同数据ADOQuery1.Close;
    ADOQuery1.SQL.Text := 'select * from 表 where 字段='+QuotedStr('值');
    ADOQuery1.Open;
    Result := not ADOQuery1.IsEmpty;
    如果有重复则Result:= True;
      

  4.   

    首先最好将字段类型修改为varchar参考代码  //输入的是否为数字,简单的方法(输入的必须全部为数字)
      if (s[1] in ['0'..'9']) then
      begin
        //判断是否存在重复值
        self.ADOQuery2.Close;
        Self.ADOQuery2.Connection:=self.ADOConnection1;
        self.ADOQuery2.SQL.Clear;
        Self.ADOQuery2.SQL.Add('select * from tablename where fieldname1=:s1');
        Self.ADOQuery2.Parameters.ParamByName('s1').Value:=s;
        Self.ADOQuery2.Open;
        if self.ADOQuery2.RecordCount>0 then
        begin
          MessageBox(Application.Handle,'变电站编号或变电站名称已经存在','信息',MB_OK or MB_ICONINFORMATION);
          Exit;
        end;
      end;
      self.ADOQuery2.Append;
      ......
      

  5.   

    关键还是一个查询的sql语句,如果能在数据库中查询出来就说明有重复值了。
      

  6.   

    可能我没写清楚,应该是在新添加记录的时候,DBEDIT1输入'变电所'名称.DBEDIT2输入'操作票编号',现在要的结果是:如果是输入的是同一变电所名的又同一操作票编号(不包括中文的情况),那么添加取消,反之可以新增加记录.
    前面几位大哥大姐的的程序,我数据表已经在添加编辑状态了,再执行adoquery.close;是不是应该就没办法执行添加记录了吧,4楼的大哥也是做变电所的,请大家帮下小弟.就快给分了哈
      

  7.   


    //输入的是否为数字,简单的方法(输入的必须全部为数字)
      if (s[1] in ['0'..'9']) then
      begin
        //判断是否存在重复值
        self.ADOQuery2.Close;
        Self.ADOQuery2.Connection:=self.ADOConnection1;
        self.ADOQuery2.SQL.Clear;
        Self.ADOQuery2.SQL.Add('select * from tablename where fieldname1=:s1 and fieldname2=:s2');
        Self.ADOQuery2.Parameters.ParamByName('s1').Value:=bdzmc;
        Self.ADOQuery2.Parameters.ParamByName('s1').Value:=s;
        Self.ADOQuery2.Open;
        if self.ADOQuery2.RecordCount>0 then
        begin
          MessageBox(Application.Handle,'该变电站中已经存在相同编号的操作票','信息',MB_OK or MB_ICONINFORMATION);
          Exit;
        end;
      end;
      self.ADOQuery2.Append;
      ......
      

  8.   

    if (s[1] in ['0'..'9']) then
    这个就是简单的判断输入的是否是数字,因为操作票编号不会有汉字出现吧