 |
|
จะได้แล้วค่ะ อีกนิดเดียว ช่วยดูให้หน่อยค่ะ vb.net เรื่องกำหนดสิทธิ กับ combobox |
|
 |
|
|
 |
 |
|
ตอนนี้ได้โค้ดจากความอนุเคราะห์ของคุณ 3rds แล้ว แต่ปรากฏว่า กำหนดเป็นชื่อ ที่ login ได้ แต่ให้มันตรวจสอบค่าที่ Login ไม่ได้ ใครก็ได้ช่วยหน่อยนะคะ วันนี้เอาโค้ดตัวอย่างมาให้ดูด้วยค่ะ
Code (VB.NET)
Imports System.Data
Imports System.Data.OleDb
Imports System.IO
Public Class FormMenu
Private con As New OleDbConnection(conn)
Private sqlselect As String
Private oledbreader As OleDbDataReader
Private cmd As New OleDbCommand
Private Sub User()
IDbtt.Enabled = False
Databasebtt.Enabled = False
End Sub
Private Sub Admin()
IDbtt.Enabled = True
Databasebtt.Enabled = True
End Sub
Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Label1.Text = loginmenu.Usertext.Text
con.Open()
Dim sql As String = "SELECT * FROM LoginUser WHERE LUser = 'test' " <=== คำถามอยู่ตรงนี้คะ ถ้าเรากำหนดชื่อ Login เป็น คำว่า "test" ก็จะสามารถกำหนดสิทธิของ ไอดี "test" ได้ แต่ถ้าไม่กำหนดมันทำไม่ได้ จุดประสงค์เราอยากให้มันเช็คชื่อ ไอดี ให้อัตโนมัติ นะคะ ทำยังไงดี ลองมาหลายแบบแล้ว????
Dim dtb As New DataTable
'Dim cmd As New OleDbCommand(sql, con)
Dim adapter As New OleDbDataAdapter(sql, con)
adapter.Fill(dtb)
If dtb.Rows.Count > 0 Then
Dim userclass = dtb.Rows(0)("Class").ToString()
If userclass = "User" Then <=== ตรงนี้เป็น Class User กำหนดไว้ว่าถ้าชื่อไอดี เป็น Class User ก็ให้ปิดปุ่มตามที่ต้องการ
User()
ElseIf userclass = "Admin" Then <=== ส่วนตรงนี้เป็น Class Admin กำหนดไว้ให้เปิดหมดค่ะ (แต่จริงๆไม่ใส่ก็ได้เน่อะ มันเปิดหมดอยู่แล้วอิอิ)
Admin()
End If
End If
End Sub
คำถามก็คือต้องเขียนโค้ดยังไงให้มันเช็คค่าอัตโนมัติค่ะ เพราะตอนนี้เราต้องกำหนดให้มัน มันถึงจะเช็คค่า คิดว่าต้องผิดตรงโค้ดไหนสักอย่าง แต่ก็ใกล้จะเสร็จแล้วล่ะ
ส่วนอีกคำถาม อันนี้เพิ่งตรวจเจอค่ะ เป็นคำถามสำหรับ Combobox ก็คือ เราได้นำชื่อพนักงานใส่เข้าไปใน Combobox แล้วถ้าเราเลือกชื่อ่ มันก็จะ แสดงรายละเอียดใน textbox ต่างๆ ให้ด้วย แต่ประเด็นก็คือ ชื่อพนักงานน่ะ ต้องสามารถซ้ำกันได้ แต่ตอนนี้โค้ดของเรา ถ้าเรากำหนดไว้ว่าเป็น Test , Test , Test (รายละเอียดข้างในไม่เหมือนกัน อย่างเช่น นามสกุล ชื่อเล่น อะไรแบบเนี๊ย) แต่ถ้าเราเลือกชื่อพนักงาน ที่ซ้ำ ไม่ว่าเลือกอันไหน มันก็จะกลับไปอันบนสุด (ไม่ยอมเปลี่ยนค่าที่ซ้ำให้ สังเกตได้จาก ไอดี รายละเอียด จะเป็นของ Test ที่อยู่บนสุดตลอด) สรุปก็คือ โปรแกรมมันยังซื่อบื้ออยู่น่ะค่ะ (คนเขียนก็เลยโง่เลย อิอิ)
นี่โค้ดนะคะ
Code (VB.NET)
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
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 WHERE EmpFrontName"
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"))
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")
End Sub
End Class
แค่นี้แหละค่ะ แก้ได้สองอันนี้ ก็คิดว่าโปรแกรมนี้น่าจะเสร็จแล้ว(มั้งนะ) ส่งได้ อิอิ (ถ้าไม่เจอ bug อีกนะ)
Tag : .NET, Ms Access, VB.NET
|
|
 |
 |
 |
 |
