 |
|
VB สอบถามปัญหาครับ ผมต้องการให้มีการวนลูป เพื่อเพิ่ม หรือ อัพเดทไปที่ database แต่มีเงื่อนไขคือ ถ้ามีแล้ว จะแก้ไขค่าเข้าไป แต่ถ้าไม่มีจะเพิ่มเข้าไปใหม่ทั้งหมด ติดปัญหาตรง การวนลูป |
|
 |
|
|
 |
 |
|
คือผมได้ใส่เงื่อไขในการ เพิ่มข้อมูลโดย ผมต้องการให้ เมื่อกดปุ่มเพิ่ม จะทำการหาเงื่อนไขว่าชื่อนี้มีอยู่แล้วหรือไม่ ถ้าไม่มีให้ insert ใหม่ แต่ถ้ามีอยู่แล้วให้ update จำนวนเข้าไปในคลังสินค้า และวนลูปไปยังแถวต่อไปใน listview

โค๊ดทั้งหมดของปุ่ม
Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
sql = "insert into savegoods_production(save_pro_id,pro_id,goods_name,goods_unit,goods_amount,goods_price,emp_name,emp_tell,date_save) values "
Dim i As Integer = Me.ListView1.Items.Count - 1
For j As Integer = 0 To i
Dim po_id As String = Me.ListView1.Items(j).SubItems(1).Text
Dim goods_name As String = Me.ListView1.Items(j).SubItems(2).Text
Dim goods_unit As String = Me.ListView1.Items(j).SubItems(3).Text
Dim goods_amount As Double = Me.ListView1.Items(j).SubItems(4).Text
Dim goods_price As Double = Me.ListView1.Items(j).SubItems(5).Text
Dim em_name As String = Me.em_name.Text
Dim em_tell As String = Me.em_tell.Text
Dim save_date As Date = Me.lbl_date_now.Text
If j = i Then
sql &= String.Format("('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}')", Me.lbl_save_id.Text, po_id, goods_name, goods_unit, goods_amount, goods_price, em_name, em_tell, save_date)
Else
sql &= String.Format("('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}') ,", Me.lbl_save_id.Text, po_id, goods_name, goods_unit, goods_amount, goods_price, em_name, em_tell, save_date)
End If
Next
cmd = New SqlClient.SqlCommand(sql, cn)
If cmd.ExecuteNonQuery = 0 Then
MsgBox("ไม่สามารถบันทึกได้")
Else
MsgBox("บันทึกสำเร็จ")
Dim p As Integer = Me.ListView1.Items.Count - 1
For j As Integer = 0 To p
Dim goods_name As String = Me.ListView1.Items(j).SubItems(2).Text
Dim goods_unit As String = Me.ListView1.Items(j).SubItems(3).Text
Dim goods_amount As Double = Me.ListView1.Items(j).SubItems(4).Text
Dim goods_price As Double = Me.ListView1.Items(j).SubItems(5).Text
'If j = p Then
Dim sql2 As String = "select goods_name from stock_goods where goods_name ='" & goods_name & "'"
Dim cmd As New SqlCommand(sql2, cn)
Dim dr As SqlDataReader
dr = cmd.ExecuteReader
If dr.Read >= 0 Then
sql = "insert into stock_goods(goods_name,goods_unit,goods_amount,goods_price) values "
If j = p Then
sql &= String.Format("('{0}','{1}','{2}','{3}')", goods_name, goods_unit, goods_amount, goods_price)
Else
sql &= String.Format("('{0}','{1}','{2}','{3}') ,", goods_name, goods_unit, goods_amount, goods_price)
End If
Else
sql = "update stock_goods set goods_amount = goods_amount+ " & goods_amount & " where goods_name='" & goods_name & "'"
End If
'End If
Next
cmd = New SqlClient.SqlCommand(sql, cn)
If cmd.ExecuteNonQuery = 0 Then
MsgBox("ไม่สามารถบันทึกได้")
Else
MsgBox("บันทึกสำเร็จ")
End If
End If
End Sub
ในส่วนที่มีปัญหาคือส่วนของ
โคดที่มีปัญหาในการเพิ่มและอัพเดท
Dim p As Integer = Me.ListView1.Items.Count - 1
For j As Integer = 0 To p
Dim goods_name As String = Me.ListView1.Items(j).SubItems(2).Text
Dim goods_unit As String = Me.ListView1.Items(j).SubItems(3).Text
Dim goods_amount As Double = Me.ListView1.Items(j).SubItems(4).Text
Dim goods_price As Double = Me.ListView1.Items(j).SubItems(5).Text
'If j = p Then
Dim sql2 As String = "select goods_name from stock_goods where goods_name ='" & goods_name & "'"
Dim cmd As New SqlCommand(sql2, cn)
Dim dr As SqlDataReader
dr = cmd.ExecuteReader
If dr.Read >= 0 Then
sql = "insert into stock_goods(goods_name,goods_unit,goods_amount,goods_price) values "
If j = p Then
sql &= String.Format("('{0}','{1}','{2}','{3}')", goods_name, goods_unit, goods_amount, goods_price)
Else
sql &= String.Format("('{0}','{1}','{2}','{3}') ,", goods_name, goods_unit, goods_amount, goods_price)
End If
Else
sql = "update stock_goods set goods_amount = goods_amount+ " & goods_amount & " where goods_name='" & goods_name & "'"
End If
'End If
Next
cmd = New SqlClient.SqlCommand(sql, cn)
If cmd.ExecuteNonQuery = 0 Then
MsgBox("ไม่สามารถบันทึกได้")
Else
MsgBox("บันทึกสำเร็จ")
End If
Tag : .NET, Ms SQL Server 2008, Web (ASP.NET), VB.NET
|
|
 |
 |
 |
 |
