2017-10-20 72 views
0

我有一个问题,这是我的代码:应用程序不运行它,直接坠毁后,我开始它

DataTable DT1 = new DataTable(); 

public static DataTable DATASETRETURN(string queryString) 
{ 
    DataSet DS = new DataSet(); 

    SqlDataAdapter adapter = new SqlDataAdapter 
      { 
       SelectCommand = new SqlCommand(queryString, CLSERVICES.CON) 
      }; 
    adapter.Fill(DS, "TABLE"); 

    return DS.Tables["TABLE"]; 
} 

private void FE_C_HISTORIQUE_Load(object sender, EventArgs e) 
{ 
    E_HISTORIQUE_LV_HISTORIQUE_04.Items.Clear(); 
    string req = "select H.NHistorique, P.Intitulle, H.QuantiteVendu, P.PrixVente,"+ 
       "(P.PrixVente * H.QuantiteVendu) as PQ, H.TypeAction, H.DateAction " + 
       "from HISTORIQUE as H, PRODUIT as P" + 
       "where (P.NProduit = H.NProduit)"+ 
       "order by H.NHistorique desc"; 
    DT1 = DATASETRETURN(req); 

    for (int i = 0; i < DT1.Rows.Count; i++) 
    { 
     ListViewItem LV = new ListViewItem(DT2.Rows[i][0].ToString()); 
     LV.SubItems.Add(DT1.Rows[i][1].ToString()); 
     LV.SubItems.Add(DT1.Rows[i][2].ToString()); 
     LV.SubItems.Add(DT1.Rows[i][3].ToString()); 
     LV.SubItems.Add(DT1.Rows[i][4].ToString()); 
     LV.SubItems.Add(DT1.Rows[i][5].ToString()); 
     LV.SubItems.Add(DT1.Rows[i][6].ToString()); 

     E_HISTORIQUE_LV_HISTORIQUE_04.Items.Add(LV); 
    } 
} 

我运行应用程序后,我得到了方法DATASETRETURN错误OIN行

adapter.Fill(DS, "TABLE"); 

的错误是:

System.Data.SqlClient.SqlException “\” P \”是不是一个公认的表提示选项。如果它的目的是作为一个参数表值函数或CHANGETABLE功能,确保您的数据库兼容模式设置为90。”

是否有什么方法解决?造成

+1

你错过了一些sql字符串末尾的空格。例如,“...... PRODUIT as Pwhere(P.NProduit ...”) – astidham2003

+0

在调试器的'DT1 = DATASETRETURN'处设置一个断点,并查看'req'包含的内容 –

+0

[踢坏坏习惯: style JOINs](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx) - 旧式* comma-在ANSI - ** 92 ** SQL标准(** 25年**之前)中,*表格的分隔列表* style被替换为* proper * ANSI'JOIN'语法,并且不鼓励使用 –

回答

1

问题“_order H.NProduit)”

指定时多查询之间的“P_where”之间缺少空间,我更喜欢:

string req = @" 
    select H.NHistorique,P.Intitulle,H.QuantiteVendu,P.PrixVente, 
    (P.PrixVente*H.QuantiteVendu)as PQ,H.TypeAction,H.DateAction 
    from HISTORIQUE as H, PRODUIT as P 
    where(P.NProduit = H.NProduit) 
    order by H.NHistorique desc 
"; 

这种方式,您减少丢失NE的机会你的查询中有w行。

+0

好的,谢谢你现在我知道一个新问题的解决方案非常感谢。 –

相关问题