 |
|
ติดอยู่ 4 เรื่อง โปรแกรมก็จำสำเร็จ ขอความช่วยเหลือหน่อยค่ะ vb.net นะคะ รายละเอียดสุดๆ ด้านในเลยค่ะ |
|
 |
|
|
 |
 |
|
ตอนนี้โปรแกรมเสร็จเรียบร้อยแล้วค่ะ ติดอยู่แค่ 4 เรื่อง (จาก 2 เพิ่มเป็น 4 อิอิ ) เป็น bug นิดหน่อยค่ะ ตอนแรกๆคิดว่ามันไม่เป็นอะไร แต่ก็เป็น
เรื่องที่ 1 นะคะ (จะอธิบายแบบละเอียดสุดๆ นะคะ) เป็นเรื่องของ การตรวจสอบ รหัส ซ้ำ เรื่องก็มีอยู่ว่า ถ้าตรวจสอบ text ที่เป็นตัวหนังสือ มันจะตรวจสอบได้ค่ะ แต่พอตรวจสอบค่าที่เป็นตัวเลข มันดันตรวจสอบไม่ได้ คิดว่า โค้ด ตรงไหนผิดสักแห่ง แต่เพราะความรู้ยังน้อย + กับ เพิ่งเขียนโปรแกรมได้ 2 สัปดาห์ เลยไม่เข้าใจค่ะ อยากจะขอความช่วยเหลือหน่อยค่ะ
ภาพหน้าตา โปรแกรมค่ะ

พอรันโปรแกรมแล้วคีย์ข้อมูลเสร็จเรียบร้อย กด เพิ่ม มันก็จะ error แบบนี้


นี่โค้ดค่ะ
Private Sub Addbtt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Addbtt.Click
Dim intnumrow As Integer
Dim sqlstr As String = "SELECT Count(*) FROM Employee WHERE IDOfficer = '" & Me.IDOftxt.Text & "'"
cmd = New OleDbCommand(sqlstr, con)
intnumrow = cmd.ExecuteScalar()
If intnumrow > 0 Then
MsgBox("รหัสซ้ำกรุณากรอกใหม่")
Return
Else
Dim sql As String = "INSERT INTO Employee(StatusEmp, EmpFrontName, IDOfficer, " & _
"EmpLastName, EmpNickName, EmpPosition, EmpJob, EmpBeginDate, EmpSalary) " & _
"VALUES(@Status, @Fname, @IDO, @Lname, @Nname, @Pos, @Job, @BDate, @Salary) "
cmd = New OleDbCommand(sql, con)
cmd.Parameters.AddWithValue("Status", StatusBox.SelectedItem)
cmd.Parameters.AddWithValue("Fname", namebox.Text)
cmd.Parameters.AddWithValue("IDO", IDOftxt.Text)
cmd.Parameters.AddWithValue("Lname", name1.Text)
cmd.Parameters.AddWithValue("Nname", name2.Text)
cmd.Parameters.AddWithValue("Pos", positioning.Text)
cmd.Parameters.AddWithValue("Job", duty.Text)
cmd.Parameters.AddWithValue("Bdate", Bdate.Text)
cmd.Parameters.AddWithValue("Salary", Money.Text)
Dim affect As Integer = cmd.ExecuteNonQuery()
If (affect < 1) Then
MsgBox("เกิดข้อผิดพลาด" & vbNewLine & "ไม่เพิ่มข้อมูลได้")
Else
MsgBox("เพิ่มข้อมูลเรียบร้อยแล้ว")
End If
ClearBindings()
EmpInfo()
If (namebox.Items.Count > 0) Then
namebox.SelectedIndex = 0
End If
End If
End Sub
แต่ถ้าเราเปลี่ยนไปเช็คค่าซ้ำ ที่ นามสกุล หรือ ชื่อเล่น มันจะเช็คได้ค่ะ

นี่โค้ด
Dim sqlstr As String = "SELECT Count(*) FROM Employee WHERE EmpLastName = '" & Me.name1.Text & "'"
ปล. เปลี่ยนแค่ ที่เดียวค่ะ
ที่เช็คไม่ได้ก็คือ รหัส กับ ค่าแรง
ก็เลยคิดว่าน่าจะเป็นเพราะโค้ดนี้มันเช็คค่าที่เป็นตัวเลขไม่ได้ (ในฐานข้อมูล access กำหนดไว้ให้ใส่ค่า ตัวเลข ค่ะ)
รบกวนขอความช่วยเหลือด้วยนะคะ
ต่อมาเรื่องที่ 2 ทำไม่ได้มาเป็นวันที่ 11 ก็คือ เรื่อง combobox ค่ะ ทำให้ combobox อ่านค่า เป็นชื่อพนักงาน ในฐานข้อมูล แต่เวลาเลือกมันกลับเลือกค่าซ้ำไม่ได้ ซึ่งในความเป็นจริงแล้ว พนักงาน จะต้องมีชื่อซ้ำกันได้ค่ะ
หน้าตาโปรแกรมจะเหมือนกับ เรื่องที่ 1 นะคะ
ถ้าเลือกที่ พนักงานชื่อ บี บรรทัดแรก

สังเกต รหัส จะเท่ากับ 32 ค่ะ

แล้วลองเลือก พนักงานชื่อ บี เหมือนเดิม แต่เป็น บรรทัดที่ 2 นะคะ

สังเกตที่รหัส ก็ยังเท่ากับ 32 เหมือนเดิม ค่ะT_T

ทีนี่เราลองมาเลือกที่ พนักงานชื่อ บี9 ดูบ้าง

ปรากฏว่า...รหัสเปลี่ยน!!!! มันเป็นปกติค่ะ *-*

