樓主可以只判斷輸入是否為數字就行了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;
现在delphi中判断是否位数字,然后再到数据库里面去查询或插入,不知道你那个不会,数据库里面这样判断 select count(*) from tablename where trim(col)='123' 判断count(*) 是否等于0
如果是数字,先去库里查找是否有相同数据ADOQuery1.Close; ADOQuery1.SQL.Text := 'select * from 表 where 字段='+QuotedStr('值'); ADOQuery1.Open; Result := not ADOQuery1.IsEmpty; 如果有重复则Result:= True;
首先最好将字段类型修改为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; ......
//输入的是否为数字,简单的方法(输入的必须全部为数字) 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; ......
if (s[1] in ['0'..'9']) then 这个就是简单的判断输入的是否是数字,因为操作票编号不会有汉字出现吧
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;
select count(*) from tablename where trim(col)='123' 判断count(*) 是否等于0
ADOQuery1.SQL.Text := 'select * from 表 where 字段='+QuotedStr('值');
ADOQuery1.Open;
Result := not ADOQuery1.IsEmpty;
如果有重复则Result:= True;
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;
......
前面几位大哥大姐的的程序,我数据表已经在添加编辑状态了,再执行adoquery.close;是不是应该就没办法执行添加记录了吧,4楼的大哥也是做变电所的,请大家帮下小弟.就快给分了哈
//输入的是否为数字,简单的方法(输入的必须全部为数字)
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;
......
这个就是简单的判断输入的是否是数字,因为操作票编号不会有汉字出现吧