坐等大神(基于c++ builder6.0 设计的一个查询功能,access数据库)编译没错误但是功能实现不了

hehehehehe158 2014-01-09 12:40:18
AnsiString an1="select * from worker where ";
if(Edit1->Text!="")
an1+=" num='"+Form5->Edit1->Text+"' and";
if(Edit2->Text!="")
an1+=" wname='"+Form5->Edit2->Text+"' and";
AnsiString xb="";
if(Form5->RadioButton1->Checked==1)
xb="男";
if(Form5->RadioButton2->Checked==1)
xb="女";
if(xb!="")
an1+=" sex='"+ xb+"' and";
if(Edit3->Text!="")
an1+=" id='"+Edit3->Text+"' and";
if(ComboBox1->Text!="请选择")
an1+=" department='"+ComboBox1->Text+"'";
an1+=" 'department!="" '";
...全文
245 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xjq2003 2014-01-22
  • 打赏
  • 举报
回复
引用 4 楼 Richardw 的回复:
    AnsiString strSQL = "SELECT * FROM worker WHERE ";

    if (!Edit1->Text.IsEmpty())
        strSQL += " num='"+ Edit1->Text + "' AND";

    if (!Edit2->Text.IsEmpty())
        strSQL += " wname='"+ Edit2->Text + "' AND";

    AnsiString strXB;
    if (RadioButton1->Checked)
        strXB = "男";
    if ( RadioButton2->Checked)
        strXB = "女";
    if (!strXB.IsEmpty())
        strSQL += " sex='" + strXB + "' AND";

    if (!Edit3->Text.IsEmpty())
        strSQL += " id='" + Edit3->Text + "' AND";
        
    if (ComboBox1->Text == "请选择")
        strSQL += " department IS NOT NULL";
    else
        strSQL += " department='" + ComboBox1->Text + "'";
重写了一点,看是不是你要的结果
这个就对了, 还要看一下你数据库里字段到底是什么类型,整形和字符类型的一点要却别用=和=‘’
星際訪客 2014-01-16
  • 打赏
  • 举报
回复
建議 LZ 將數據庫結構給關聯式正規化......
第三方控件 TDBGridEh 有一個好用的 STFilter 項目可以做多面向的搜尋功能 :
星際訪客 2014-01-12
  • 打赏
  • 举报
回复
4樓是正解!
星際訪客 2014-01-11
  • 打赏
  • 举报
回复
編譯結果與 SQL Code 是兩碼子事...為了找出問題...可先在窗口暫時加入一個 TMemo 以檢視 SQL Code 來判別是否有誤......
bigfog 2014-01-11
  • 打赏
  • 举报
回复
sql 都是 and 连接,只要一个条件不对,就没结果 建议sql里先删除一个一些条件,然后查询
Richardw 2014-01-10
  • 打赏
  • 举报
回复
    AnsiString strSQL = "SELECT * FROM worker WHERE ";

    if (!Edit1->Text.IsEmpty())
        strSQL += " num='"+ Edit1->Text + "' AND";

    if (!Edit2->Text.IsEmpty())
        strSQL += " wname='"+ Edit2->Text + "' AND";

    AnsiString strXB;
    if (RadioButton1->Checked)
        strXB = "男";
    if ( RadioButton2->Checked)
        strXB = "女";
    if (!strXB.IsEmpty())
        strSQL += " sex='" + strXB + "' AND";

    if (!Edit3->Text.IsEmpty())
        strSQL += " id='" + Edit3->Text + "' AND";
        
    if (ComboBox1->Text == "请选择")
        strSQL += " department IS NOT NULL";
    else
        strSQL += " department='" + ComboBox1->Text + "'";
重写了一点,看是不是你要的结果
xunq123 2014-01-10
  • 打赏
  • 举报
回复
跟踪一下你的SQL语句,可能是这里出现了问题. if(ComboBox1->Text!="请选择") an1+=" department='"+ComboBox1->Text+"'"; an1+=" 'department!="" '"; 这一段就有问题,先别字符串语法.单SQL语法 在Combobox1->Text != "请选择"时 你想SQL语句是什么.
hehehehehe158 2014-01-09
  • 打赏
  • 举报
回复
ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add(an1); ADOQuery1->Open() ; if(ADOQuery1->RecordCount==0) {ShowMessage("对不起,没有你要查的员工"); return; } 剩下的部分代码
宝龙哥 2014-01-09
  • 打赏
  • 举报
回复
1)an1+=" 'department!="" '";不明确是干什么用的 bcb在编译时并不提示SQL语句的错误,不管if(ComboBox1->Text!="请选择")是否成立SQL语句都是有问题的 似乎可以理解为 if(ComboBox1->Text!="请选择") an1+=" department='"+ComboBox1->Text+"'"; else an1+=" department=' '"; 2)字符串的连接怀疑有BUG,尽量使用an1 = an1+" 'department!="" '";的形式

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