CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

自定义函数问题

楼主fulinlin(初学者)2003-08-02 08:25:15 在 Delphi / 数据库相关 提问

自定义函数一: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

相关问题

  • 自定义函数
  • 自定义函数
  • 自定义函数
  • 自定义函数
  • 怎么自定义函数???????
  • 求自定义函数
  • \关于自定义函数?
  • 关于自定义函数
  • 如何在MSSQL 7.0自定义函数?
  • 如何使用自定义函数??

关键词

  • 字段
  • 函数
  • 数据
  • 修改
  • search
  • 代码
  • dbedit
  • 自定义函数
  • fieldname
  • form3

得分解答快速导航

  • 帖主:fulinlin
  • ljmanage
  • liqxdt
  • Maple119
  • newsofter

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo