blueforgetmenot 2023-11-01 09:48 采纳率: 100%
浏览 9
已结题

dbisamquery控件的locate函数异常


if  (cbb1.Text='')and (cbb2.Text<>'') then    //从表头查到指定记录位置
    begin
      //if DBISAMQuery1.Locate('qihao',trim(cbb2.Text),[loCaseInsensitive]) then
      ShowMessage(cbb2.Text);
      if DBISAMQuery1.Locate('qihao',trim(cbb2.Text),[]) then
      begin
        with DBISAMQuery1 do
        begin
          close;
          sql.Clear;
          s1:='select * from record where qihao<='+''''+trim(cbb2.Text)+'''';
          sql.Add(s1);
          open;
        end;

      end
      else
        ShowMessage('截止记录框输入异常,请检查输入!');

    end

delphi 7 组件dbisamquery。一直不太喜欢locate这个函数,没道理可言,尤其是在query组件上。这次偶尔用了一下,就是上面这段。两个ComboBox控件cbb1,cbb2,分别指向查询的起止记录的‘qihao’字段,当其中cbb1为空默认从表头记录开始,而若cbb2为空时,默认查到表尾记录。上面这段就是从表头查到指定记录位置,为了防止ComboBox控件内容被人为修改不是合法的qihao字段值,查询前作了一个检测查询——正常情况下,由于作了预处理,只需点击选择记录的qihao不会出错,但不能够排除手动输入。奇怪的是,编译执行没问题,只是测试第一次执行正常,locate函数执行结果正常,但是后面只要重选了结束记录继续,locate函数执行结果都是false,程序就直接弹出“截止记录框输入异常,请检查输入!”不得其解,请指点。
问题提交后,重新测试又有新发现,就是后面如果cbb2里面的qishu字段值如果选择小于第一次查询记录的qishu值是没问题的,什么鬼?好像是指针在作祟哦,难怪潜意识里就不喜欢这个locate函数,具体是什么问题呢?求赐教!

  • 写回答

1条回答 默认 最新

  • blueforgetmenot 2023-11-01 09:54
    关注

    问题提交后,重新测试又有新发现,就是后面如果cbb2里面的qishu字段值如果选择小于第一次记录的qishu值是没问题的,什么鬼?好像是指针在作祟哦,难怪潜意识里就不喜欢这个locate函数,具体是什么问题呢?求赐教!

    评论

报告相同问题?

问题事件

  • 系统已结题 11月9日
  • 修改了问题 11月1日
  • 修改了问题 11月1日
  • 创建了问题 11月1日

悬赏问题

  • ¥15 所有双上限都是无限的
  • ¥15 LASSO回归分析筛选关键基因,适合多大样本量?
  • ¥88 error: [polling_error] {"code":"ETELEGRAM","message":"ETELEGRAM: 502 Bad Gateway"}错误
  • ¥15 刚毕业,刚通过一家PLC工程师,请问一下待遇还算可以吗?
  • ¥15 公司内网,想基本不写代码挂一些视频,有一个还不错的前端展示,有什么软件或者框架可以用吗?尽量简单
  • ¥15 appium自动化测试
  • ¥30 java怎么解析CanFD的16进制数据
  • ¥15 广义可加模型和光滑曲线拟合的R代码
  • ¥15 关于C#多个文本框输入的问题
  • ¥15 手机接Usb hub再连接电脑下D+D-波形