如在text中:项目1+项目2+项目3 > 项目4+项目5,这样一个条件,如何检测其中一个输错误或者我表里没有这个字段。高手赐教。

解决方案 »

  1.   

    思路:以+号和>号分解字符串(项目1+项目2+项目3 > 项目4+项目5)
    分别得到 项目1、项目2、项目3 、项目4、项目5,然后查询表字段,通过对比来判断是否输入正确
      

  2.   

    adox 就可以检测有没有这个field
      

  3.   

    我说详细一点:如我要做一个SELECT * FROM TABLE WHERE &TEXT1.TEXT&,但如果在text1.text中有非法字符或者不全,无法对应表里的字段,我怎样在这之前来排除这样的问题。能不能用代码来解释一下。
      

  4.   

    写SQL之前先对输入数据进行检查撒。
      

  5.   

    生产单号>?并且<?  里面的变量都是直接取控件里的值。用户选择条件查询。
    Sql1 = "delete from 丝印 where " & comMore1.Text & " " & comMore2.Text & " + '" + txtMore1.Text + "'and " & comMore1.Text & " " & comMore3.Text & " + '" + txtMore2.Text + "'"把代码设置“断点”,然后看一下到底哪里出了错。你在断点时面可以看到各变量赋值的情况!
      

  6.   

    你还是把各个条件分别放到不同的文本框里吧,你这样输入一个文本框里无法判断。
    你不是自己给自己找麻烦嘛!╭════════════════════════════╮
    ║                            ║
    ║  免费的学习、交流、源码、工具网站,欢迎大家访问!  ║
    ║  http://www.j2soft.cn/                ║
    ╰════════════════════════════╯
      

  7.   

    那就需要做一个句法分析模块了。首先用 Split 函数将字符串分割,然后逐个分析:
    dim a() as stringdo until instr(text1, space(2)) < 1
        text1 = replace(text1, space(2), space(1))
    loop
    a = split(text1, space(1))for i = 0 to ubound(a)
      '这里写分析代码next分析内容:
      1 是否一个字段名
      2 如果不是,是否一个字符串表达式、数字表达式或布尔值
      3 相邻的几个词是否构成合法的逻辑表达式,即字段名和值之间是否有合法的运算符(需要注意 Between 这样的特殊格式以及 Boolean 型字段本身就可以构成表达式)
      4 表达式之间是否有合法的逻辑运算符
      5 注意逻辑运算符可以是逻辑表达式之间的,也可以是表达式内部的总之,句法分析比较复杂,需要写大量代码。我的建议,如果是一个比较简单的小程序,就不如发送 SQL 语句之后拦截错误。如果是要求高,需要表现完美的程序,那就写句法分析程序吧。当然,还可以查查 Access 等有无可以外部调用的 SQL 分析函数。
      

  8.   

    对于你类似的问题,我的做法是:1 用一个 ComboBox 下拉列表放所有的字段名
    2 用一个 Label 外加一个弹出式 List 供用户选择运算符(当然也可以用 Combo, 仅仅是为了美观)
    3 用一个 ComboBox 和一个 DatePicker 根据 Combo 选择的字段类型隐现,让用户输入或选择查询条件。4 在添加条件按钮按下后,在一个锁定的 TextBox 中放入 "Where"/"And" 加上上面三个控件的内容。可以多次选择,连接成一个多条件的查询。
      

  9.   

    用一个text肯定不好的,应该是用户只能选择不可修改才能保证不错误,
    也能减少代码的编写!
      

  10.   

    这种做法隐患大大的,真是方便了SQL注入的练习者。