自定义函数问题
自定义函数一:search 作用是在添加数据时搜索以前是否存在相同的字段值。
自定义函数二:checkdata 作用是在添加数据时检测所有数据是否符合规则,checkdata中有时候需调用search.
增加时用的控件均为dbedit控件
错误提示1:参数a没有默认值(a是dbedit1的值)
错误提示2:标准表达示数据类型不匹配
注:出现两种错误时,调示器箭头都指向if form3.search(dbedit1.DataField,DBEdit1.Text) then这一句代码。用的是access数据为。
代码如下:
function tform3.checkdata:boolean;
begin
result:=true;
if form3.dbedit1.text='' then
begin
result:=false;
showmessage('编号不能为空!');
form3.DBEdit1.SetFocus;
exit;
end;
if form3.search(dbedit1.DataField,DBEdit1.Text) then
begin
result:=false;
showmessage('编号重复,请重新录入');
form3.DBEdit1.SetFocus;
exit;
end;
if form3.DBEdit3.Text='' then
begin
result:=false;
showmessage('名称重复,请重新录入');
form3.DBEdit3.SetFocus;
exit;
end;
end;
function tform3.search(fieldname:string;value:string):boolean;
begin
form3.adoquery1.Close;
form3.ADOQuery1.SQL.Clear;
form3.adoquery1.SQL.Add('select * from toru_zl where '+trim(fieldname)+'='+trim(value));
form3.adoquery1.Open;
if adoquery1.RecordCount>0 then result:=true
else result:=false;
end;
问题点数:100、回复次数:9Top
1 楼fulinlin(初学者)回复于 2003-08-02 08:26:30 得分 0
说明一点,添加数据时是用的adotable的append方法。Top
2 楼fulinlin(初学者)回复于 2003-08-02 08:29:28 得分 0
qq:122151992,希望大家在线指教Top
3 楼ljmanage(过客)回复于 2003-08-02 08:39:36 得分 30
你的checkdata有很大问题
1、if form3.dbedit1.text='' 改为 Trim(form3.dbedit1.text)=''
2、你没有把她修改前的值保存下来,修改后再判断,该字段是否修改过,修改过有没修改成和别的重复,不然你没有修改过改字段的话,数据库中肯定是有该机录的
Top
4 楼fulinlin(初学者)回复于 2003-08-02 08:46:41 得分 0
to: ljmanage(过客)
第二个错误,标准表达示中数据类型不匹配是怎么回事?Top
5 楼liqxdt(黑客劍--助人護己)回复于 2003-08-02 09:00:03 得分 20
to fulinlin(初学者)
if form3.search(dbedit1.DataField,DBEdit1.Text) then
function tform3.search(fieldname:string;value:string
检查dbedit1.DataField 子段是否为 STRING ?
Top
6 楼Maple119(枫叶)回复于 2003-08-02 09:07:18 得分 20
回答: 第二个错误,标准表达示中数据类型不匹配是怎么回事?
楼主呀.我没有说明出错是在哪一行,我们又怎么知道具体是什么一回事呀.但我可以举个例子给你说明一下:
比如: FiledName 的字段类型是整型,但你要给它赋一个字符串符,你说会不会产生 数据类型不匹配呢???????Top
7 楼fulinlin(初学者)回复于 2003-08-02 09:10:58 得分 0
to:liqxdt(黑客剑)
if form3.search(dbedit1.DataField,DBEdit1.Text) then
是判断adotable的dbedit1.datafield中是否存在dbedit1.text,如果存在,表示值已经重复,search返假.
function tform3.search(fieldname:string;value:string
是判断adotable的fieldname字段中是否存在value值,如果有返回真,否则返回假.Top
8 楼newsofter(横空出世小霸王)回复于 2003-08-02 09:13:32 得分 30
form3.adoquery1.SQL.Add('select * from toru_zl where '+trim(fieldname)+'='+trim(value));
你的FieldName字段类型是文本型吗?
判断是否重复,可以在beforePost事件判断
1.先查找数据
2.if (RecordCount>=1) and (DataSet.State=DsInsert) then
//重复Top
9 楼fulinlin(初学者)回复于 2003-08-02 09:15:44 得分 0
to: Maple119(枫叶)
fieldname代表字段名,只有在第一个编号字段用了search,此字段类型为文本型,数据类型应该不会错吧,出错是在"if form3.search(dbedit1.DataField,DBEdit1.Text) then"这一句代码
Top