ก็เลยสรุปได้ว่า มันเลือก ชื่อ ซ้ำไม่ได้ ถ้าเลือกชื่อซ้ำมันจะไปเลือก บรรทัดที่อยู่บนสุด เสมอค่ะ
รบกวนขอความช่วยเหลือหน่อยนะคะ
นี่เป็นโค้ดทั้งหมดค่ะ (เอาไปเท่าที่คิดว่าเกี่ยวข้องนะคะ(เกือบหมด อิอิ))
Imports System.Data
Imports System.Data.OleDb
Imports System.IO
Public Class DataEmp
Private con As New OleDbConnection(conn)
Private data As DataSet
Private cmd As OleDbCommand
Private adapter As OleDbDataAdapter
Private row_count As Integer = 0
Private _position As Integer = 0
Private Sub DataEmp_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
con.Open()
EmpInfo()
If (namebox.Items.Count > 0) Then
namebox.SelectedIndex = 0
End If
Editbtt.Enabled = False
End Sub
Private Sub namebox_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles namebox.SelectedIndexChanged
empdetial()
End Sub
Private Sub EmpInfo()
'Dim sql As String = "SELECT DISTINCT(EmpFrontName) FROM Employee" ตรวจสอบค่าซ้ำ
Dim sql As String = "SELECT * FROM Employee"
cmd = New OleDbCommand(sql, con)
Dim adapter = New OleDbDataAdapter(cmd)
data = New DataSet()
adapter.Fill(data, "Emp")
namebox.Items.Clear()
For i = 0 To data.Tables("emp").Rows.Count - 1
namebox.Items.Add(data.Tables("emp").Rows(i)("EmpFrontName").ToString())
Next
End Sub
Private Sub empdetial()
Dim sql As String = "SELECT * FROM Employee WHERE EmpFrontName = @Fname"
cmd = New OleDbCommand(sql, con)
cmd.Parameters.AddWithValue("Fname", namebox.SelectedItem)
adapter = New OleDbDataAdapter(cmd)
data.Clear()
adapter.Fill(data, "Fnameinfo")
EmpID.Text = data.Tables("Fnameinfo").Rows(0)("IDEmp")
name1.Text = data.Tables("Fnameinfo").Rows(0)("EmpLastName")
name2.Text = data.Tables("Fnameinfo").Rows(0)("EmpNickName")
positioning.Text = data.Tables("Fnameinfo").Rows(0)("EmpPosition")
duty.Text = data.Tables("Fnameinfo").Rows(0)("EmpJob")
Bdate.Text = data.Tables("Fnameinfo").Rows(0)("EmpBeginDate")
Money.Text = data.Tables("Fnameinfo").Rows(0)("EmpSalary")
StatusBox.Text = data.Tables("Fnameinfo").Rows(0)("StatusEmp")
IDOftxt.Text = data.Tables("Fnameinfo").Rows(0)("IDOfficer")
End Sub
ต่อไปเป็นเรื่องที่ 3 ค่ะ เรื่องนี้ก็เป็นเรื่องที่ค้างมาได้ประมาณ 5 วันแล้วค่ะ เรื่องของการลบแถวใน Datagrid
อันนี้เป็นหน้าตาโปรแกรมค่ะ

พอรันแล้วจะ ได้แบบนี้ค่ะ

จะอธิบายละนะคะ ข้อมูลที่โชว์ใน Datagrid จะแสดงข้อมูล 2 ตาราง รวมกัน (ซึ่งเราคิดว่ามันอาจจะผิดตรงนี้)
1. ข้อมูลของตาราง พนักงาน ซึ่งมี IDEmp เป็น primary key ค่ะ
2. ข้อมูลของรายละเอียด พนักงาน ซึ่งจะมี IDpayroll เป็น primary Key ค่ะ
3. ทั้ง 2 ตารางจะผูกข้อมูลไว้กับ รหัสพนักงาน ก็คือ IDOfficer ค่ะ
ซึ่งเราต้องการลบแถว ออกไป ในกรณีที่ต้องการลบทิ้ง เนื่องจากใส่ข้อมูลผิดค่ะ แต่ที่นี่เวลาเราจะลบ เราก็ต้องลบแต่ IDpayroll ซึ่งเป็นรายละเอียดที่กรอกลงไปในแต่ละวันใช่ไหมคะ เพราะถ้าไปลบ IDEmp ซึ่งเป็นไอดีพนักงาน ข้อมูลพนักงานก็จะหายไปเลย(เข้าใจถูกไหม) แต่ที่นี่ รู้สึกโค้ดมันจะไม่ยอมลบให้ค่ะ
นี่โค้ดค่ะทั้งหมดค่ะ
Public Class Manageform
Private con As New OleDbConnection(conn)
Private data As DataSet
Private cmd As OleDbCommand
Private Sub ShowData()
con.Open()
Dim sql As String = "SELECT * From EmpPay"
Dim cmd As New OleDbCommand(sql, con)
Dim apater As New OleDbDataAdapter(cmd)
Dim data As New DataSet()
apater.Fill(data, "pay")
DataGridView1.DataSource = data.Tables("pay")
con.Close()
End Sub
Private Sub Manageform_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
con.Close()
End Sub
Private Sub Manageform_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ShowData()
End Sub
Private Sub finebtt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles finebtt.Click
con.Open()
If finetxt.Text = "" Then
MsgBox("กรุณากรอกข้อมูลที่ต้องการค้นหา", MsgBoxStyle.Information)
ElseIf finetxt.Text <> "" Then
Dim sql As String = "SELECT * FROM EmpPay WHERE (IDOfficer Like '%" & finetxt.Text & "%' OR EmpFrontName Like '%" & finetxt.Text & "%' OR EmpNickName Like '%" & finetxt.Text & "%' OR EmpLastName Like '%" & finetxt.Text & "%')"
Dim da As New OleDbDataAdapter(sql, con)
data = New DataSet()
da.Fill(data, "emp")
DataGridView1.DataSource = data.Tables("emp")
Else
MsgBox("ไม่มีข้อมูลที่ต้องการค้นหา", MsgBoxStyle.Information)
End If
con.Close()
End Sub
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
Private Sub DataGridView1_RowStateChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowStateChangedEventArgs) Handles DataGridView1.RowStateChanged
If (DataGridView1.SelectedRows.Count > 0) Then
Delbtt.Enabled = True
Else
Delbtt.Enabled = False
End If
End Sub
End Class
ซึ่งพอเราคลิ๊กที่แถวของ datagrid แล้วกด ลบข้อมูล จะขึ้น messagebox ว่า ต้องการลบหรือไม่ พอกด ok ไป มันก็ไม่ทำอะไรเลยน่ะค่ะ
เศร้าT_T
กด ok

