|
|
|
สอบถาม บันทึกลงฐานข้อมูล 1 Field จาก Table ลงอีก Table หลาย ๆ Field |
|
|
|
|
|
|
|
- ผมดึงข้อมููลจาก Table Ink : โดยมี Field ดังนี้ InkID, InkName , InkPrice มาแสดงใน Combobox ตามภาพได้แล้ว เมื่อเลือกชื่อหมึก ก็จะแสดงราคาหมึก
คำถาม
ผมต้องการเก็บค่า InkID กับ Ink Price ยังไงครับโดยลง Table อีก Table ชื่อ DetialPrinter โดยเก็บทั้งหมด 5 ค่า
ตัวอย่าง Code ที่ผมเขียนบันทึกลงฐานข้อมูล Table อื่น
Code (VB.NET)
tr = Conn.BeginTransaction()
Try
sb = New StringBuilder()
sb.Append("INSERT INTO TotalPrint(DateSavePrint,EmployeeID,Fullname,DepID,SerialNo,QtyBW,QtyColor,PBW,PColor,Total)")
sb.Append(" VALUES (@DateSavePrint,@EmployeeID,@Fullname,@DepID,@SerialNo,@QtyBW,@QtyColor,@PBW,@PColor,@Total)")
Dim sqlAdd As String
sqlAdd = sb.ToString()
MsgBox(sqlAdd)
With com
.CommandText = sqlAdd
.CommandType = CommandType.Text
.Connection = Conn
.Transaction = tr
.Parameters.Clear()
.Parameters.Add("@DateSavePrint", SqlDbType.DateTime).Value = dtpSavePrint.Value.ToShortDateString
.Parameters.Add("@EmployeeID", SqlDbType.NVarChar).Value = txtEmployeeID.Text.Trim()
.Parameters.Add("@Fullname", SqlDbType.NVarChar).Value = txtFullName.Text.Trim()
.Parameters.Add("@DepID", SqlDbType.NVarChar).Value = txtDepartment.Text.Trim()
.Parameters.Add("@SerialNo", SqlDbType.NVarChar).Value = CStr(cboNamePrint.SelectedValue)
.Parameters.Add("@QtyBW", SqlDbType.Int).Value = Int(txtQtyBW.Text.Trim())
.Parameters.Add("@QtyColor", SqlDbType.Int).Value = Int(txtQtyColor.Text.Trim())
.Parameters.Add("@PBW", SqlDbType.Float).Value = CSng(txtPriceBW.Text.Trim()).ToString.Trim(CChar("#,###.00"))
.Parameters.Add("@PColor", SqlDbType.Float).Value = CSng(txtPriceColor.Text.Trim()).ToString.Trim(CChar("#,###.00"))
.Parameters.Add("@Total", SqlDbType.Float).Value = CSng(txtNetPrice.Text.Trim()).ToString.Trim(CChar("#,###.00"))
.ExecuteNonQuery()
End With
tr.Commit()
MessageBox.Show("เพิ่มข้อมูลรายละเอียดการพิมพ์ของพนักงานใหม่ลงฐานข้อมูล เรียบร้อยแล้ว !!!", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Information)
ClearAllData()
ShowData()
FormatDgvprintList()
Catch ex As Exception
MessageBox.Show("ตรวจสอบข้อมูลที่ป้อน !!!", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
tr.Rollback()
End Try
End If
Tag : .NET, Ms SQL Server 2008, VBScript
|
ประวัติการแก้ไข 2013-08-13 10:28:15 2013-08-13 11:43:18
|
|
|
|
|
Date :
2013-08-13 10:27:09 |
By :
ih4cK |
View :
1267 |
Reply :
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบความคิดเห็นที่ : 1 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2013-08-13 16:25:39
รายละเอียดของการตอบ ::
ต้องเก็บทั้งหมด 5 ครั้งหรอครับ แบบประมาณนี้ SerialNo,Name,...,Ink1 > SerialNo,Name,...,Ink2 > SerialNo,Name,...,Ink3 > SerialNo,Name,...,Ink4 , SerialNo,Name,...,Ink5 หรอครับโดยใช้ PK เป็น InkID ใช่ป่ะครับ? ในความหมายของคุณ
มีวิธีอื่นมั้ยครับ ถ้าเป็นแบบด้านบนที่ว่า
|
|
|
|
|
Date :
2013-08-13 18:38:45 |
By :
ih4cK |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตามของนายก็ได้
แต่ถ้าเราออกแบบเราจะไม่ทำแบบนั้น
เราจะมีแค่
InkID - PK
Ink Price
ColorID - FK
PrinterID - FK
ReplaceDate
ซึ่งการเปลี่ยนแต่ละครั้งสามารถเปลี่ยนทีละตลับได้ แยกกันข้อมูลใครข้อมูลมัน
ส่วนสถานะตลับหมึกที่ใช้ ณ ปัจจุบันหาจาก ColorID กับ ReplaceDate ล่าสุด
ข้อดีอีกข้อคือ ถ้าใช้ตลับหมึกไม่ถึง 5 ตลับ เราก็ไม่ต้องเก็บถึง 5 column
ใช้ 1 ตลับ ก็เก็บแค่ record เดียว แล้วยังสามารถค้นประวัติการเปลี่ยนหมึกย้อนหลังได้
|
|
|
|
|
Date :
2013-08-14 08:20:09 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมแค่เก็บรายละเอียดอ่ะครับ ว่าเครื่องนี้ใช้หมึกอะไรมั้ง ใครดูแล .... , ไม่เกี่ยวกับการเปลี่ยนหรืออะไร มันจะมีอีกส่วนนึง
แต่ทีนี้ ถ้าผมเก็บหมึก 4 อย่าง ใน 1 เครื่องผมต้องเก็บทั้งหมด 4 Record ใช่ป่ะครับโดย 4 Record จะประกอบไปด้วยข้อมูลทั้งหมดเลย
คำถาม ถ้าผมจะทำการ Search ข้อมูล มีวิธีไหนครับ ที่แสดงค่าทั้งหมด 4 Record ภายในครั้งเดียว เหมือนตอนกรอกข้อมูล
|
|
|
|
|
Date :
2013-08-14 09:38:44 |
By :
ih4cK |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
นี่แหละน้า มันถึงมีข้อแตกต่างระหว่างโปรกับมือใหม่
เราขี้เกียจอธิบายแล้วล่ะ บ้ายบาย
|
|
|
|
|
Date :
2013-08-14 11:12:11 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|