Date :
2011-03-17 08:47:15 |
By :
mayapopy |
View :
1640 |
Reply :
19 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอนนี้กำหนดสิทธิได้แล้วค่ะ เหลือ combobox ทำให้ซ้ำได้ อย่างเดียว ใครก็ได้ช่วยด้วย
|
 |
 |
 |
 |
Date :
2011-03-18 07:53:25 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
Private Sub EmpInfo()
'Dim sql As String = "SELECT DISTINCT(EmpFrontName) FROM Employee" ตรวจสอบค่าซ้ำ
Dim sql As String = "SELECT IDEmp,EmpFrontName FROM Employee WHERE EmpFrontName"
Cmd = New OleDbCommand(sql, con)
Dim adapter = New OleDbDataAdapter(Cmd)
Data = New DataSet()
adapter.Fill(Data, "Emp")
With NameBox
.DataSource = Data.Tables("Emp")
.DisplayMember = "EmpFrontName"
.ValueMember = "IDEmp"
End With
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.SelectedValue)
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")
End Sub
Code สด ไม่ผ่านการ Test ถ้าไม่ได้ห้ามด่านะ
|
 |
 |
 |
 |
Date :
2011-03-18 08:33:46 |
By :
kaimuk |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองทำตามที่คุณ Kaimuk บอกแล้วค่ะ แต่มันขึ้น error แบบนี้

แต่ก็ขอขอบคุณ คุณ Kaimuk มากนะคะ ที่มาช่วย
รอคนใจดี มาช่วยอีกค่ะ อีกนิดเดียวเอง เรามั่วมาหลายชั่วโมงแล้ว ยังไม่ได้เลย T_T
|
 |
 |
 |
 |
Date :
2011-03-18 10:45:52 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อ้าง Parameter ผิดครับ
cmd.Parameters.AddWithValue("Fname", namebox.SelectedItem)
ต้องเปลี่ยนเป็น
cmd.Parameters.AddWithValue("@Fname", NameBox.SelectedValue)
|
 |
 |
 |
 |
Date :
2011-03-18 11:22:31 |
By :
kaimuk |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองแก้ตามที่คุณ Kaimuk บอกแล้วค่ะ แต่ยังขึ้น error เหมือนเดิมเลย

ขอบคุณ คุณ Kaimuk อีกครั้งนะคะ อุตส่ามาช่วยดูให้อีก ซาบซึ้ง ^^
|
 |
 |
 |
 |
Date :
2011-03-18 11:38:22 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
@ หายไปไหนอ่ะครับ
|
 |
 |
 |
 |
Date :
2011-03-18 12:56:50 |
By :
kaimuk |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองแล้ว ไม่ได้อ่า T_T

ไม่รู้เป็นเพราะอะไร เราลองหลายแบบแล้วนะ แบบลอง copy โค้ดของคุณ Kaimuk ทั้งหมดไปลองดู แล้วเอาโค้ด ตัวเองออกก็ไม่ได้
|
 |
 |
 |
 |
Date :
2011-03-18 13:36:28 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
dropdownlist เวลาเลือกก็เอา id ของ Employee ไป where ครับ
ถ้า where EmpFrontName ชื่อมันซ้ำกันมันก็เลือกแต่อันแรก แต่ถ้าใช้ ID ของคนๆนั้นมันไม่ซ้ำแน่ๆครับ
|
 |
 |
 |
 |
Date :
2011-03-18 13:38:51 |
By :
3rds |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
Private Sub EmpInfo()
Dim dtAdapter As New OleDbDataAdapter
Dim dt As New DataTable
Dim sqlText As String = "select * from employee "
dtAdapter = New OleDbDataAdapter(sqlText, con)
dtAdapter.Fill(dt)
With namebox
.DataSource = dt
.DataValueField = "idemp"
.DataTextField = "EmpFrontName"
.DataBind()
End With
End Sub
Private Sub empdetial()
Dim dtAdapter As OleDbDataAdapter
Dim dt As New DataTable
Dim sqlText As String = "select * from employee where idemp = '" & namebox.SelectedValue & "' "
dtAdapter = New OleDbDataAdapter(sqlText, con)
dtAdapter.Fill(dt)
If dt.Rows.Count > 0 Then
EmpID.Text = dt.Rows(0)("idemp")
...
...
...
End If
End Sub
Code ขอแลกกะเบอร์เพื่อนน่ารักๆได้ป่ะครับ 
|
 |
 |
 |
 |