นิ่งเลย

ตอนแรกก็คิดว่าสงสัยมันลบไปแล้ว แต่มันไม่แสดง แต่พอรันใหม่ มันก็อยู่เหมือนเดิมค่ะ
ขอความช่วยเหลือด้วยค่ะ
ต่อไปเรื่องที่ 4 เรื่องสุดท้ายค่ะ เป็นเรื่องที่สงสัยมานาน ตอนแรกๆ อยากลองทำเองดู แต่พอทำจริงๆ ดันไม่รู้จะเริ่มต้นยังไง
อันนี้ยังไม่ได้ทำนะคะ มาขอโค้ด เฉยๆค่ะ
เรื่องก็มีอยู่ว่า เวลาเราเพิ่มข้อมูลน่ะค่ะ เราต้องการให้ ID (ที่เป็น Autonumber) รันตามที่เราต้องการได้ไหมคะ เช่น ขึ้นต้นด้วย 0001 แล้วรันต่อไปเรื่อยๆ จนถึง 9000 ที่นี่เวลาเราลบข้อมูล สมมติ เราลบข้อมูลที่ 5000 - 6000 นะ เวลาเรามาเพิ่มข้อมูลก็อยากให้มัน ไปแทนที่ข้อมูลที่ 5000 -6000 น่ะค่ะ แต่ปัจจุบัน มันต่อไปเลย 9001 ไปเรื่อยๆ ข้อมูลที่ 5000 - 6000 มันก็จะเป็นค่าว่างน่ะค่ะ ตอนนี้ตั้งแต่ทำโปรแกรมมา ID ต้นๆ ถูกลบไปหมดแล้ว มีวิธี Format มันใหม่ไหมคะ
คำถามสุดท้ายไม่รู้ว่างงหรือเปล่า ถ้าต้องการภาพก็บอกนะคะ จะพยายาม วาดภาพให้
เรื่องทั้งหมดนี้เป็นเรื่องที่เราได้ลองทำมาแล้ว หลายๆวันค่ะ แต่ก็จนปัญญาจริงๆ จึงต้องมาขอร้องให้ทุกคนที่ใจดี ช่วยหน่อยค่ะ ถ้าโปรแกรมเสร็จแล้วจะไม่ลืมพระคุณเลย แล้วถ้าเขียนโปรแกรมเก่งแล้ว ก็จะมาคอยช่วยคนที่เพิ่งเริ่มเขียนโปรแกรมต่อไปค่ะ
ปล. ยกเว้นเรื่องสุดท้ายนะคะ ยังไม่ได้ลอง .... คือ ไม่ใช่ว่า ไม่ลองคิดดูก่อนนะคะ แต่ มันคิดไม่ออกว่าจะเริ่มต้นยังไงน่ะค่ะ เอาเป็นว่าพยายามแล้วละกัน เน่อะ
ขอบพระคุณทุกคนล่วงหน้าค่ะ
Tag : .NET, Ms Access, VB.NET
|
|
 |
 |
 |
 |
Date :
2011-03-22 15:55:30 |
By :
mayapopy |
View :
3418 |
Reply :
44 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เรื่องที่ 1
Dim sqlstr As String = "SELECT Count(*) FROM Employee WHERE IDOfficer = '" & Me.IDOftxt.Text & "'"
IDOfficer เป็น Number รึเปล่าครับ
ลองแก้เป็นแบบนี้ดู
Dim sqlstr As String = "SELECT Count(*) FROM Employee WHERE IDOfficer = " & Me.IDOftxt.Text
|
 |
 |
 |
 |
Date :
2011-03-22 16:01:19 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เรื่องที่ 3 ลองดู
Code (VB.NET)
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"
cmd.Parameters.AddWithValue("IDpay", 0)
Dim cmd As New OleDbCommand(sql, con)
For Each dgr As DataGridViewRow in DataGridView1.SelectedRows
cmd.parameters("@IDPay").Value = dgr.Cells(0).Value ' กรณีที่ IDPay อยู่ Column แรกของ Grid นะ (หมายเหตุ: ปกติผมไม่นิยมอ้างอิงถึงข้อมูลด้วยวิธีนี้นะ เพราะมันจะยึดติดเกินไปว่าต้องวาง IDPay เป็น Column แรก)
cmd.ExecuteNonQuery()
Next
ShowData()
Delbtt.Enabled = False
con.Close()
End Sub
|
 |
 |
 |
 |
Date :
2011-03-22 16:22:00 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ใช่ค่ะเป็น number ค่ะ
เดี๋ยวจะลองไปแก้ตามที่บอกนะคะ
|
 |
 |
 |
 |
