把上面的代码改以下。
select book
ctextvalue=thisform.pageframe1.page1.text1.value
x=thisform.pageframe1.page1.combo1.value
if x="图书编码"
   set filt to ctextvalue$bm
endifif x='图书名称' 
  set filt to ctextvalue$mc
endif
 
thisform.refresh在form的init事件public ctextvalue
ctextvalue=''

解决方案 »

  1.   

    我要用SQL做模糊查询
    谁会
      

  2.   

    TO:turbotarzan(忍着阿雷) 
     liujianjun_(流星尔) 给出的方案不能实现你的要求吗???
      

  3.   

    可以的很成功
    但是where at(thisform.pageframe1.page1.text.value,bm)<>0为什么不可以
    而这样
    select 1
    use 图书详情
    sele 2
    use 作者详情
    select 图书名,作者名,图书类型,图书单价,出版社,入库时间,库存量;            
     from 图书详情,作者详情;
     into cursor biao;  
     where at(thisform.pageframe1.page2.text1.value,图书名)<>0  
     sele 1
     use
     sele 2
     use
     thisform.grid1.recordsource='biao'
     thisform.grid1.recordsourcetype=1
     *thisform.pageframe1.page2.text1.value=''
    却可以
    这和我写的楼顶的那段有什么区别吗?
      

  4.   

    按错按钮了,还以为可以了
     liujianjun_(流星尔) 的代码运行后,表单上连查询结果表都没有啊
    我用
    select bm as 图书编码;
    from book;
    into cursor biao;
    where  bm like thisform.pageframe1.page1.text.value
    可以查但是要用通配符%在网上下载了一个源代码它的模糊查询
    就是用where at(thisform.pageframe1.page1.text.value,bm)<>0的可是奇怪的是我照搬他的就不行
    我在他的查询表单上把对应查询的文本框删了,再在上面自己添一个,运行,他的也不能模糊查询了难道关键是在文本框?
      

  5.   

    你所说的查询结果表也没有,那是因为你的表格绑定不对。数据已经出来了。
    你把表格跟books绑定就行了。
       你的方法很浪费效率。因为要重新生成数据源。
      

  6.   

    试过了
    要这样
    ctextvalue=allt(thisform.pageframe1.page1.text1.value)
    否则差不出
    查找终于搞定了
    谢谢各位!
    不过这样查出来的数据可以直接改,不太好吧
    怎样可以只看不能改
      

  7.   

    还有
    为什么要在form的init事件里加public ctextvalue ctextvalue=''
      

  8.   

    把grid1的readonly属性设为真。
    加上public是因为。如果一个变量在set filt to会存在生命期的问题。运行中有时会出现找不到该变量的问题。如果直接set filt to bm=allt(thisform.text1.value)就不存在此问题。但如果ctextvalue=allt(thisfomr.text1.value) sele tablename set filt to bm=ctextvalue则就有此问题。
      

  9.   

    是不是就是
    如果在form的init事件里加public ctextvalue ctextvalue=''了
    就可以直接set filt to bm=thisform.text1.value
    而不用set filt to bm=allt(thisform.text1.value)了
    也不用ctextvalue=allt(thiform.text1.value) selt tablename set filt to =ctextvalue了
      

  10.   

    不是这个意思。allt()是肯定要的。为了避免有空格,而造成不匹配。如果不public。
    那么set filt to bm=allt(thisform.text1.value)
    是可以的。
      但如果把文本框中的值先赋给一个变量。然后set filt to bm=该变量时,该变量就存在生命期问题。如果public的话,就用变量替代文本框中的值也没事。