Page 1 of 1

รบกวนอาจารย์ด้วยค่ะ มีปัญหาเรื่อง combobox ไปแสดงใน textboe

Posted: Wed Mar 22, 2017 9:24 pm
by aonraya
ติดปัญหาคือต้องการให้ combobox แสดงรหัส แล้วให้ชื่อไปแสดงใน textbox สมมุติว่าเลือกรหัสใน combobox แล้วชื่อก็แสดง ใน textbox
แต่ปัญหาคือทั้งรหัสใน combobox ไม่แสดง และ textbox ก็ไม่แสดง

นี่เป็นโมดูลเก็บโค้ดที่เรียกใช้

Code: Select all

Imports System.Data.Sql
Imports System.Data.SqlClient

Module code_ประกาศฟังกชัน_

    'ฐานข้อมูล
    Friend cn As New SqlConnection("Data Source=.; Initial Catalog=pro_consumeble; Integrated Security=SSPI;")

    'cmd sqlcommand
    Friend cmd As New SqlCommand
    'DA sqldataadapter
    Friend DA As New SqlDataAdapter
    'SQL  = เป็นคำสั่ง
    Friend sql As String
    'SQL DATA SET
    Friend DS As DataSet

    Friend DR As SqlDataReader

    'ฟังก์ชันเปิดฐานข้อมูล
    Friend Sub connect_open()
        Try
            If cn.State = ConnectionState.Closed Then cn.Open()

        Catch ex As Exception

        End Try
        End Sub
End Module
    
    

ส่วนนี่เป็นโค้ด combobox ที่ต้องการให้แสดงรหัส กับ ชื่อ ซึ่งมันไม่แสดงค่ะ ไม่รู้ว่าทำไรผิดตรงไหนหรือเปล่า :roll: :roll:

Code: Select all

 Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        sql = "SELECT cus_id, cus_fullname, cus_dept, cus_date, cus_status FROM customer WHERE cus_id ='" & ComboBox1.Text & "'"
        cmd = New SqlCommand(sql, cn)
        Call connect_open()
        DR = cmd.ExecuteReader()
        DR.Read()
        Text_fullname_export.Text = DR.Item("cus_fullname")


    End Sub


Re: รบกวนอาจารย์ด้วยค่ะ มีปัญหาเรื่อง combobox ไปแสดงใน textboe

Posted: Wed Mar 22, 2017 11:52 pm
by snasui
:D แนบไฟล์มาด้วยจะได้สะดวกในการทดสอบครับ

Re: รบกวนอาจารย์ด้วยค่ะ มีปัญหาเรื่อง combobox ไปแสดงใน textboe

Posted: Thu Mar 23, 2017 8:51 am
by aonraya
แนบไฟล์แล้วน่ะค่ะ รบกวนอาจาร์ยโดยน่ะค่ะ ขอบคุณค่ะ
Imports System.docx

Re: รบกวนอาจารย์ด้วยค่ะ มีปัญหาเรื่อง combobox ไปแสดงใน textboe

Posted: Thu Mar 23, 2017 2:00 pm
by cheapache
อันดับแรกนะครับ

ใช้ Event ของ Combobox เพื่อเลือกรหัสจาก Combobox โดย ComboBox.SelectedIndex.Change นะครับ
โดยใน Event นั้น ให้ทำการใช้ Properties Combobox1.SelectItem เพื่อไปเก็บในตัวแปรใดตัวแปรหนึ่งก่อน
เช่น

Code: Select all

Private Sub Combobox1_SelectIndex (sender As Object, e As EventArgs) Handles Combobox1.SelectIndexChanged

Dim ID As Integer

ID = Combobox1.SelectItem

End SuB
แต่ในการประกาศตัวแปร ID นั้นให้ประกาศไว้ด้านบน ไม่ได้อยู่ในคลาสของ Control Combobox นะครับ
และในการหาค่าข้อมูลจาก Database ให้ใช้ตัวแปร ID เป็นตัวหาแทน Combobox1.Text ในการใส่ Command นะครับ

เช่น