Date :
2011-03-22 16:25:26 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แก้ได้แล้วค่ะ

เย้ๆๆๆ
เรื่องที่ 1 แก้ได้แล้ว
ขอบคุณ คุณ หางอึ่ง มากๆเลยนะคะ ไม่รู้จะตอบแทนยังไงดี
เดี๋ยวไปลองแก้เรื่องที่ 3 ต่อก่อนนะคะ
ขอบคุณมากๆค่า
ปล. ไม่คิดว่ามันจะแก้ง่าย ขนาดนี้ -*-
|
 |
 |
 |
 |
Date :
2011-03-22 16:27:34 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เรื่องที่ 4
โดยมาตราฐานการเขียนโปรแกรมทั่วไป (อย่างโปรแกรม Payroll นี้ก็ด้วย)
1. เราจะไม่ลิมิต Primay Key ครับว่ามันจะวิ่งไปถึงไหน
2. เราจะไม่เอา Primary Key ที่ถูกลบไปแล้วเอามาใช้งานใหม่
อยากให้คุณจินตนาการ
มีตาราง 2 ตาราง
1. ตารางข้อมูลพนักงาน (Primary Key คือ EmpID)
2. ตารางข้อมูลการจ่ายเงินเดือน (ผูกกับตารางข้อมูลพนักงานด้วย EmpID)
สมมุติ EmpID 1000 ชื่อสมศักดิ์ แล้วระหว่างที่ทำงานมีจ่ายเงินเดือนให้สมศักดิ์ (มีการทำรายการใน ตารางจ่ายเงินเดือน)
แล้ว EmpID 1000 ถูกลบ แล้วถูกนำไปใช้ใหม่ด้วย สมชาย
คุณคิดว่าจะเกิดอะไรขึ้น ถ้าเอาข้อมูลประเภทนี้มาทำรายงาน
โดยเฉพาะรายงาน ภาษีหัก ณ ที่จ่าย
เพราะฉะนั้นคุณอย่าพยายาม Recycle Primary Key เลย
อยากทำเพื่อลองวิชาน่ะได้ แต่ผมไม่ชมว่าเก่งนะครับถ้าเอาวิธีนี้มาใช้งานกับโปรแกรมจริงๆ
|
 |
 |
 |
 |
Date :
2011-03-22 16:32:29 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เรื่องที่ 3 ลองแล้วค่ะ ไม่ได้ผลค่ะ เป็นเหมือนเดิม นิ่ง เลย
ไม่ทราบว่า คุณ หางอึ้ง มีวิธีแนะนำไหมคะ เป็นวิธีอื่นก็ได้ค่ะ เอาที่คุณ หางอึ้ง ถนัด เผื่อเราจะเอาไปประยุกต์^^
อ๋อ คิดว่ามันเป็นที่ ตาราง database หรือเปล่าคะ เราสงสัยมานานแล้ว คือ เราใช้วิธี ให้โปรแกรม access มันผูกข้อมูลให้น่ะค่ะ

แบบว่า เพื่อสอนมาน่ะค่ะ แล้วเราก็จะ save ไว้ว่า เป็น EmpPay
แต่เราสงสัยเวลาเราไปเลือก ใน visual studio น่ะ มันจะมี Table กับ view แล้ว EmpPay มันไปอยู่ใน View มันก็เลย ลบไม่ได้หรือเปล่า
เดาเอาอ่านะ
แบบนี้นะ

ไม่ทราบว่ามันเกี่ยวกันหรือเปล่าคะ
|
 |
 |
 |
 |
Date :
2011-03-22 16:44:47 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อ๋อ ทราบแล้วค่ะ สำหรับเรื่องที่ 4 งั้นปล่อยไปเน่อะ
เป็นอันว่าตอนนี้เรื่องแค่ 2 ปัญหาแล้ว
ดีใจ^^
ขอบคุณ คุณ หางอึ้งอีกครั้งค่ะ
ใกล้จะหายปวดหัวแล้ว อิอิ
|
 |
 |
 |
 |
Date :
2011-03-22 16:48:13 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
น่าทึ่งมากเลย คุณหางอึ้งนี่เก่งเน่อะ ดูแค่หน้าตาโปรแกรมกับโค้ด ก็รู้แล้วว่า database เรา เป็นยังไง แถมยังรู้อีกว่าเป็นโปรแกรมอะไร
เมื่อไหร่เราจะเก่งแบบนี้บ้าง
|
 |
 |
 |
 |
Date :
2011-03-22 16:52:43 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
EmpPay เป็น Query นิ
นึกว่าชื่อ Table
เข้าใจว่า EmpPay เกิดจากการ Join ระหว่าง Employee กับ Payrollday
และหวังว่า Column แรกของ DataGridView1 คือ Payroolday.IDPayday นะครับ
Code (VB.NET)
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 Payrollday WHERE IDpayday = @IDpay" ' DELETE FROM นะครับ ไม่ใช่ DELETE * FROM ก่อนหน้านี้ผมเขียนผิด
cmd.Parameters.AddWithValue("@IDpay", 0)
Dim cmd As New OleDbCommand(sql, con)
For Each dgr As DataGridViewRow in DataGridView1.SelectedRows
cmd.parameters("@IDPay").Value = dgr.Cells(0).Value ' กรณีที่ IDPayday อยู่ Column แรกของ Grid นะ (หมายเหตุ: ปกติผมไม่นิยมอ้างอิงถึงข้อมูลด้วยวิธีนี้นะ เพราะมันจะยึดติดเกินไปว่าต้องวาง IDPayday เป็น Column แรก)
cmd.ExecuteNonQuery()
Next
ShowData()
Delbtt.Enabled = False
con.Close()
End Sub
แก้ไข cmd.Parameters.AddWithValue("IDpay", 0) -> cmd.Parameters.AddWithValue("@IDpay", 0)
|
ประวัติการแก้ไข 2011-03-22 17:31:12
 |
 |
 |
 |
