ช่วยทีครับ Error : Must declare the scalar variable | select ค่ามา ออก พอ Insert แล้ว Error ครับ
int sumdata = dataGridView7.Rows.Count;
int usedata = sumdata - 1;
for (int i = 0; i <= 0; i++)
{
int coni=0,insconi = 0;
insconi = coni+i;
sql = "INSERT INTO GIVE_CUS(tire_id, size, patt_name, com_name, user_id, cus_id, date_tirefuse, date_forward, date_gettire, date_givecus, price)VALUES(@in_tid, @in_size, @in_patt, @in_com, @in_user, @in_cus, @tf_date , @f_date, @g_date, @dt, @price)";
sqlcmd = new SqlCommand(sql, connection);
sqlcmd.Parameters.Clear();
sqlcmd.CommandText = sql;
string tire_id_in = dataGridView7.Rows[insconi].Cells["tire_id"].Value.ToString();
sqlcmd.Parameters.AddWithValue("in_tid", tire_id_in);
string size_tire = dataGridView7.Rows[insconi].Cells["size"].Value.ToString();
sqlcmd.Parameters.AddWithValue("in_size", size_tire);
string patt = dataGridView7.Rows[insconi].Cells["patt_name"].Value.ToString();
sqlcmd.Parameters.AddWithValue("in_patt", patt);
string com = dataGridView7.Rows[insconi].Cells["com_name"].Value.ToString();
sqlcmd.Parameters.AddWithValue("in_com", com);
//string cusid = dataGridView7.Rows[i].Cells["cus_id"].Value.ToString();
sqlcmd.Parameters.AddWithValue("in_user", "US002");
string cusid = dataGridView7.Rows[insconi].Cells["cus_id"].Value.ToString();
sqlcmd.Parameters.AddWithValue("in_cus", cusid);
textBox18.Text = tire_id_in;
string sqlse = "SELECT TIRE_FUSE.get_date, FORWARD_TIRE.forward_date, GET_TIRE.get_date FROM TIRE_FUSE LEFT OUTER JOIN FORWARD_TIRE ON TIRE_FUSE.tire_id = FORWARD_TIRE.tire_id LEFT OUTER JOIN GET_TIRE ON TIRE_FUSE.tire_id = GET_TIRE.tire_id WHERE TIRE_FUSE.tire_id = 'F00000'";
SqlCommand newsqlcmd = new SqlCommand(sqlse, connection);
SqlDataAdapter newda = new SqlDataAdapter(newsqlcmd);
newda.SelectCommand = newsqlcmd;
DataSet newds = new DataSet();
newda.Fill(newds, "selec_date");
bindingSrc = new BindingSource();
bindingSrc.DataSource = newds.Tables["selec_date"];
// เช็คค่า ที่ select มา
textBox12.Text = newds.Tables["selec_date"].Rows[0].ItemArray[0].ToString();
textBox13.Text = newds.Tables["selec_date"].Rows[0].ItemArray[1].ToString();
textBox18.Text = newds.Tables["selec_date"].Rows[0].ItemArray[2].ToString();
string tfuse_date = newds.Tables["selec_date"].Rows[0].ItemArray[0].ToString();
string f_date = newds.Tables["selec_date"].Rows[0].ItemArray[1].ToString();
string g_date = newds.Tables["selec_date"].Rows[0].ItemArray[2].ToString();
newsqlcmd.Parameters.AddWithValue("tf_date", tfuse_date);
newsqlcmd.Parameters.AddWithValue("f_date", f_date);
newsqlcmd.Parameters.AddWithValue("g_date", g_date);
DateTime dt = new DateTime(DateTime.Now.Ticks);
newsqlcmd.Parameters.AddWithValue("dt", dt);
string cprice = dataGridView7.Rows[insconi].Cells["price"].Value.ToString();
newsqlcmd.Parameters.AddWithValue("price", cprice);
// string sqlse = "SELECT TIREFUSE.get_date FORWARD_TIRE.forward_date GET_TIRE.get_date LEFT OUTER JOIN TIRE_FUSE ON TIRE_FUSE.tire_id = FORWARD_TIRE.tire_id AND TIRE_FUSE.tire_id = GET_TIRE.tire_id WHERE TIRE_FUSE = '"+tire_id_in+"'";
//sqlcmd.Parameters.AddWithValue("size",LEFT OUTER JOIN PRICE_TIREFUSE ON
int chkins = sqlcmd.ExecuteNonQuery();
if (chkins == -1)
{
MessageBox.Show("เกิดข้อผิดพลาด");
}
else
{
MessageBox.Show("ทำการเพิ่มเรียบร้อยแล้ว");
}
}
แสดง Error ตรง ExecuteNonQuery ว่า
Must declare the scalar variable "@tf_date".
อ่ะครับ ผมต้องแก้ยังไง ลองให้ เช็คค่าที่ select ข้อมูล date ออกมา ค่าก็แสดงนะครับ
พอ Insert ข้อมูล กลับ Error
ข้อมูล tf_date เป็น ชนิด Date ไม่ใช่ DataTime นะครับ แต่ว่าพอดึงออกมาแสดง กลับแสดงเป็น 13/4/2012 0:00:00 มันแสดงเวลามาด้วยอ่ะครับ ไม่รุ้ว่าผิดตรงไหน Tag : .NET, Ms SQL Server 2008, C#, VS 2008 (.NET 3.x)
Date :
2012-04-14 00:14:54
By :
sticked
View :
1654
Reply :
5
ตอนคุณ insert ข้อมูลลง Database นั้น Pattern ของ Date ควรจะเป็น yyyy-MM-dd หรือ 2012-04-13 เป็นต้นครับ
Date :
2012-04-14 02:09:17
By :
smeproject
ไม่น่าเกี่ยวกับ Pattern นะครับ เพราะผมปรับแล้ว สังเกตุได้จากตารางที่ผม select ข้อมูล date มา ซึ่งข้อมูลนั้นเคยถูก Insert มาก่อนอ่ะครับ จึงทำให้ทราบได้ว่า Pattern วดป ตรงตามที่ผมเซตไว้แล้ว
ติดตรงที่ select ค่า date ที่เคยบันทึกไว้ แล้วนำมาใส่ตัวแปรตรง parameter จากนั้นส่งไปยัง insert เพื่อรวมเวลาแต่ละรายการ
กลับ error ขึ้นอะครับ จนปัญญา มึนตึ๊บ
string tfuse_date = newds.Tables["selec_date"].Rows[0].ItemArray[0].ToString();
string f_date = newds.Tables["selec_date"].Rows[0].ItemArray[1].ToString();
string g_date = newds.Tables["selec_date"].Rows[0].ItemArray[2].ToString();
newsqlcmd.Parameters.AddWithValue("tf_date", tfuse_date);
newsqlcmd.Parameters.AddWithValue("f_date", f_date);
newsqlcmd.Parameters.AddWithValue("g_date", g_date);
Date :
2012-04-14 02:45:43
By :
sticked
สำหรับ Column ที่เป็นชนิด Date นั้นตอนที่จะ insert ข้อมูลนั้นจำเป็นต้องใส่ค่าเป็นแบบ ปปปป(ค.ศ.)-ดด-วว
ยังไงลองดูก่อนนะครับ เพราะตอน Select ระบบจะดู Format ของวันที่จาก Window ครับ
Date :
2012-04-14 10:29:37
By :
smeproject
ข้อมูล วดป นั้นผมใช้
DateTime dt = new DateTime(DateTime.Now.Ticks);
เป็นงี้เลยอ่ะครับ แล้วใน sqlserver ก้รับรับเป็น วว/ด/ปปปป
แต่ ติดตรงตอน Insert ข้อมูลวันที่ ที่ผม
Select มา ผมจึงเปลี่ยนให้เป็น varchar แทน ไม่รุ้ว่าใช้เหมาะสมหรือไม่ :ซึ่งถ้าเป็น datetime error ครับ
newsqlcmd.Parameters.AddWithValue("tf_date", tfuse_date);
newsqlcmd.Parameters.AddWithValue("f_date", f_date);
newsqlcmd.Parameters.AddWithValue("g_date", g_date);
error หมดถ้าใน sqlserver ตั้งเป็น datetime
ทั้งๆที่ แสดงค่าเวลา
12/4/2012 0:00:00
เหมือนกันกลับ Insert เข้าไปแล้ว error
DateTime dt = new DateTime(DateTime.Now.Ticks);
newsqlcmd.Parameters.AddWithValue("dt", dt); // ตรงนี้เป็นเวลาที่จะบันทึกเข้าไปซึ่งเป็นเวลาใหม่ ไม่ได้ select มา กลับ ไม่ error
ค่าเวลาก็เหมือนกันคือ
12/4/2012 0:00:00
Date :
2012-04-14 18:16:45
By :
sticked
คุณต้องทำการ Convert จาก Date ให้ไปเป็น String ก่อนนะครับ ตัวอย่างเช่น
DateTime dt = new DateTime(DateTime.Now.Ticks);
String tfuse_date = dt.toString("yyyy-MM-dd");
newsqlcmd.Parameters.AddWithValue("tf_date", tfuse_date);
ยังไงก็ลองดูก่อนนะครับ เพราะ ถ้าเป็นเรื่องของ Date/DateTime นั้นตัว .NET จะอ้างอิง
Class Globalization ซึ่งจะเป็นตัวจัดการ Format ครับ
Date :
2012-04-15 11:04:58
By :
smeproject
Load balance : Server 01