 |
|
มีปัญหาใหม่มาถามค่ะ เกี่ยวกับ datagrid มันลบแถวไม่ได้ค่ะ (vb.net) |
|
 |
|
|
 |
 |
|
มันผิดเงื่อนไขน่ะครับ ใส่แบบนี้ครับ
Code (ASP)
If (MsgBox("aaaaa", MsgBoxStyle.OkCancel)=MsgBoxResult.Cancel) Then
MsgBox("cancel")
Else
MsgBox("ok")
เอา ตรง Dim มาใส่นี้แทนน่ะครับ
End If
|
 |
 |
 |
 |
Date :
2011-03-19 16:09:14 |
By :
nutnarakja |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองดูแล้ว มันไม่ได้อ่าค่ะ ขอบคุณนะคะ คุณ nut_dev
|
 |
 |
 |
 |
Date :
2011-03-19 16:36:48 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คุณเขียน Query ผิด น่ะครับ ( Delect * from )
Delect From Empay where ก็พอครับ ไม่ต้อง ( * )
|
 |
 |
 |
 |
Date :
2011-03-19 16:43:46 |
By :
jakkarpong |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองแล้วค่ะ ไม่ได้อยู่ดี นิ่งเหมือนเดิมเลยT_T
|
 |
 |
 |
 |