Date :
2011-03-18 14:10:11 |
By :
3rds |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณนะคะ คุณ 3rds ที่มาช่วยอีกแล้ว แต่เดี๋ยวขอไปลองก่อนนะคะ ว่าได้หรือเปล่า ยังไม่ได้ลอง ส่วนเพื่อนที่น่ารักมีเยอะแยะเลย แต่มีแฟนหมดแล้ว มีแต่น่ารักน้อยหน่อย ได้ไหมคะ อิอิ
ขอบคุณอีกครั้งค่า ไปลองก่อน
|
 |
 |
 |
 |
Date :
2011-03-18 14:40:20 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Oledb Parameter ต้องใช้ ? โดยไม่ต้องมีชื่อตาม @ ตามด้วยชื่อเป็นของ SQL ครับ
|
 |
 |
 |
 |
Date :
2011-03-18 14:45:19 |
By :
kaimuk |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
Private Sub empdetial()
Dim sql As String = "SELECT * FROM Employee WHERE EmpFrontName = ?"
cmd = New OleDbCommand(sql, con)
cmd.Parameters.AddWithValue("", NameBox.SelectedValue)
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")
End Sub
แบบนี้น่าจะได้
|
 |
 |
 |
 |
Date :
2011-03-18 14:54:33 |
By :
kaimuk |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองของคุณ 3rds แล้วมันขึ้นแบบนี้อ่าค่ะ

ไม่รู้ว่าเป็นเพราะอะไร
|
 |
 |
 |
 |
Date :
2011-03-18 15:47:21 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ของคุณ Kaimuk ก็ทำไม่ได้เหมือนกันค่ะ มันหาค่าไม่เจอเลย วันนี้ทั้งวันแก้เรื่องนี้เรื่องเดียว แก้ไม่ได้เลย ผ่านไปอีก 1 วัน
ขอบคุณทั้งคุณ Kaimuk และ คุณ 3rds มากค่ะ
|
 |
 |
 |
 |
Date :
2011-03-18 16:17:05 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลบกวน โพส Error ด้วยครับ ไม่เห็นผมไม่รู้จะดูให้ยังไงอ่ะครับเดาไม่ออก
|
 |
 |
 |
 |
Date :
2011-03-18 16:22:07 |
By :
kaimuk |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แบบนี้ค่ะ

เดี๋ยวจะลองไปตั้งกระทู้ใหม่ละกันค่ะ เอาแบบอธิบายละเอียดเลย ทั้งคำถาม และ จุดประสงค์ เผื่อว่า เราอธิบายไม่ดี ทุกคนเลยไม่เข้าใจ กลายเป็นเราทำผิดตั้งแต่ต้น
|
 |
 |
 |
 |
Date :
2011-03-18 16:50:57 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขออภัยตัวเดิมผมให้ไปเป็น DropdownList ของแบบ Web
T_T
เอาใหม่ๆ
Code (VB.NET)
Private Sub EmpInfo()
Dim dtAdapter As New OleDbDataAdapter
Dim dt As New DataTable
Dim sqlText As String = "select * from employee "
dtAdapter = New OleDbDataAdapter(sqlText, con)
dtAdapter.Fill(dt)
With namebox
.DataSource = dt
.DisplayMember = "EmpFrontName"
.ValueMember = "idemp"
End With
End Sub
Private Sub empdetial()
Dim dtAdapter As OleDbDataAdapter
Dim dt As New DataTable
Dim sqlText As String = "select * from employee where idemp = '" & namebox.SelectedValue & "' "
dtAdapter = New OleDbDataAdapter(sqlText, con)
dtAdapter.Fill(dt)
If dt.Rows.Count > 0 Then
EmpID.Text = dt.Rows(0)("idemp")
...
...
...
End If
End Sub
|
ประวัติการแก้ไข 2011-03-19 10:43:51 2011-03-19 10:44:45
 |
 |
 |
 |
Date :
2011-03-19 10:37:27 |
By :
3rds |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มันขึ้นแบบนี้อ่ะ

สูตรผิด....ตรงไหนไม่รู้
ขอบคุณ คุณ 3rds ค่ะ
|
 |
 |
 |
 |
Date :
2011-03-19 11:36:55 |
By :
mayapopy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เปลี่ยนจาก & เป็น + ดูน่ะครับ
|
 |
 |
 |
 |
Date :
2011-03-19 16:22:52 |
By :
nutnarakja |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|