|
|
|
สอบถาม วิธีการเพิมข้อมูลจาก Checklistbox ให้มัน insert เป็น Multi Row มีรูปตัวอย่างด้านในครับ |
|
|
|
|
|
|
|
Error นี้เกิดจาก ขนาดของข้อมูลใหญ่กว่า Size ที่จะจัดเก็บครับ เช่นกำหนด Varchar(100) แต่ Insert มากกว่า 101 เป็นต้นไป
|
|
|
|
|
Date :
2014-11-30 16:52:58 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จากตัวอย่างโค้ดนี้
Code (C#)
string IDService = txtServiceID.Text;
string checkedItem = "";
foreach (DataRowView drv in checkedListBox2.CheckedItems)
{
checkedItem += drv[0].ToString() + ",";
}
checkedItem = checkedItem.TrimEnd(',');
string query = "INSERT INTO tblRepartCase(ID_Repair,IDService)VALUES(@checkedItem,@IDService)";
SqlCommand InsertCommand = new SqlCommand(query, DB.conn);
InsertCommand.Connection = DB.conn;
InsertCommand.Parameters.AddWithValue(@"checkedItem", checkedItem);
InsertCommand.Parameters.AddWithValue(@"IDService", IDService);
InsertCommand.ExecuteNonQuery();
ผมทำการ Insrt ได้แล้ว
แต่ผมต้องการให้มัน insert multi row หากมีการ check 2 อย่าง ให้มัน insert 2 ครั้ง
ต้องการให้มันเก็บแบบในรูปนี้อ่ะครับ
|
ประวัติการแก้ไข 2014-11-30 17:39:12
|
|
|
|
Date :
2014-11-30 17:38:37 |
By :
yAZa |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เหมือนมันจะติดจาก SQL อ่าครับ
เพราะมันดันเอา 1 กะ 3 มายุด้วยกัน
ไอ้ผมก็ไม่เก่ง SQL ซะด้วย
แต่ถ้าให้แก้ปํญหาแบบหน้าด้านๆ(เฉพาะหน้า)ก่อนผมก็็คงจะ เอา Insert ไปไว้ใน foreach
รึไม่ก็ทำ SQL ให้ได้ แบบนี้
Code
insert into table1 (First,Last) values ('Fred','Smith'),
('John','Smith'),
('Michael','Smith'),
('Robert','Smith');
(ลอกเค้ามา)
เพราะไม่มีความความรู้เลยว่า
ไอ้เจ้า
Code
InsertCommand.Parameters.AddWithValue กะ string query = "INSERT INTO tblRepartCase(ID_Repair,IDService)VALUES(@checkedItem,@IDService)"
มันเพิ่มได้ทีละเยอะๆป่าว
|
|
|
|
|
Date :
2014-11-30 19:32:39 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
วิธีที่ 1 ทำตามความเห็นที่ 3 คือ จับไปใส่ใน For เลย
วิธีที่สองทำการ Insert แบบ Multirow ตามนี้
คุณต้องเอา query ไปไว้ใน for
Code (C#)
string IDService = txtServiceID.Text;
string checkedItem = "";
string query = "INSERT INTO tblRepartCase(ID_Repair,IDService)VALUES";
int count = 0;
foreach (DataRowView drv in checkedListBox2.CheckedItems)
{
checkedItem = drv[0].ToString():
count += 1;
if (count==1){
query = query + "(@checkedItem,@IDService)";
}else{
query = query + ",(@checkedItem,@IDService)";
}
}
SqlCommand InsertCommand = new SqlCommand(query, DB.conn);
InsertCommand.Connection = DB.conn;
InsertCommand.Parameters.AddWithValue(@"checkedItem", checkedItem);
InsertCommand.Parameters.AddWithValue(@"IDService", IDService);
InsertCommand.ExecuteNonQuery();
จากโค้ดข้างบนมันจะได้คำสั่งมาประมาณนี้
Code (SQL)
INSERT INTO tblRepartCase(ID_Repair,IDService)
VALUES (ซ่อมทั่วไป, 1000),
(กำจัดไวรัส, 1000)
ปล.ผมไม่แน่ใจว่า sql server ถ้าเป็นข้อความเราต้องครอบด้วย ' หรือ ฟันเดี่ยวรึป่าว ถ้าครอบก็ใส่ได้เลยครับ
โค้ดอาจบักครับผมด้นสด C# ไม่เก่งแต่ตามนี้แหละครับจะได้ข้อความ Insert แบบมัลติ
|
ประวัติการแก้ไข 2014-12-02 08:45:18
|
|
|
|
Date :
2014-12-02 08:40:52 |
By :
zarooman |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|