查询的OleDbException .... [英] OleDbException With Query....

查看:70
本文介绍了查询的OleDbException ....的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我运行此查询时,它会发出错误不支持连接表达式。



我连接的C#代码是:



  private   void  button1_Click ( object  sender,EventArgs e)
{
OleDbConnection con = new OleDbConnection( Provider = Microsoft.jet.oledb.4.0; data source = + Application.StartupPath + @ \ DataInfo1.mdb; Persist Security Info = true; User Id ='Admin'; password =;);
con.Open();
OleDbDataAdapter da = new OleDbDataAdapter( SELECT ct.custID,c.custName,c.custAdd,ct.custTranDate,ct.custTranType,ct.custPaidAmt,ct.custDueAmt,c.custArea FROM custTransaction ct left JOIN custDetails c ON ct.custID = c.custID and(ct。 custTranDate#2/28/13#AND#3/1/13#和ct.custID ='CUST-000002'),con);
DataSet ds = new DataSet();
da.Fill(ds);
CrystalReport1 cr = new CrystalReport1();
cr.SetDataSource(ds);
this .crystalReportViewer1.ReportSource = new CrystalReport1();
this .crystalReportViewer1.Show();
}





我在后端数据库中使用MSAccess ..

如何修复它???



感谢高级..

解决方案

ON ct.custID = c.custID和(ct.custTranDate BETWEEN

我看到之间没有空格支架



尝试:

 OleDbDataAdapter da =  new  OleDbDataAdapter(  SELECT ct.custID,c.custName,c.custAdd ,ct.custTranDate,ct.custTranType,ct.custPaidAmt,ct.custDueAmt,c.custArea FROM custTransaction ct left JOIN custDetails c ON ct.custID = c.custID and(ct.custTranDate BETWEEN#2/28/13#AND# 3 1/1 / 13#和ct.custID ='CUST-000002'),con); 



此外,使用参数化查询来传递值。这样,您可以轻松地按照定义的方式传递date和id的值,而无需创建任何语法ax错误。



此外,您应该将搜索条件设置为 WHERE 子句,例如:

 OleDbDataAdapter da =  new  OleDbDataAdapter(  SELECT ct.custID,c.custName,c.custAdd,ct.custTranDate,ct.custTranType,ct.custPaidAmt,ct.custDueAmt,c.custArea FROM custTransaction ct left JOIN custDetails c ON ct.custID = c.custID WHERE ct.custID ='CUST-000002'ct.custTranDate BETWEEN#2/28/13#AND#3/1/13#),con); 


When i run this query it''s give an error "Join expression not supported."

My C# code with connection is :

private void button1_Click(object sender, EventArgs e)
        {
            OleDbConnection con = new OleDbConnection("Provider=Microsoft.jet.oledb.4.0; data source=" + Application.StartupPath + @"\DataInfo1.mdb;Persist Security Info=true;User Id='Admin'; password=;");
            con.Open();
            OleDbDataAdapter da = new OleDbDataAdapter("SELECT ct.custID, c.custName, c.custAdd,ct.custTranDate,ct.custTranType,ct.custPaidAmt,ct.custDueAmt, c.custArea FROM custTransaction ct left JOIN custDetails c ON ct.custID = c.custID and(ct.custTranDate BETWEEN #2/28/13# AND #3/1/13# and ct.custID='CUST-000002')", con);            
           DataSet ds = new DataSet();
           da.Fill(ds);
           CrystalReport1 cr = new CrystalReport1();
           cr.SetDataSource(ds);
            this.crystalReportViewer1.ReportSource = new CrystalReport1();
            this.crystalReportViewer1.Show();
        }



I''m using MSAccess in back end database..
how to fix it???

thanks in Advanced..

解决方案

ON ct.custID = c.custID and(ct.custTranDate BETWEEN
I see there is no space between and and bracket.

Try:

OleDbDataAdapter da = new OleDbDataAdapter("SELECT ct.custID, c.custName, c.custAdd,ct.custTranDate,ct.custTranType,ct.custPaidAmt,ct.custDueAmt, c.custArea FROM custTransaction ct left JOIN custDetails c ON ct.custID = c.custID and (ct.custTranDate BETWEEN #2/28/13# AND #3/1/13# and ct.custID='CUST-000002')", con);   


Further, use parameterized query to pass values. That way you can pass the values of date and id as per defined easily without creating any syntax error.

Further, you should put the search criteria as WHERE clause, like:

OleDbDataAdapter da = new OleDbDataAdapter("SELECT ct.custID, c.custName, c.custAdd,ct.custTranDate,ct.custTranType,ct.custPaidAmt,ct.custDueAmt, c.custArea FROM custTransaction ct left JOIN custDetails c ON ct.custID = c.custID WHERE ct.custID='CUST-000002' AND ct.custTranDate BETWEEN #2/28/13# AND #3/1/13#)", con);    


这篇关于查询的OleDbException ....的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