ใครพอมีรูปแบบโค๊ดเพิ่มข้อมูล ทีี่ละ 2 ตารางในหน้าฟอร์มเดียวบ้างค่ะ vb2005
ก็แค่เขียน คำสั่งขึ้นมา 2 ชุดน่ะครับ
Date :
2012-08-30 16:27:48
By :
mr.win
ปัญหาเดี่ยวกันเลยค้าบ การ insert 2 ตารางพร้อมกัน แต่ของผมเป็น vb 2010 รบกวนด้วยค้าบ
Date :
2012-08-30 20:02:56
By :
billspy66
แล้วต้องใชคำสั่ง if หรือป่าวค่ะ
พอดีตารางแรกมันเป็นตารางการขาย คือ มันจะเก็บเลขที่ใบเสร็จ วันที่ขาย อารัยประมาณนี่้
ส่วนตารางที่สองมันจะเก็บรายละเอียดการขาย ไม่มีคีย์หลัก แบบว่ามีสินค้าอารัยบ้าง ในใเสร็จเลขที่นั้น
Date :
2012-08-31 08:20:16
By :
อ่อนหัด
Code (VB.NET)
Dim objConn As System.Data.OleDb.OleDbConnection
Dim objCmd As System.Data.OleDb.OleDbCommand
Dim sqladd As String
Dim Trans As OleDbTransaction
objConn = New System.Data.OleDb.OleDbConnection(strcn)
objConn.Open()
' Start Transaction '
Trans = objConn.BeginTransaction(IsolationLevel.ReadCommitted)
Try
'Query 1 '
sqladd = "insert into pay_tax(code,payment,id_tax,assessment,pay,status)"
sqladd &= " values ('" & TextBox1.Text & "',"
sqladd &= "'" & DateTimePicker2.Value & "',"
sqladd &= "'" & TextBox2.Text & "',"
sqladd &= "'" & DateTimePicker1.Value & "',"
sqladd &= "'" & Label11.Text & "',"
If RadioButton1.Checked = True Then
sqladd &= "'0')"
End If
If RadioButton2.Checked = True Then
sqladd &= "'1')"
End If
objCmd = New System.Data.OleDb.OleDbCommand()
With objCmd
.Connection = objConn
.Transaction = Trans
.CommandType = CommandType.Text
.CommandText = sqladd
End With
objCmd.ExecuteNonQuery()
'Query 2 '
sqladd = "insert into detail(code,id_la,m_enhances,id_shop)"
sqladd &= " values ('" & TextBox1.Text & "',"
sqladd &= "'" & TextBox4.Text & "',"
sqladd &= "'" & Label5.Text & "',"
sqladd &= "'" & TextBox3.Text & "')"
objCmd = New System.Data.OleDb.OleDbCommand()
With objCmd
.Connection = objConn
.Transaction = Trans
.CommandType = CommandType.Text
.CommandText = sqladd
End With
objCmd.ExecuteNonQuery()
Trans.Commit() '*** Commit Transaction ***'
Me.TextBox1.Text = "Record is commit"
Catch ex As Exception
Trans.Rollback() '*** RollBack Transaction ***'
Me.TextBox1.Text = "Record is rollback (" & ex.Message & ")"
End Try
objCmd = Nothing
objConn.Close()
objConn = Nothing
ทำไมมันไม่ได้อ่ะค่ะ พอกดรันมันก็รันไม่ได้เลย ไม่ทราบว่าผิดพลาดตรงไหนหรือป่าวค่ะ
ช่วยหน่อยค่ะ เพิ่มข้อมูลที่ละ 2 ตารางนี้มัน ไม่เข้าใจหลักการมันจริง ต้องแก้ไขตรงไหนบ้างคะ
Date :
2012-08-31 14:36:17
By :
อ่อนหัด
ค่าสุดท้ายของ sqladd Query 1 อ่ะครับ
ตรงค่าสุดท้ายที่เราเปรียบเทียบน่ะ ลองทำก่อนหน้านั้นลองดูครับ เพราะถ้าดูแล้วเหมือนมันทำให้รูปแบบคำสั่ง sql มันผิดครับ
ประมาณนี้มั้ง
Code (VB.NET)
dim rbTest as interger
If RadioButton1.Checked = True Then
rbTest=0
elseif RadioButton2.Checked = True Then
rbTest=1
End If
พอได้ค่ามาก็เอามาใส่ใน sqladd เลยครับ ประมาณนี้
Code (VB.NET)
sqladd = "insert into pay_tax(code,payment,id_tax,assessment,pay,status)"
sqladd &= " values ('" & TextBox1.Text & "',"
sqladd &= "'" & DateTimePicker2.Value & "',"
sqladd &= "'" & TextBox2.Text & "',"
sqladd &= "'" & DateTimePicker1.Value & "',"
sqladd &= "'" & Label11.Text & "',rbTest)
-------------
การทำรายการทีละหลายตารางของผมนะ คือ ผมจะมีคำสั่งอยู่ที่ stored procedure ครับ แล้วก็โยนค่าเข้าไป ใน stored procedure จะ ทำอะไรกับตารางไหนบ้าง ก็เขียนคำสั่งต่อ ๆ กันเอาไว้ แล้วค่อยทำการ commit ครั้งเดียว ถ้ามันทำอะไรไม่ได้สั่งอย่างในที่เราเขียนต่อ ๆ กันไว้ มันก็ rollback (ไม่รู้ผมอธิบายแล้วงงรึเปล่านะครับ)
Date :
2012-08-31 16:25:13
By :
Nebula
มันไม่ได้ค่ะ error ว่า Record is rollback (No value given for one or more required parameters.)
Date :
2012-08-31 18:05:25
By :
อ่อนหัด
datetimepicker ใช้นามสกุล .value นี่ถูกแล้วใช้ไหมค่ะ
ส่วน ค่าที่ส่งไปเด๋วเซ็คอีกทีค่ะ
Date :
2012-09-03 12:31:30
By :
อ่อนหัด
เหมือนว่ามันจะมีปัญหาใน 'Query 2 '
เมื่อกี้ลองรันแล้วกดบันทึกมัน error แบบนี้ค่ะ
แต่ id_la นี้มันก็อยู่ในฐานข้อมูลนะค่ะ ทำมันมัยกลับไม่รู้จักซะงั้น
Record is rollback (The INSERT INTO statement contains the following unknown field name: 'id_la'. Make sure you have typed the name correctly, and try the operation again.)
Date :
2012-09-03 12:40:41
By :
อ่อนหัด
datetimepicker ไม่แน่ใจครับอาจจะไม่เคยใช้
ผมใช้แบบนี้ครับ ของ ajaxtoolkit สะดวกดี
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"></asp:ToolkitScriptManager>
<asp:TextBox ID="tbDate" runat="server"></asp:TextBox>
<asp:CalendarExtender ID="calen_ex" runat="server" Enabled="true" TargetControlID="tbDate" Format="MM/dd/yyyy"></asp:CalendarExtender>
ส่งค่าก็ประมาณนี้ครับ
Dim time1ck As String
time1ck = CNVDateToSQL(tbDate.Text & " " & starttime.Text)
Date :
2012-09-03 12:48:45
By :
Nebula
The INSERT INTO statement contains the following unknown field name: 'id_la'. Make sure you have typed the name correctly, and try the operation again
แล้วบรรทัดนี้ ต้องแก้อย่างไรค่ะ ทำมัยมันถึงไม่รู้จัก
Date :
2012-09-03 13:19:01
By :
อ่อนหัด
ถ้า id_la ใน DB ไม่ได้เป็น PK ที่เป็น auto number แล้ว
ผมเดาว่านะจะเป็น Int รึเปล่าครับ แต่ที่เราโยนค่าเข้าไปคือ text4.text มันเป็น string ครับ
คงต้อง convert type ก่อนครับ
แค่นี้น่าจะได้ครับ
Cint(text4.text)
Date :
2012-09-03 13:36:08
By :
Nebula
รู้สึกจะเก็บ id_la เป็น text นะค่ะ
Date :
2012-09-03 14:44:53
By :
อ่อนหัด
ลองเช็คพวกคำสงวนดูครับ
ลองแบบนี้ดู
id_la เปลี่ยนเป็น >> [id_la]
Date :
2012-09-04 10:53:09
By :
Nebula
ลองเปลี่ยนดูแล้วบันทึกได้แล้วค่ะ แต่ว่าตาราง detail ถ้าเกิดมีรายการหลายรายการมันไม่ยอมบันทึก หรือว่าเราเอาไปผูกไว้กับ textbox หรือป่าวค่ะ เวลาบันทึกมันเลยบันทึกเฉพาะข้อมูลที่อยู่ใน textbox เท่านั้น แล้วถ้าเราจะเปลี่ยนเป็นเฉพาะตาราง detail บันทึกข้อมูลที่อยู่ใน datagridview มันจะได้ไหมค่ะ แล้วต้องเปลี่ยนอะไรตรงไหนบ้างค่ัะ
Date :
2012-09-04 11:06:44
By :
อ่อนหัด
ตอบความคิดเห็นที่ : 18 เขียนโดย : อ่อนหัด เมื่อวันที่ 2012-09-04 11:16:20
รายละเอียดของการตอบ ::
วนลูปครับ
ใส่ for หรือ foreach ครอบ
37.'Query 2 '
38.sqladd = "insert into detail(code,id_la,m_enhances,id_shop)"
39.sqladd &= " values ('" & TextBox1.Text & "',"
40.sqladd &= "'" & TextBox4.Text & "',"
41.sqladd &= "'" & Label5.Text & "',"
42.sqladd &= "'" & TextBox3.Text & "')"
43.
44.
45.objCmd = New System.Data.OleDb.OleDbCommand()
46.With objCmd
47..Connection = objConn
48..Transaction = Trans
49..CommandType = CommandType.Text
50..CommandText = sqladd
51.End With
52.objCmd.ExecuteNonQuery()
ไว้
Date :
2012-09-04 11:45:45
By :
ห้ามตอบเกินวันละ 2 กระทู้
Load balance : Server 00