2015-01-17 80 views
0

我有一张POMain po_no表和一张运输发票表,然后当我搜索po_no时,我将添加一张发票。我想要做的事情是,如果po_no已经有发票在搜索按钮的po_no不会出现组合框子条款

public AddForm() 
      { 
       InitializeComponent(); 
    string ID = cb_po_search.SelectedValue.ToString(); 
       string strPRSconn = ConfigurationManager.ConnectionStrings["POSdb"].ConnectionString; 
       SqlConnection sc = new SqlConnection(strPRSconn); 
       sc.Open(); 
       string strQry = "SELECT POMain.po_no FROM POMain LEFT JOIN Shipping ON POMain.po_no = Shipping.po_no WHERE Shipping.invoice IS NULL AND POMain.po_no = '" + ID + "'"; 
       SqlCommand scmd = new SqlCommand(strQry, sc); 
       SqlDataReader dr = scmd.ExecuteReader(); 

       DataTable dt = new DataTable(); 
       dt.Columns.Add("po_no", typeof(string)); 
       dt.Load(dr); 

       cb_po_search.ValueMember = "po_no"; 
       cb_po_search.DisplayMember = "po_no"; 
       cb_po_search.DataSource = dt; 

       sc.Close(); 

      } 

      } 
+0

对不起,先生你现在可以理解吗? –

+0

ahm是的,我只是想知道我在哪里代码条款,如果发票有一个值po_no不会出现在组合框 –

回答

0

您需要使用LEFT OUTER,而不是在这里加入一个INNER JOIN的

string strQry ="SELECT POMain.po_no FROM POMain INNER JOIN Shipping ON POMain.po_no = Shipping.po_no WHERE Shipping.invoice IS NULL";

而你需要另外一个条件在末尾添加到WHERE子句:

AND POMain.po_no = " + ID

有说,使用存储过程而不是试图形成内联查询会更好。

+0

字符串strQry =“选择POMain.po_no从POMain左加入运费POMain.po_no =运输.po_no WHERE Shipping.invoice IS NULL“; –

+0

string strQry =“SELECT POMain.po_no FROM POMain LEFT JOIN Shipping ON POMain.po_no = Shipping.po_no WHERE Shipping.invoice IS NULL AND POMain.po_no =”+ ID; – sudheeshix

+0

在关键字'ON'附近的语法不正确我得到这个错误 –