Code: Select all

 Command = ("SELECT * FROM Customer Where " & ID)
ปล. เรื่อง Syntex ผมไม่แน่ใจนะครับ เพราะไม่ได้อยู่หน้าคอม แต่การทำงานของโค๊ดที่คุณต้องการก็จะประมาณนี้แหละครับ ลองเอาไปปรับใช้ดูนะครับ หวังว่าจะเป็นประโยชน์ครับ :D

Re: รบกวนอาจารย์ด้วยค่ะ มีปัญหาเรื่อง combobox ไปแสดงใน textboe

Posted: Thu Mar 23, 2017 4:12 pm
by aonraya
คือต้องนี้ดึงรหัสจากฐานข้อมูลแสดงรหัสได้แล้ว แต่ชื่อไม่มาใน textbox ไม่รู้จะทำยังไงค่ะ เพราะถ้ามีข้อมูลลูกค้าในระบบเพื่อทำการเบิก โดยการเลือกแค่รหัสของลูกค้าเราจะรู้ได้ยังว่ารหัสนั้นเป็นใคร จึงอยากให้ ชื่อแสดงใน textbox :roll: :roll: รบกวนช่วยหน่อยค่ะ :roll: :roll:

Re: รบกวนอาจารย์ด้วยค่ะ มีปัญหาเรื่อง combobox ไปแสดงใน textboe

Posted: Thu Mar 23, 2017 7:35 pm
by snasui
aonraya wrote:แนบไฟล์แล้วน่ะค่ะ รบกวนอาจาร์ยโดยน่ะค่ะ ขอบคุณค่ะ
Imports System.docx
:D ผมหมายถีงไฟล์ Project ตัดมาเฉพาะส่วนที่เกี่ยวข้องก็พอครับ

Re: รบกวนอาจารย์ด้วยค่ะ มีปัญหาเรื่อง combobox ไปแสดงใน textboe

Posted: Thu Mar 23, 2017 8:28 pm
by cheapache
อันดับแรกต้องสร้าง DataTable ขึ้นมาก่อนครับ เพื่อรับค่าที่เราอ่านมาจาก Database
และหลังจากเราสร้างเสร็จแล้ว ให้เราเช็คค่าที่ได้จาก Database แล้วนำมาใส่ใน Datatable แล้วนำมาแยกตัวแปรที่เราต้องการ
เช่น

Code: Select all

Public dt As DataTable = New DataTable

Dim myCom As String = "SELECT * FROM user_app WHERE username='" & txtUser.Text & "' and password='" & txtPass.Text & "';"

            SqlCom = New MySqlCommand(myCom, SqlConnection)

            Dim Reader As MySqlDataReader = SqlCom.ExecuteReader


            If Reader.HasRows Then

                SqlConnection.Close()

                SqlConnection.Open()

                Dim da As MySqlDataAdapter = New MySqlDataAdapter(myCom, SqlConnection)
                da.Fill(dt)

                For Each row As DataRow In dt.Rows
                    Fname = row("fname")
                    Sname = row("sname")
                    status = row("status")
                    If status = False Then
                        Branch = row("branch")
                    End If

                Next

ใน Code ส่วนนี้เป็นการยกตัวอย่างนะครับ แต่ส่วนสำคัญในการใช้งานคือ การสร้างตัวแปร Fname, Sanme เพื่อมารับค่าที่อยู่ในฟิลด์ของ Datatable โดยเปรียบเทียบจากชื่อฟิลด์ในฐานข้อมูลครับ

ถ้าคุณอยากได้ชื่อมาแสดงที่ Textbox1.Text คุณก็ทำดังนี้

Code: Select all

For Each row As DataRow in dt.Rows
		Textbox1.Text = row("xxxxx") '<<<< ใน xxx คือชื่อของคอลัมน์ที่คุณตั้งใน Database นะครับ
		Next
		
ถ้าจะเพิ่มส่วนอื่นๆ ก็เพิ่มคล้ายๆแบบนี้เลครับ หวังว่าจะเป็นประโยชน์นะครับ