Date :
2011-03-22 17:28:11 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มาทำงานต่อแล้วค่ะ
โห คุณ หางอึ้ง มาตอบทุกกระทู้เลย ขอบคุณมากๆเลยค่ะ
งั้นแสดงว่า เราทำ EmpPay ผิดใช่ไหมคะ คือ เราต้องการให้มัน join Table กันน่ะค่ะ ทำไม่เป็น แล้วเพื่อนสอนมาแบบนี้ ไม่ทราบว่า ถ้าจะให้มัน join Table กัน จริงๆ ต้องทำยังไงหรอคะ
เดี๋ยวขอเอาโค้ดไปลองก่อนนะคะ เดี๋ยวจะมารายงานผลค่ะ
ขอบคุณ อีกครั้งค่ะ
|
 |
 |
 |
 |
Date :
2011-03-23 09:26:52 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มารายงานผลค่ะ นิ่ง เหมือนเดิมค่ะ
จากโค้ดที่คุณ หางอึ้งให้มา เราลองแก้ดูแล้วค่ะ ผลยังเป็นเหมือนเดิม เราก็เลยคิดว่า จากคำพูดของคุณ หางอึ้ง ที่บอกว่า
กรณีที่ IDPayday อยู่ Column แรกของ Grid
เราก็เลยไปนับ column ที่อยู่ใน Datagrid แล้ว มันอยู่ column ที่ 11 ก็เลย ลองแก้จาก 0 เป็น 11 ดู (จาก 0 ทั้งหมด ก็ไล่ แก้ทีละตัว) แต่มันก็ยังไม่ลบน่ะค่ะ


ลองไล่แก้จาก 0 แก้เป็น 11 แล้ว(ทีละตัว จนครบ) ก็ยังไม่ได้

เราก็เลยคิดว่า ก่อนอื่น เราต้องแก้ให้ table มัน join กัน ให้ถูกก่อน น่าจะดีกว่า เน่อะ^^ กัวว่ามันจะผิดตั้งแต่แรก
|
 |
 |
 |
 |
Date :
2011-03-23 09:45:13 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เดี๋ยวไปลอง แก้เรื่อง combobox ต่อก่อนนะคะ
แล้วเดี๋ยวจะมารายงานผลค่ะ
|
 |
 |
 |
 |
Date :
2011-03-23 09:50:42 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
cmd.Parameters.AddWithValue("@IDpay", 0)
คำสั่งข้างบนนี้ เป็นการสร้าง Parameter พร้อมกับค่าเริ่มต้นของ Parameter
ในกรณีนี้ จะใส่เป็น 0 หรือเลขอะไรก็ได้
cmd.parameters("@IDPay").Value = dgr.Cells(0).Value
คำสั่งนี้ เป็นการกำหนดค่าให้พารามิเตอร์ @IDPay ด้วยค่าที่อยู่ใน row คอลัมภ์แรก
ถ้า IDPayday ของคุณอยู่คอลัมภ์ที่ 11 ควรแก้เป็น (VB.NET นับคอลัมภ์แรก เป็น 0)
cmd.parameters("@IDPay").Value = dgr.Cells(10).Value
Code (VB.NET)
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 sql As String = "DELETE FROM Payrollday WHERE IDpayday = @IDpay"
cmd.Parameters.AddWithValue("@IDpay", 0)
Dim cmd As New OleDbCommand(sql, con)
For Each dgr As DataGridViewRow in DataGridView1.SelectedRows
cmd.parameters("@IDPay").Value = dgr.Cells(10).Value
cmd.ExecuteNonQuery()
Next
ShowData()
Delbtt.Enabled = False
con.Close()
End Sub
|
 |
 |
 |
 |
Date :
2011-03-23 10:14:12 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้ายังไม่ได้
ลองใส่ MessageBox เพิ่มใน For Loop
เผื่อจะได้เงื่อนงำอะไรบ้าง
Code (VB.NET)
For Each dgr As DataGridViewRow in DataGridView1.SelectedRows
cmd.parameters("@IDPay").Value = dgr.Cells(10).Value
dim st As String = "@IDPay = " & dgr.Cells(10).Value.tostring()
Messagebox.Show(st)
cmd.ExecuteNonQuery()
Next
|
 |
 |
 |
 |
Date :
2011-03-23 10:26:18 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แก้เป็น 10 แล้ว มันก็ไม่ยอมลบให้ค่ะ T_T
|
 |
 |
 |
 |
Date :
2011-03-23 10:27:29 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ใส่ MessageBox ตาม No14 รึยัง
อยากรู้ว่ามันแสดงข้อความว่าอย่างไร
|
 |
 |
 |
 |
Date :
2011-03-23 10:37:30 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ใส่แล้ว มันไม่ขึ้น message อะไรเลยน่ะค่ะ เหมือนกับมันไม่ทำอะไรเลยอ่ะ
-*-
ทำไงดีล่ะ เราก็ลองโทรไปถามเพื่อนๆแล้วไม่มีใครแก้ได้เลย
|
 |
 |
 |
 |
