2013-02-23 44 views
2

在我的窗口應用程序中,我有需要傳遞給另一個表單的orderNumber。該訂單號由我將在下面提供的代碼生成。我試圖只將一個相同的訂單號傳遞給兩個地點,但不幸的是,兩個地點都傳遞了兩個不同的訂單號。我怎樣才能使只有一個訂單號碼被傳遞到這兩個位置。生成該訂單編號將方法的相同值傳遞給多個表單

代碼:

public string orderNumber() 
     { 
      string ord = "ORD" + get_next_id() + DateTime.Now.Year; 
      return ord; 

     } 

public int get_next_id() 
     { 
      OleDbConnection objConnection = null; 
      OleDbCommand objCmd = null; 
      String sql; 
      int res; 

      // Create and open the connection object 
      objConnection = new OleDbConnection(connString); 

      objConnection.Open(); 
      sql = "SELECT IIF(MAX(Customer.NumGenerate) IS NULL,100,MAX(Customer.NumGenerate)) as v_max FROM Customer;"; 
      objCmd = new OleDbCommand(sql, objConnection); 
      res = (int)objCmd.ExecuteScalar(); 
      ++res; 
      objConnection.Close(); 
      return res; 
     } 

在第一種形式下列插入方法使用順序數:

private void SaveAllListItems() 
     { 
      string listItems = string.Empty; 
      foreach (var listBoxItem in listBox1.Items) 
      { 

       listItems += listBoxItem.ToString(); 

       if (listBox1.Items.IndexOf(listBoxItem) < listBox1.Items.Count - 1) 
       { 
        listItems += ", "; 
       } 
      } 

      InsertUser(maskedTextBox1.Text, comboBox1.Text, maskedTextBox2.Text, maskedTextBox3.Text, maskedTextBox4.Text, maskedTextBox5.Text, 
         maskedTextBox6.Text, maskedTextBox7.Text, maskedTextBox8.Text, maskedTextBox9.Text, listItems, DateTime.Now, maskedTextBox10.Text, orderNumber(), get_next_id()); 

; 
     } 

在第二形式我想使用相同的順序正在用來插入用戶的號碼。現在我有以下代碼不起作用,因爲form1具有不同的訂單號,而且表格2有不同。

private void FindOrder() 
     { 


      Form1 m = new Form1(); 
      string number = m.orderNumber(); 
      // string number = "ORD1012013"; 

      string InvSql = "SELECT (Customer.[Title] + SPACE(2) + Customer.[Customer's Name]) as CustomerName, Customer.[Customer's Ebayname], Customer.[Email Address], Customer.[Phone Number], (Customer.[Address 1] + SPACE(2) +Customer.[Address 2] + SPACE(2) + Customer.[City] + SPACE(2) + Customer.[Post Code]+ SPACE(2) + Customer.[Country]) as Address, Customer.[Item Purchased], Customer.[Purchased Date], Customer.[Total Price], Customer.[OrderNumber] FROM Customer WHERE Customer.[OrderNumber]= '" + number + "'"; 

      OleDbConnection cnn = new OleDbConnection(connString); 
      OleDbCommand cmdOrder = new OleDbCommand(InvSql, cnn); 
      cnn.Open(); 

      OleDbDataReader rdrOrder = cmdOrder.ExecuteReader(); 


      rdrOrder.Read(); 
      custName.Text = rdrOrder["CustomerName"].ToString(); 
      ebayName.Text = rdrOrder["Customer's Ebayname"].ToString(); 
      email.Text = rdrOrder["Email Address"].ToString(); 
      phone.Text = rdrOrder["Phone Number"].ToString(); 
      address.Text = rdrOrder["Address"].ToString(); 
      item.Text = rdrOrder["Item Purchased"].ToString(); 
      date.Text = Convert.ToString(Convert.ToDateTime(rdrOrder["Purchased Date"])); 
      price.Text = rdrOrder["Total Price"].ToString(); 
      order.Text = rdrOrder["OrderNumber"].ToString(); 


      rdrOrder.Close(); 
      cnn.Close(); 
     } 

如何將同一訂單號傳遞到兩個位置?

+0

爲什麼不上你的第二個使用的公共屬性在form2構造函數上形成並設置該值。 – 2013-02-23 15:06:45

+0

你可以給我一個例子,你想說什麼> – 2013-02-23 15:11:26

回答

0

數據可以以不同方式在窗體之間傳遞。

這是一個很好的tutorial如何做到這一點。構造函數和屬性方法更容易實現。

您好像還可以節省在Form1類

將訂單上Form1類聲明一個變量將訂單

string OrderId; 

修改您的exisiting方法

public string orderNumber() 
{ 
    OrderId = "ORD" + OrderId + DateTime.Now.Year;  
} 

然後按照構造函數方法將值傳遞給PrintForm

再次聲明一個變量爲單編號的PrintForm類

string OrderId; 

更改PrintForm構造這個

public PrintForm(string value) 
{ 
    InitializeComponent(); 
    OrderId=value; 
} 

在Form1上的按鈕單擊事件

private void button1_Click(object sender, System.EventArgs e) 
{ 
    PrintForm frm=new PrintForm(OrderId); 
    PrintForm.Show(); 
} 
+0

如果我用構造方法傳遞值,它仍然會有兩個訂單號,因爲orderNumber方法將被調用,這將產生不同的訂單號。我需要將它保存到某個地方,然後才能通過這兩個位置,以便兩個位置都具有相同的號碼。 – 2013-02-23 15:19:18

+0

我沒有得到you.i認爲你有問題傳遞values.can你reprhase你的問題陳述。是第二種形式再次調用的訂單號方法? – 2013-02-23 15:22:40

+0

@Codelgnoto對不起,我認爲我很清楚這個問題。無論如何,在我的Windows窗體中有兩種形式:Form1和PrintForm。在Form1用戶中輸入信息並單擊添加輸入按鈕,該按鈕將輸入的信息與公共字符串OrderNumber()方法生成的訂單號保存在數據庫中。現在我想將相同的訂單號碼值傳遞給PrintForm。如果我從PrintForm調用Form1.OrderNumber,它將具有不同的訂單號。 – 2013-02-23 15:26:18

0

static創建一個容器class物業在同一namespace

class clsDummy 
{ 
    internal static string ptyValue { get; set; } 
} 

你在哪裏得到的訂單ID,你可以指定這個特性是:在任何你想訪問剛過

public string orderNumber() 
{ 
    string ord = "ORD" + get_next_id() + DateTime.Now.Year; 
    clsDummy.ptyValue =ord ; 
    return ord; 
} 

檢查裏面的值:clsDummy.ptyValue