私のWindowsフォームアプリケーションには、ユーザーが名前アドレスなどの入力を行うフォームが1つあります...何とか..
ユーザーがエントリの追加を押すと、すべての入力エントリがデータベースに追加され、同時に注文番号が別のフォームに渡され、そこで特定の注文のデータを取得してそれぞれに入力するための SQL クエリがあります。テキストボックス。
しかし、フォーム 1 からフォーム 2 に注文番号を渡し、その注文番号をデータベースからデータを取得するメソッドに渡すと、エントリが既にデータベースにあるにもかかわらず、データベースにそのような行がないことがわかります。フォーム 2 で注文番号を手動でハードコードすると、機能します。
では、データベースにデータを入力するとすぐに、データベースからデータを取得するにはどうすればよいでしょうか。
基本的に、フォーム 1 はユーザーに注文番号を与え、フォーム 2 はその注文番号を使用してデータをフェッチします。発射の順番は最初にフォーム1、次にフォーム2です。
取得するコード
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();
エントリを追加するコード
private void button1_Click(object sender, EventArgs e)
{
foreach (Control c in this.Controls)
{
if (c is MaskedTextBox)
{
MaskedTextBox textBox = c as MaskedTextBox;
if (textBox.Text == string.Empty)
{
string result = MyMessageBox.ShowBox("Please Enter All Fields", "Warning");
}
else
{
SaveAllListItems();
this.Close();
PrintOrder m = new PrintOrder();
m.Show();
}
}
}
SaveAllListItems の場合
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());
;
}
挿入ユーザー向け
public string InsertUser(string custName, string title, string cust, string emailAddress, string phoneNumber, string address1, string address2, string city, string postCode, string country, string itemPurchased, DateTime datePurchased, string price,string orderNumber, int id)
{
// Create connection objecte
//string datePurchased = DateTime.Now.ToString("dd/MM/yyyy");
int ix = 0;
string rTurn = "";
OleDbConnection oleConn = new OleDbConnection(connString);
try
{
oleConn.Open();
string sql = "INSERT INTO [Customer]([Customer's Ebayname], [Title], [Customer's Name], [Email Address] ,[Phone Number], [Address 1], [Address 2], [City], [Post Code], [Country] , [Item Purchased], [Purchased Date], [Total Price], [OrderNumber], [NumGenerate])" +
"VALUES ( @custName, @title, @cust, @emailAddress, @phoneNumber, @address1, @address2, @city, @postCode, @country , @itemPurchased, @datePurchased, @price, @orderNumber, @id)";
OleDbCommand oleComm = new OleDbCommand(sql, oleConn);
oleComm.Parameters.Add("@custName", OleDbType.Char).Value = custName;
oleComm.Parameters.Add("@title", OleDbType.Char).Value = title;
oleComm.Parameters.Add("@cust", OleDbType.Char).Value = cust;
oleComm.Parameters.Add("@emailAddress", OleDbType.Char).Value = emailAddress;
oleComm.Parameters.Add("@phoneNumber", OleDbType.Char).Value = phoneNumber;
oleComm.Parameters.Add("@address1", OleDbType.Char).Value = address1;
oleComm.Parameters.Add("@address2", OleDbType.Char).Value = address2;
oleComm.Parameters.Add("@city", OleDbType.Char).Value = city;
oleComm.Parameters.Add("@postCode", OleDbType.Char).Value = postCode;
oleComm.Parameters.Add("@country", OleDbType.Char).Value = country;
oleComm.Parameters.Add("@itemPurchased", OleDbType.Char).Value = itemPurchased;
oleComm.Parameters.Add("@datePurhcased", OleDbType.Date).Value = datePurchased;
oleComm.Parameters.Add("@price", OleDbType.Char).Value = price;
oleComm.Parameters.Add("@orderNumber", OleDbType.Char).Value = orderNumber;
oleComm.Parameters.Add("@id", OleDbType.Integer).Value = id;
ix = oleComm.ExecuteNonQuery();
if (ix > 0)
rTurn = "User Added";
else
rTurn = "Insert Failed";
}
catch (Exception ex)
{
}
finally
{
oleConn.Close();
}
return rTurn;
}
OrderNumber を生成するには
public string orderNumber()
{
string ord = "ORD" + get_next_id() + DateTime.Now.Year;
return ord;
}