Date :
2011-03-23 10:59:12 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เข้าใจว่ามันโดน Return
เอา MsgBox ออกก่อนดีไหม
Code (VB.NET)
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 sql As String = "DELETE FROM Payrollday WHERE IDpayday = @IDpay"
cmd.Parameters.AddWithValue("@IDpay", 0)
Dim cmd As New OleDbCommand(sql, con)
For Each dgr As DataGridViewRow in DataGridView1.SelectedRows
cmd.parameters("@IDPay").Value = dgr.Cells(10).Value
cmd.ExecuteNonQuery()
Next
ShowData()
Delbtt.Enabled = False
con.Close()
End Sub
|
 |
 |
 |
 |
Date :
2011-03-23 12:41:52 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มันขึ้น error แบบนี้ค่ะ

|
 |
 |
 |
 |
Date :
2011-03-23 14:14:13 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ต้องเป็น
cmd.Parameters.AddWithValue("@IDpay", 0)
ไม่ใช่
cmd.Parameters.AddWithValue("IDpay", 0)
อุตส่าห์เขียนไปให้ถูกแล้ว แก้ให้ผิดอีก กำ 
Code (VB.NET)
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 sql As String = "DELETE FROM Payrollday WHERE IDpayday = @IDpay"
cmd.Parameters.AddWithValue("@IDpay", 0)
Dim cmd As New OleDbCommand(sql, con)
For Each dgr As DataGridViewRow in DataGridView1.SelectedRows
cmd.parameters("@IDPay").Value = dgr.Cells(10).Value
cmd.ExecuteNonQuery()
Next
ShowData()
Delbtt.Enabled = False
con.Close()
End Sub
|
 |
 |
 |
 |
Date :
2011-03-23 14:47:58 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อ๋อ ไม่ใช่ค่ะ ตอนแรกๆลองแบบนั้นไปแล้วไม่ได้ผล ก็เลยลองเปลี่ยนดูน่ะค่ะ
แต่พอลืมแก้
ตอนกลับมาแล้ว มันเป็นแบบนี้ค่ะ

ขอโทษค่า ลืมเปลี่ยนกลับ^^
|
 |
 |
 |
 |
Date :
2011-03-23 14:56:28 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แสดงว่ามีปัญหาเกี่ยวกับ Connection
ไม่ใช่ Command
|
 |
 |
 |
 |
Date :
2011-03-23 14:59:06 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เช็คก่อนว่า Conection เปิดสำเร็จไหม
ถ้าไม่ คุณหาวิธีเปิด Connection ให้ได้ก่อนล่ะกัน
Code (VB.NET)
Private Sub Delbtt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Delbtt.Click
Try
con.Open()
If con.State <> ConnectionState.Open Then
messagebox.Show("ไม่สามารถเปิด Connection" & vbCrLf & con.ConnectionString)
Return
End If
Dim sql As String = "DELETE FROM Payrollday WHERE IDpayday = @IDpay"
cmd.Parameters.AddWithValue("@IDpay", 0)
Dim cmd As New OleDbCommand(sql, con)
For Each dgr As DataGridViewRow in DataGridView1.SelectedRows
cmd.parameters("@IDPay").Value = dgr.Cells(10).Value
cmd.ExecuteNonQuery()
Next
ShowData()
Delbtt.Enabled = False
con.Close()
Catch ex As Exception
Messagebox.Show(ex.Message)
End Try
End Sub
|
 |
 |
 |
 |
Date :
2011-03-23 15:07:50 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เช็คแล้ว เปิดอยู่ค่ะ

คุณ หางอึ้งพักผ่อนบ้างก็ได้ค่ะ เกรงใจ เดี๋ยวปวดหัวเหมือนเรา^^
|
 |
 |
 |
 |
Date :
2011-03-23 15:19:43 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอนนี้คิดว่า ภายในอาทิตย์นี้
ถ้าไม่ได้จริงๆ ก็ตั้งใจว่าจะไปจ้างเขาทำน่ะค่ะ
แค่ 2 จุด คงคิดไม่แพงมั่งT_T
|
 |
 |
 |
 |
Date :
2011-03-23 15:21:26 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
รักษาสุขภาพบ้างนะคะ เดี๋ยวปวดหัว
ส่งคำขอบคุณให้แล้วค่ะ ^^
|
 |
 |
 |
 |
Date :
2011-03-23 15:22:17 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แก้ปัญหาเองไปก่อนล่ะกัน
ถ้าไม่ได้
วันอาทิตย์นี้ช่วงบ่าย พอว่างอยู่ ถ้ามาแถวพระโขนงได้ ก็จะช่วย
|
 |
 |
 |
 |
Date :
2011-03-23 15:31:09 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อีกสักที ก่อนหมดลมหายใจ 
เช็ค con.state ก่อนเรียก con.Open()
Code (VB.NET)
Private Sub Delbtt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Delbtt.Click
Try
If con.State <> ConnectionState.Open Then con.Open()
Dim sql As String = "DELETE FROM Payrollday WHERE IDpayday = @IDpay"
cmd.Parameters.AddWithValue("@IDpay", 0)
Dim cmd As New OleDbCommand(sql, con)
For Each dgr As DataGridViewRow in DataGridView1.SelectedRows
Messagebox.Show("@IDPay=" & dgr.Cells(10).Value.Tostring()) ' ใส่ไว้หน่อยจะได้รู้ว่า ได้ค่า IDpayday ที่ถูกต้อง
cmd.parameters("@IDPay").Value = dgr.Cells(10).Value
cmd.ExecuteNonQuery()
Next
ShowData()
Delbtt.Enabled = False
con.Close()
Catch ex As Exception
Messagebox.Show(ex.Message)
End Try
End Sub
|
ประวัติการแก้ไข 2011-03-23 17:35:44
 |
 |
 |
 |