Date :
2011-03-21 09:48:28 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
Private Sub cmd_Delete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_Delete.Click
Dim SqlDelete As String
Dim ComDelete As New OleDbCommand
If (lblID_Doc.Text = "") Then
Return
End If
If MessageBox.Show("ต้องการลบข้อมูล หรือไม่", "แจ้งให้ทราบ", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
SqlDelete = "DELETE * FROM Doctor"
SqlDelete = "WHERE Id_doc = lbl_id.Text"
ComDelete = New OleDbCommand(SqlDelete, Conn)
With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConn
.Open()
End With
SqlDelete = "DELETE * FROM Doctor WHERE Id_doc = lblID_Doc.Text"
ComDelete = New OleDbCommand(SqlDelete, Conn)
ComDelete.Parameters.AddWithValue("lblID_Doc.Text", lblID_Doc.Text)
ComDelete.ExecuteNonQuery()
End If
MessageBox.Show("ลบข้อมูลทันตแพทย์ เรียบร้อยแล้ว", "แจ้งให้ทราบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
Return
End Sub
ลองดัดแปลงดูนะครับ ผมว่ามันน่าจะได้นะ รวมด้วยช่วยกัน
|
ประวัติการแก้ไข 2011-03-21 12:26:53
 |
 |
 |
 |
Date :
2011-03-21 12:25:41 |
By :
angelrings0 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้าโค้ดที่ให้มานี้ จะสามารถลบได้ค่ะ แต่ว่า จุดประสงค์ก็คือ ต้องการลบใน datagrid ซึ่งเราคิดว่ามันใส่คำสั่งผิด แต่ไม่รู้ว่าผิดตรงไหน อันนี้เป็นผลล่าสุดค่ะ

มันบอกว่าผิด ช่วยดูให้หน่อยนะคะ ว่าผิดตรงไหนค่ะ ตอนนี้ ติดอยู่ แค่ 2 อย่างนี้จริงๆ มันแก้ไม่ได้จริงๆนะ พยายามค้นหาข้อมูลหลายๆที่ ก็แล้ว โปรแกรมมันก็เลยไม่เสร็จสักที
ใครที่สามารถลบแถวใน datagrid ได้ ขอตัวอย่างโค้ดหน่อยนะคะT_T อยากให้มันเสร็จซะที ปวดหัวมาก วันที่ 8 แล้ว
ส่วนเรื่อง combobox ก็ทำไม่ได้เหมือนกัน ถ้าไม่ได้จริงๆ ก็ต้องไปจ้างคนเขียนโปรแกรม มาเขียนตรงนี้ต่อให้ ไม่รู้เขาจะคิดเท่าไหร่ เพราะมันนิดเดียวเอง แต่รู้สึกเสียดายยังไงไม่รู้ คิดว่าเราต้องผิดพลาดที่โค้ดอะไรสักอย่างน่ะค่ะ แล้วถ้ามีคนทำได้ แล้วมาเปลี่ยนโค้ดเราแค่นิดเดียว คงเจ็บใจน่าดูเลยT_T
ขอบคุณ คุณangelrings0 มากๆนะคะ ที่มาร่วมด้วยช่วยกัน
|
 |
 |
 |
 |
Date :
2011-03-21 15:12:23 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แป๊ะ Code ด้วยครับ แป๊ะรูปผมขี้เกียจพิมพ์ตาม
|
 |
 |
 |
 |
Date :
2011-03-21 16:20:10 |
By :
kaimuk |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
โค้ดจ้า
Private Sub Delbtt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Delbtt.Click
con.Open()
'If MsgBox("ต้องการลบแถวที่เลือกใช่หรือไม่", MsgBoxStyle.OkCancel, MsgBoxResult.Cancel) Then
' Return
'End If
'Dim ID As String = DataGridView1.SelectedRows.Item(0).Cells(0).Value
'Dim ID As String = Me.DataGridView1.CurrentRow.Index
Dim sql As String = "DELETE * FROM EmpPay WHERE IDpayday = @IDpay"
Dim cmd As New OleDbCommand(sql, con)
cmd.Parameters.AddWithValue("IDpay", DataGridView1.SelectedRows)
cmd.ExecuteNonQuery()
ShowData()
Delbtt.Enabled = False
con.Close()
End Sub
ขอบคุณนะคะ คุณKaimuk พอดีเพิ่งมาเช็คกระทู้ค่ะ ขอโทษด้วยค่ะ
|
 |
 |
 |
 |
Date :
2011-03-21 17:13:42 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ที่ให้ไปสามารถใช้ได้เลย ผมลองมาแล้ว ไม่เชื่อตามแต่นะครับ
มันก้อลบใน ตารางแหละ แค่ให้ รหัสที่ต้องการลบ ให้มันแสดงรหัสเองไม่งั้นไม่รู้จะลบอะไรนะ
ถ้าไม่อยากให้คนอื่นเห็นก้อซ่อนซะ ก้อไม่เห็น lbl ที่โชว์รหัสละ แต่ถึงจะลบ
ยังงั้ยก้อต้องกดปุ่ม DELECT อยู่ดี ไม่เอาไปลองก้อตามใจนะครับ ผมลองมาแล้วมันได้ไม่มีปัญหา
งง ????


แบบนี้ได้นะคับ อย่า ยึดติดกับกรอบที่เราเขียนโปรแกรมครับ มองกว้าง ๆ มีหลากหลายรูปแบบ ครับ
|
ประวัติการแก้ไข 2011-03-21 17:56:33 2011-03-21 17:58:29 2011-03-21 18:00:14
 |
 |
 |
 |
Date :
2011-03-21 17:41:18 |
By :
angelrings0 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
Private Sub Delbtt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DelBtt.Click
If DataGridView1.SelectedRows.Count > 0 AndAlso MsgBox("ต้องการลบแถวที่เลือกใช่หรือไม่", MsgBoxStyle.OkCancel) = MsgBoxResult.Ok Then
Try
If con.State = ConnectionState.Closed Then
con.Open()
End If
Dim sql As String = "DELETE * FROM EmpPay WHERE IDpayday = @IDpay"
Dim cmd As New OleDbCommand(sql, con)
cmd.Parameters.AddWithValue("IDpay", DataGridView1.SelectedRows(0).Cells("IdEmp").Value.ToString)
cmd.ExecuteNonQuery()
ShowData()
MsgBox("OMG !! Impossible It Work !!!")
Catch ex As Exception
Dim errMessage As String = "เกิดข้อผิดพลาดเนื่องจาก"
errMessage &= vbCrLf & ex.Message
errMessage &= vbCrLf & ex.StackTrace
MsgBox(errMessage, MsgBoxStyle.Critical)
Finally
con.Close()
DelBtt.Enabled = False '<= มันจะ Enable เป็น true อีกทีตอนไหนอะ ??
End Try
End If
End Sub
|
 |
 |
 |
 |
Date :
2011-03-21 19:33:02 |
By :
Programmer Of Persia |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณค่ะ คุณ Programmer Of Persia ลองแล้วมันขึ้น error แบบนี้ค่ะ

งง
|
 |
 |
 |
 |
Date :
2011-03-22 13:24:21 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอดู connection string หน่อยครับ connect ผ่าน network รึเปล่า ??
งั้นเอานี่ไปดูเล่นก่อนละกัน
http://office.microsoft.com/en-us/access-help/i-get-the-error-message-could-not-delete-from-the-specified-tables-HA010096316.aspx
|
 |
 |
 |
 |
Date :
2011-03-22 14:40:56 |
By :
Programmer Of Persia |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
น่าจะต้องใส่ @ ด้วยนะครับ
cmd.Parameters.AddWithValue("@IDpay", DataGridView1.SelectedRows)
ลองดู http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.addwithvalue.aspx
|
 |
 |
 |
 |
Date :
2011-03-22 16:21:42 |
By :
nipons |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขออภัยทุกท่าน
delete * from ต้องแก้เป็น delete from
cmd.Parameters.AddWithValue("IDpay", ต้องแก้เป็น cmd.Parameters.AddWithValue("@IDpay",
ผมรีบก็อบมาวางเองไม่ได้ดูตามาตาเรือ T T
เมื๊อกี๊อ่านเฉลยของท่านหางอึ่งมา EmpPay มันไม่ไช่ table ยังไงก็ delete ไม่ได้อยู่แล้ว 
|
 |
 |
 |
 |
Date :
2011-03-22 18:27:24 |
By :
Programmer Of Persia |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองเรียบร้อยแล้วค่ะ
ตามที่คุณ Nibbāna กับ คุณ Programmer Of Persia บอกมาค่ะ แล้ว ก็คุณ หางอึ้ง ด้วย มันยังไม่ได้ผลเหมือนเดิม
ตอนนี้ก็เลยคิดว่าเป็นที่ Table มันผิดมาตั้งแต่แรกหรือเปล่า
ขอบคุณ คุณ Nibbāna กับ คุณ Programmer Of Persia มากๆเลยค่ะ
|
 |
 |
 |
 |
Date :
2011-03-23 09:46:57 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แก้ตัวอีกรอบ อันนี้ผมลองเอาโค้ดของคุณหางอึ่ง มาโมไหม่ 
Code (VB.NET)
Private Sub Delbtt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DelBtt.Click
If DataGridView1.SelectedRows.Count > 0 AndAlso MsgBox("ต้องการลบแถวที่เลือกใช่หรือไม่", MsgBoxStyle.OkCancel) = MsgBoxResult.Ok Then
Try
If con.State = ConnectionState.Closed Then
con.Open()
End If
Dim sql As String = "DELETE FROM Payrollday WHERE IDpayday = @IDpayday"
Dim cmd As New OleDbCommand(sql, con)
Dim idPayDay As String '<-- ถ้า IDpayday เป็นตัวเลขก็แก้เป็น integer
Dim totalRowEffect As Integer = 0
For Each dgr As DataGridViewRow In DataGridView1.SelectedRows
idPayDay = dgr.Cells("IDPayday").Value.ToString
' ถ้า .Cells("IDPayday") ไม่ได้ เปลี่ยนเป็น .Cells(0) ถึง .cells(1000) ต้องโดนซัก column แหละ ^^
cmd.Parameters.AddWithValue("@IDpayday", idPayDay)
Dim rowEffect As Integer = cmd.ExecuteNonQuery()
If rowEffect > 0 Then
totalRowEffect += rowEffect
Else
MsgBox(String.Format("ในตาราง Payrollday ไม่มี IDpayday = {0}", idPayDay), MsgBoxStyle.Exclamation)
End If
Next
If totalRowEffect > 0 Then
showData()
MsgBox(String.Format("คุณทำการลบทั้งหมด {0} rows", totalRowEffect), MsgBoxStyle.Information)
End If
Catch ex As Exception
Dim errMessage As String = "เกิดข้อผิดพลาดเนื่องจาก"
errMessage &= vbCrLf & ex.Message
errMessage &= vbCrLf & ex.StackTrace
MsgBox(errMessage, MsgBoxStyle.Critical)
Finally
con.Close()
DelBtt.Enabled = False
End Try
End If
End Sub
|
ประวัติการแก้ไข 2011-03-23 12:54:16
 |
 |
 |
 |
Date :
2011-03-23 12:31:16 |
By :
Programmer Of Persia |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอนแรกๆนึกว่าจะได้ ไชโยแล้ว อิอิ มันค้างไปนิดนึง นึกว่ามันกำลังลบ
ที่ไหนได้มันขึ้นแบบนี้

ใส่โค้ดแบบที่ คุณ Programmer Of Persia ให้มาเลย (เพราะว่า copy ไปวาง อิอิ)

ไม่ได้เศร้าT_T
วันนี้ยังแก้ไม่ได้ทั้ง 2 error เลย
ขอบคุณ คุณ Programmer Of Persia มากค่ะ
|
 |
 |
 |
 |
Date :
2011-03-23 14:28:12 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พอลองเปลี่ยนจาก string เป็น integer จะได้แบบนี้ค่ะ

แล้วพอลองเปลี่ยนจาก Cells("IDPayday") เป็น Cells(10) จะได้แบบนี้ค่ะ ที่เปลี่ยนเป็น 10 เพราะ IDPaydat มันอยู่ collumn ที่ 10 ค่ะ

แต่ก็คิดว่ามันดีขึ้นนะคะ เพราะอย่างน้อยมันก็ยังแจ้งเตื่อนอะไรบ้าง ดีกว่ามันนิ่งไป
จะได้มีความหวัง^^
|
 |
 |
 |
 |
Date :
2011-03-23 14:37:20 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
โทดทีครับ ผมสะเพร่าอีกแล้ว T__T
ลืมใส่ con.close() ก่อน showdata()
Code (VB.NET)
Private Sub Delbtt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DelBtt.Click
If DataGridView1.SelectedRows.Count > 0 AndAlso MsgBox("ต้องการลบแถวที่เลือกใช่หรือไม่", MsgBoxStyle.OkCancel) = MsgBoxResult.Ok Then
Try
If con.State = ConnectionState.Closed Then
con.Open()
End If
Dim sql As String = "DELETE FROM Payrollday WHERE IDpayday = @IDpayday"
Dim cmd As New OleDbCommand(sql, con)
Dim idPayDay As String '<-- ถ้า IDpayday เป็นตัวเลขก็แก้เป็น integer
Dim totalRowEffect As Integer = 0
For Each dgr As DataGridViewRow In DataGridView1.SelectedRows
idPayDay = dgr.Cells("IDPayday").Value.ToString
' ถ้า .Cells("IDPayday") ไม่ได้ เปลี่ยนเป็น .Cells(0) ถึง .cells(1000) ต้องโดนซัก column แหละ ^^
cmd.Parameters.AddWithValue("@IDpayday", idPayDay)
Dim rowEffect As Integer = cmd.ExecuteNonQuery()
If rowEffect > 0 Then
totalRowEffect += rowEffect
Else
MsgBox(String.Format("ในตาราง Payrollday ไม่มี IDpayday = {0}", idPayDay), MsgBoxStyle.Exclamation)
End If
Next
If totalRowEffect > 0 Then
con.Close() '<--เมื่อกี๊ลืมใส่ให้ ขออภัยอย่างแรง
showData()
MsgBox(String.Format("คุณทำการลบทั้งหมด {0} rows", totalRowEffect), MsgBoxStyle.Information)
End If
Catch ex As Exception
Dim errMessage As String = "เกิดข้อผิดพลาดเนื่องจาก"
errMessage &= vbCrLf & ex.Message
errMessage &= vbCrLf & ex.StackTrace
MsgBox(errMessage, MsgBoxStyle.Critical)
Finally
con.Close()
DelBtt.Enabled = False
End Try
End If
End Sub
|
 |
 |
 |
 |
Date :
2011-03-23 16:31:02 |
By :
Programmer Of Persia |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ใส่แล้วค่ะ มันขึ้นแบบนี้ค่ะ

ยัง error อยู่ แต่อ่านแล้ว งง
ขอบคุณนะคะ คุณ Programmer Of Persia ^^
|
 |
 |
 |
 |
Date :
2011-03-23 17:01:04 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เวรกรรม
dgr.Cells("10").Value.ToString --> dgr.Cells(10).Value.ToString
หรือไม้งั้นก็ dgr.Cells("IDPayday").Value.ToString

|
 |
 |
 |
 |
Date :
2011-03-23 17:59:51 |
By :
Programmer Of Persia |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ได้แล้วๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆ คุณ Programmer Of Persia ขอบคุณมากนะคะ
ลองลบดูแล้ว ลบได้แล้วค่ะ ตามรูปนี้เลย

ไม่มีปัญหาอะไร ดีใจจังเลย ^^ เหลืออีกแค่ปัญหาเดียว เรื่อง combobox ^^
อาจจะแก้วันนี้ได้ก็ได้เน่อะ ดวงดีแต่เช้า
ขอบคุณคุณ Programmer Of Persia มากๆๆๆๆอีกครั้ง เลยค่ะ
ส่งคำขอบคุณให้เลย^^
|
 |
 |
 |
 |
Date :
2011-03-24 08:28:06 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อ๋อ ลืมบอกไปแค่เปลี่ยนจาก Cells("10") เป็น Cells(10)
ก็หายแล้ว^^
|
 |
 |
 |
 |
Date :
2011-03-24 08:31:02 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|