Date :
2016-05-21 20:55:22 |
By :
moonnui |
View :
1544 |
Reply :
8 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คำถามคือ ?
|
 |
 |
 |
 |
Date :
2016-05-21 22:47:34 |
By :
อายุน้อยแต่หน้าไม่ใช่ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ดูจากปัญหาแล้ว น่าจะมีการตรวจสอบชื่อสินค้าใน Textbox ที่ป้อนก่อนดีกว่านะครับ ง่ายกว่าเยอะ
ส่วนที่ User Interface ดูที่ปุ่ม เพิ่ม กับ บันทึก นั้น น่าจะมีปุ่มเดียว อย่างใดอย่างหนึ่งนะครับ เพิ่ม กับ บันทึก ความหมายก็คือ อันเดียวกันไม่ใช่หรือครับ ลองดูจากตัวอย่างนี้นะครับ
Code (VB.NET)
Sub Update_Data()
Dim sql2 As String = "select goods_name from stock_goods where goods_name ='" & textbox.text & "'"
if Sql2 = 0 then
เพิ่มเข้าไปใหม่
else
บวกจำนวนเจ้าไป
end if
End Sub
|
 |
 |
 |
 |
Date :
2016-05-22 06:23:58 |
By :
ละอ่อน |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ปัญหาคือ มันไม่วนลูปครับ มันทำแค่แถวสุดท้ายของลิสวิว
ส่วนทำไมถึงมีปุ่มเพิ่มกับปุ่ม บันทึกคือ ปุ่มเพิ่มจะทำงานโดย เพิ่มค่าเข้าไปในลิสวิว
ส่วนปุ่มบันทึกคือเพิ่มค่าจากลิสวิว ซึ่งมีหลายแถวเข้าไปใน database ครับ
|
ประวัติการแก้ไข 2016-05-22 14:11:36
 |
 |
 |
 |
Date :
2016-05-22 14:08:12 |
By :
moonnui |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
If j = p Then
sql &= String.Format("('{0}','{1}','{2}','{3}')", goods_name, goods_unit, goods_amount, goods_price)
Else
sql &= String.Format("('{0}','{1}','{2}','{3}') ,", goods_name, goods_unit, goods_amount, goods_price)
End If
debug โค้ดได้ไหมครับ
แล้วตรวจสอบค่าตัวแปร sql หลังจากที่ต่อสตริงเสร็จแล้วได้ค่าอะไร
ได้มาแล้วไปรันใน sql management studio
รับรองเจอคำตอบครับ
|
 |
 |
 |
 |
Date :
2016-05-22 14:34:19 |
By :
popular flower |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Debug ก็คือการรันทดสอบโปรแกรมทีละบรรทัดครับ ด้านบนของโปรแกรมที่เราเขียนจะมี Tools ต่าง ๆ ลองตรวจดูว่าคำว่า "Debug"
อยู่ตรงไหน
ส่วนที่มีการวนลูปตรวจสอบข้อมูลนั้น ผมว่า ไม่จำเป็นต้องตรวจสอบโดยการวนลูปเลยครับ ใช้ Sql. Statement ตรวจสอบดีกว่าครับ
แต่ถ้าจะใช้การวนลูป ก็ลองรันโปรแกรมทำการ Debug ดูว่า โปรแกรมมันวนครบหรือไม่ครับ
ลองดูนะครับ ขอให้โปรแกรมของคุณประสพผลสำเร็จครับ
|
 |
 |
 |
 |
Date :
2016-05-22 20:03:56 |
By :
ละอ่อน |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ปัญหาตือตัวแปร sql ถูกเปลี่ยนค่าใหม่เสมอในลูป
โดยคำสั่งคิวรี่ ไปอยู่นอกลูป ทำให้รันคำสั่งสุดท่ายเสมอ
เอา คำสั่งคิวรี่มาไว้ในลูปครับ
|
 |
 |
 |
 |
Date :
2016-05-23 04:44:39 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|