Date :
2011-03-23 15:34:57 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
โห พระโขนง ไกลมากเลย-*-
ไม่เป็นไรค่า ขอบคุณมากๆค่ะ แค่นี้ก็ช่วยเยอะแล้ว
ไม่แน่พรุ่งนี้ อาจฟลุ๊คทำได้ ก็ได้ อิอิ
|
 |
 |
 |
 |
Date :
2011-03-23 15:36:04 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
รบกวนถามวิธีการ join table ได้ไหมคะ
ว่าจะลอง join table กัน ทำเป็น table ใหม่ เผื่อฟลุ๊ค^^
|
 |
 |
 |
 |
Date :
2011-03-23 15:37:07 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองตาม No.28 รึยังครับ
ใช้ dgr.Cells(10).Value
ไม่ใช้ dgr.Cells("10").Value
อันนั้น เป็นอันสุดท้ายที่จะแนะนำได้แล้วล่ะ
bell จะ Join table ใหม่ก็ไม่ว่าล่ะ
แต่ปัญหานี้คงไม่เกี่ยวกับการ Join table หรอก
|
 |
 |
 |
 |
Date :
2011-03-23 17:33:46 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code หรือปัญหาผมดูว่าไม่น่าเกินความสามารถของท่าน หางอึ่ง หรอกครับ ปัญหามันน่าจะมาจากสภาพแวดล้อมที่เรามองไม่เห็นมากกว่า ถ้า จขกท. Upload Code + Database ปัญหาน่าจะจบได้ง่ายกว่านี้อ่ะครับ อีกอย่างมันทิ้งช่วงการตอบด้วย กว่า จขกท. จะมาบอกผล ไอ้ที่คิดๆ ไว้ตอนตอบก็ลืมหมดแล้ว
|
 |
 |
 |
 |
Date :
2011-03-24 08:22:59 |
By :
kaimuk |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ได้แล้วค่ะ คุณหางอึ้ง ดีใจมาก ดีใจแต่เช้าเลย ทำตามที่คุณ Programmer Of Persia กับ คุณ หางอึ้ง บอกเลย ค่ะ แค่เปลี่ยนจาก Cells("10") เป็น (10) ค่ะ

เดี๋ยวพรุ่งนี้ส่งคำขอบคุณให้นะคะ พอดีมันส่งได้วันละ 1 ครั้ง เลยส่งให้คุณ Programmer Of Persia ไปแล้ว
ไม่ลืมค่ะ^^
ตอนนี้ก็เหลือแต่ combobox อย่างเดียวแล้ว
ขอบคุณทุกๆคน ที่มาช่วยในครั้งนี้ด้วยค่า
ขอบคุณค่ะ (ขอบคุณอย่างเดียวเลย^^)
|
 |
 |
 |
 |
Date :
2011-03-24 08:48:58 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้า Code ตาม No.33
ผมไม่แน่ใจว่าถ้าลบพร้อมกัน 2 Rows จะเกิด Error รึเปล่า
ลองดูนะ
ถ้า Error ก็เอา cmd.Parameters.AddWithValue ไว้ก่อนเข้า For Loop
อีกอย่าง อยากให้ศึกษาเรื่อง Breakpoint
จะเป็นคุณประโยชน์อย่างมาก เมื่อต้องการหา Bug ของโปรแกรม
|
 |
 |
 |
 |
Date :
2011-03-24 09:00:58 |
By :
หางอึ่ง |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอโทษค่า คุณ Kaimuk จริงๆก็สงสัยอยู่ว่าจะเข้าใจ ตามที่เราได้อธิบายไปหรือเปล่า ตอนหลังก็เลยตัดสินใจ ทำรูปกับรายละเอียด แล้วก็เอาโค้ดมาให้เกือบทั้งหมดน่ะค่ะ เพื่อให้มันเข้าใจมากยิ่งขึ้น แต่จริงๆก็อย่างที่ คุณ Kaimuk บอกน่ะค่ะ น่าจะเอาโปรแกรมมาอัพโหลดให้เลย แต่พอดีว่า เราไม่รู้ว่าต้องเอาส่วนไหนมาอัพโหลดน่ะค่ะ (เพิ่งหัดเขียนโปรแกรมได้ 2 อาทิตย์กว่า ยัง งูๆ ปลาๆ อยู่เลย แล้วก็ไม่ได้ไปเรียนด้วยน่ะค่ะ ซื้อหนังสือมาอ่านเอา แต่ถ้าทำโปรแกรมง่ายๆได้ ก็ตั้งใจว่าจะไปเรียนแล้วค่ะ^^) ตอนแรกๆ ตั้งใจว่าจะใช้ฐานข้อมูล SQL คอมมันดันลงไม่ได้อีก ก็เลยเปลี่ยนเป็น Access ตามที่หนังสือสอน แต่ผลก็ออกมาเป็นที่น่าพอใจนะคะ ถามใน google บ้าง ถามคนในเว็บนี้บ้าง ตอนนี้ก็เหลือ combobox อย่างเดียว ถ้าทำได้ก็จะส่ง แล้วก็จะไปเรียน Vb.net เพิ่ม ^^ แล้วก็ที่ทิ้งช่วงการตอบเพราะว่า มัวแต่ไปหาใน google กับ อ่านหนังสือ แล้วพอ 5 โมง ก็กลับบ้านแล้ว พอกลับบ้านก็อาบน้ำ กินข้าว ดูละคร นอน น่ะ ไม่ได้เล่นคอมเลย -*- (ช่วงพักสมอง อิอิ) ก็เอาเป็นว่าขอโทษทุกคนด้วยนะคะ ที่ทำให้วุ่นวาย ค่ะ ขอบคุณคุณ kaimuk ด้วยค่ะ เห็นมาคอยช่วยตลอดเลย ขอบคุณมากค่า^^
เดี๋ยวคราวหน้าจะมาอัพโหลด ทั้งโปรแกรมเลย^^
|
 |
 |
 |
 |
Date :
2011-03-24 09:37:02 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อ๋อ แล้วก็อีกอย่างค่ะ ถ้ารู้ว่าอัพโหลดตรงไหน ก็คงยังไม่กล้าอัพ ประมาณว่า โค้ดเรามั่วมา(เวลาตั้งชื่อ ตั้งแบบขอไปที เช่น เงินเดือน ก็ตั้ง money บ้าง Salary บ้าง ขนาด Detail ยังเขียนผิดเลย รวมถึงฐานข้อมูลด้วย-*-) กลัวว่าจะยิ่ง งง เข้าไปใหญ่ น่ะค่ะ แหะๆ
|
 |
 |
 |
 |
Date :
2011-03-24 09:40:21 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองทำตามที่คุณหางอึ้งบอกแล้วค่ะ มันผลลัพภ์แบบนี้น่ะค่ะ
ถ้าลองลบ มากกว่า 1 แถว(ลบ3แถว) จะได้แบบนี้ค่ะ

พอกด ok ไป มันก็จะขึ้นแบบนี้............มันลบได้ค่ะ

แล้วพอทำตามที่คุณ หางอึ้ง บอก เอา cmd.Parameters.AddWithValue ไว้ก่อนเข้า For Loop
แล้วลองลบ 2 แถว
มันขึ้นแบบเดียวกันค่ะ

พอกด ok ไป ปรากฏว่า....มันไม่ยอมลบค่ะ

แล้วก็เรื่องที่คุณหางอึ้งบอกอีกเรื่อง เรื่อง
Breakpoint คิดว่าในหนังสือน่าจะอยู่ในเรื่อง การ เช็คค่า Error เดี๋ยวจะไปลองศึกษาดูค่ะ อ่านใกล้ถึงแล้ว
ปล. เมื่อวานเจ็บใจ แวะเซ็นทรัล ไปหนังสือมาเพิ่มอีกเล่ม เผื่อมันจะลงรายละเอียดลึกกว่า (เสียเงินเลย แหะๆ) แต่ยังไม่ทันได้อ่านเลย แก้ไขได้ซะแระ^^
|
 |
 |
 |
 |
Date :
2011-03-24 09:55:37 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อ๋อ ไหนๆ ก็คุยเรื่องเรียนแระ ขอถามหน่อยค่ะ ว่าไปเรียนกันที่ไหนหรอคะ แพงไหม??
|
 |
 |
 |
 |
Date :
2011-03-24 10:02:18 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ดีใจด้วยครับที่ทำไ้ด้ ( หืดขึ้นคอเลยวุ้ย - -' )
โค้ดผมมีบักอย่างที่ท่านหางอึ่งบอกจิงแหละ
ลองใส่
cmd.Parameters.Clear()
ก่อน
cmd.Parameters.AddWithValue("@IDpayday", idPayDay)
ดูครับ เผื่อลบหลายตัวได้
ถ้าไม่ได้ ก็กำหนด property multiselect ของ datagrid เป็น false ซะ
จะได้เลือกแค่ row เดียว
|
 |
 |
 |
 |
Date :
2011-03-24 11:03:06 |
By :
Programmer Of Persia |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณค่า คุณ Programmer Of Persia
หืดขึ้นคอเลยหรอ อิอิ
เดี๋ยวจะลองไปทำตามดูค่ะ
แต่ตอนนี้หิว
อย่าลืมทานข้าวนะคะ
ตอนบ่ายจะมารายงานผล^^
ปล. ถ้าไม่ได้ ก็กำหนด property multiselect ของ datagrid เป็น false ซะ
จะได้เลือกแค่ row เดียว<===== อันนี้น่าสนใจ (เพิ่งรู้^^)
|
 |
 |
 |
 |
Date :
2011-03-24 11:47:51 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
โอโห ลบได้แล้วค่ะ
ทำตามที่คุณ Programmer Of Persia บอก ลบได้ ไม่มี bug แล้ว
เอาเป็นว่า เรื่อง ลบ Datagrid สมบูรณ์แล้วค่ะ
ตอนนี้กำลังศึกษาเรื่อง combobox อยู่ ตอนแรกๆเกือบทำได้แระ แต่มันไม่อ่าน ค่าซ้ำเหมือนเดิม เลยกะว่าจะเปลี่ยนเป็น ไอดี มันจะได้ไม่ซ้ำ แต่ถ้าเปลี่ยนเป็น ไอดี ถ้าฐานข้อมูลมันเยอะ มันก็จะลำบากอีก เพราะต้องมาคอยจำ รหัสของแต่ละคน ก็เลย เอากลับไปเป็นเหมือนเดิมค่ะ
|
 |
 |
 |
 |
Date :
2011-03-24 13:33:11 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลืมขอบคุณ
ขอบคุณ Programmer Of Persia และ ทุกๆคน มากๆๆค่ะ
เหลือ combobox รบกวนอีกเรื่องนะคะ^^
|
 |
 |
 |
 |
Date :
2011-03-24 13:34:18 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
กระทู้ยาวเฟื้อยยยเลยยนะเนี้ย
มาเป็นกำลังใจให้ขอรับ ^^
|
 |
 |
 |
 |
Date :
2011-03-24 15:59:05 |
By :
3rds |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณค่ะ คุณ 3rds
กระทู้ยาวเพราะยังแก้ไม่ได้เลย
จะไปตั้งกระทู้ใหม่ ดีไหม?^^
|
 |
 |
 |
 |
Date :
2011-03-25 08:11:39 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|