Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > .NET Framework > Forum > งง ครับ แก้มา15วันทำไมไม่ได้ ช่วยด้วยครับ datetimepicker ทำให้binding text ไม่ได้(หลังจากกรองข้อมูล)



 

งง ครับ แก้มา15วันทำไมไม่ได้ ช่วยด้วยครับ datetimepicker ทำให้binding text ไม่ได้(หลังจากกรองข้อมูล)

 



Topic : 046259



โพสกระทู้ ( 1 )
บทความ ( 0 )



สถานะออฟไลน์




โปรแกรมทำงานได้ครับ แต่เวลากดกรองข้อมูล ปรากฏว่า ข้อมูลที่binding กับtextbox ทุกตัวหายหมด (ลองตรวจสอบดูค่าของข้อมูล ใน datatable กรองได้ปรกติครับ) ปัญหาอยู่ที่ datetimepicker ครับเพราะลอง ไม่binding object :Bdatetimepicker1 กรองข้อมูลได้ปรกติครับ...งงมาก...โค๊ดครับ
ใครช่วยแก้ด้วยครับ มือใหม่ครับ
Code (VB.NET)
 'เชื่อมต่อกับฐานข้อมูล MS_Piyaphum6.mdb ด้วยคลาส OleDbConnection
    'ในที่นี้จะเก็บไฟล์ MS_Piyaphum6.mdb ไว้ที่พาธD:\MS_Piyaphum6 Soft\MS_Piyaphum6.mdb ซึ่งสามารถแก้ไขได้ใหม่ตามต้องการ
    ' Dim dbConn As OleDbConnection = New OleDbConnection( _
    ' "Provider=Microsoft.Jet.OLEDB.4.0; " & _
    ' "Data Source=D:\MS_Piyaphum6 Soft\MS_Piyaphum6.mdb")
    'เลือกข้อมูลจากเทเบิล Contacts ด้วยคลาส OleDbDataAdapter เพื่อนำมาสร้าง dataset
    'Dim dapter As OleDbDataAdapter = New OleDbDataAdapter( _
    ' "SELECT * FROM Contacts", dbconn) 'ไม่ใช้ไปสร้างที่formเพราะอยู่นี้ทำงานไม่ได้
    'ประกาศตัวแปรแทนออบเจ็คหรือ Instance จากคลาส OleDbCommandBuilder   
    Dim cmdBuilder As OleDbCommandBuilder
    'Dim dtSet As DataSet = New DataSet             'ประกาศตัวแปรแทนออบเจ็คหรือ Instance จากคลาส DataSet   ไม่ใช้ไปสร้างที่formเพราะอยู่นี้ทำงานไม่ได้
    Dim dtTable As DataTable                                 'ประกาศตัวแปรแทนออบเจ็คหรือ Instance จากคลาส DataTable
    Dim objCurrencyMgr As CurrencyManager   'ประกาศตัวแปรแทนออบเจ็คหรือ Instance จากคลาส CurrencyManager
    Dim currRecPos As Integer                                 'ประกาศตัวแปรเก็บตำแหน่งเรคอร์ดปัจจุบัน
    'ประกาศตัวแปรแสดงโหมดการทำงาน ถ้าอยู่ในโหมดเพิ่มเรคอร์ดจะมีค่าเป็น True ถ้าอยู่ในโหมดแก้ไขจะมีค่าเป็น False
    Dim addNewMode, editmode, savemode As Boolean
    Dim fdName As String                                           'ประกาศตัวแปรเก็บชื่อฟีลด์ในเทเบิล Contacts

    'Event Procedure เมื่อฟอร์มถูกโหลด
    Private Sub frmMain_Load(ByVal sender As System.Object, _
                                               ByVal e As System.EventArgs) Handles MyBase.Load

        dtAdapter.Fill(dtSet, "contacts")                                     'นำข้อมูลที่เลือกจากเทเบิล Contacts มาไว้ที่ dataset
        dtTable = dtSet.Tables("contacts")                              'ให้ตัวแปร dtTable แทนข้อมูลชุดแรกใน dataset ในที่นี้คือข้อมูลจากเทเบิล Contacts     
        'สร้างคำสั่ง InsertCommand, UpdateCommand และ DeleteCommand เพื่อใช้จัดการข้อมูลใน dataset
        cmdBuilder = New OleDbCommandBuilder(dtAdapter)
        EnabledReadWrite()
        objCurrencyMgr = CType(Me.BindingContext(dtSet, "contacts"), CurrencyManager) 'ให้ objCurrencyMgr แทนการทำงานร่วมกับ datatable,
        txtFName.DataBindings.Add("Text", dtSet, "contacts.Name")
        txtLName.DataBindings.Add(New Binding("Text", dtSet, "contacts.Surname"))
        txtAddr1.DataBindings.Add(New Binding("Text", dtSet, "contacts.Add1"))
        txtAddr2.DataBindings.Add(New Binding("Text", dtSet, "contacts.Add2"))
        txtDist.DataBindings.Add(New Binding("Text", dtSet, "contacts.District"))
        txtCity.DataBindings.Add(New Binding("Text", dtSet, "contacts.Province"))
        txtPosCode.DataBindings.Add(New Binding("Text", dtSet, "contacts.Postcal"))
        txtPhone.DataBindings.Add(New Binding("Text", dtSet, "contacts.Tel"))
        txtFax.DataBindings.Add(New Binding("Text", dtSet, "contacts.fax"))
        txtmobile1.DataBindings.Add(New Binding("Text", dtSet, "contacts.mobile1"))
        txtmobile2.DataBindings.Add(New Binding("Text", dtSet, "contacts.mobile2"))
        txtoffice_tel.DataBindings.Add(New Binding("Text", dtSet, "contacts.Office_Tel"))
        TxtRef.DataBindings.Add(New Binding("Text", dtSet, "contacts.refer"))
        txtEmail.DataBindings.Add(New Binding("Text", dtSet, "contacts.email"))
        txttittle.DataBindings.Add(New Binding("Text", dtSet, "contacts.Tittle")) '**************
        TxtNickname.DataBindings.Add(New Binding("Text", dtSet, "contacts.Nickname"))
        SexStatusShow(sender, e)    'เบียนเพิ่มเติมกำลังทดสอบ************
        Dim datecolumn As New DataColumn("contacts.Birthdate")
        datecolumn.AllowDBNull = True
        datecolumn.DataType = GetType(System.DateTime)
        BDatePicker1.DataBindings.Add(New Binding("value", dtSet, "contacts.Birthdate")) '****ปัญหาอยู่ที่ตรงนี้ถ้าbinding จะไม่สามารถกรองข้อมูลได้
        '(ตอนโหลดฟอร์มจะสามารถbindได้แต่กรองไม่ได้) -ข้อมูลตัวอื่นเพี้ยนด้วย
        AdjustPosition(sender, e)                              'แสดงตำแหน่งเรคอร์ดปัจจุบัน (เรคอร์ดที่กำลังแสดงข้อมูลบนฟอร์ม)
        'ให้โปรแกรมย่อย AdjustPosition ทำงาน เมื่อตัวชี้ตำแหน่งเรคอร์ดใน datatable เปลี่ยนไป 
        AddHandler objCurrencyMgr.PositionChanged, AddressOf AdjustPosition
        'ให้โปรแกรมย่อย AdjustPosition ทำงาน เมื่อคลิกปุ่ม Delete 
        AddHandler btnDelete.Click, AddressOf AdjustPosition
        'ให้โปรแกรมย่อย AdjustPosition ทำงาน เมื่อคลิกปุ่ม Cancel
        AddHandler btnCancel.Click, AddressOf AdjustPosition
        'ให้โปรแกรมย่อย AdjustPosition ทำงาน เมื่อคลิกปุ่ม Find  
        AddHandler btnFind.Click, AddressOf AdjustPosition
        'ให้โปรแกรมย่อย AdjustPosition ทำงาน เมื่อคลิกปุ่ม Filter
        AddHandler btnFilter.Click, AddressOf AdjustPosition
        DisabledReadWrite()                                     'ให้เท็กซ์บ็อกซ์ทั้งหมดแสดงข้อมูลแบบอ่านได้อย่างเดียว   
    End Sub
    Private Sub DTformatter(ByVal sender As System.Object, ByVal e As ConvertEventArgs)
        Dim b As Binding = CType(sender, Binding)
        If Not e.DesiredType Is GetType(DateTime) Then
            Return
        End If
        If e.Value.GetType Is GetType(System.DBNull) Then
            e.Value = CType("1/1/1800", System.DateTime)
        End If
    End Sub
    Private Sub DTParser(ByVal sender As System.Object, ByVal e As ConvertEventArgs)
        If Not e.DesiredType Is GetType(DateTime) Then
            Return
        End If
        If Not e.Value.GetType Is GetType(DateTime) Then
            Return
        End If
        Dim value As String = CType(e.Value, String)
        If value.Equals("1/1/1800") Then
            e.Value = System.DBNull.Value
        End If
    End Sub
    Public Sub objclearbind(ByVal sender As System.Object, ByVal e As System.EventArgs)
        txtFName.DataBindings.Clear()
        txtLName.DataBindings.Clear()
        txtAddr1.DataBindings.Clear()
        txtAddr2.DataBindings.Clear()
        txtDist.DataBindings.Clear()
        txtCity.DataBindings.Clear()
        txtPosCode.DataBindings.Clear()
        txtPhone.DataBindings.Clear()
        txtFax.DataBindings.Clear()
        txtmobile1.DataBindings.Clear()
        txtmobile2.DataBindings.Clear()
        txtoffice_tel.DataBindings.Clear()
        TxtRef.DataBindings.Clear()
        txtEmail.DataBindings.Clear()
        txttittle.DataBindings.Clear() '**************
        TxtNickname.DataBindings.Clear()
        BDatePicker1.DataBindings.Clear()
    End Sub
   'Event Procedure เมื่อคลิกปุ่มไอคอนกรองข้อมูล
    Private Sub btnFilter_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles btnFilter.Click
        If addNewMode Then
            Exit Sub                                                        'ถ้าอยู่ในโหมดการเพิ่มเรคอร์ดให้ออกจาก Procedure นี้
        ElseIf txtSearch.Text <> "" Then              'ถ้าอยู่ในโหมดแก้ไขเรคอร์ดและป้อนข้อมูลในช่อง "ค้นหา/กรองข้อมูล"
            ' ให้เลือกข้อมูลจากเทเบิล Contactsที่ตรงกับข้อมูลที่ต้องการกรอง********
            Dim queryString, txt As String
            queryString = "SELECT * FROM Contacts WHERE " & fdName & " LIKE  ?"
            Dim dtAdapter2 As OleDbDataAdapter = New OleDbDataAdapter
            Dim selectCMD As OleDbCommand = New OleDbCommand(queryString, dbconn)
            dtAdapter2.SelectCommand = selectCMD
            Dim Keyword As String = "%" & Trim(txtSearch.Text) & "%"
            Select Case fdName
                Case "Name"
                    selectCMD.Parameters.Add("@Name", OleDb.OleDbType.VarWChar, 20).Value = Keyword
                Case "Surname"
                    selectCMD.Parameters.Add("@SurName", OleDb.OleDbType.VarChar, 20).Value = Keyword
                Case "District"
                    selectCMD.Parameters.Add("@District", OleDb.OleDbType.Char, 10).Value = Keyword
                Case "Province"
                    selectCMD.Parameters.Add("@Province", OleDb.OleDbType.Char, 20).Value = Keyword
                Case "Postcal"
                    selectCMD.Parameters.Add("@Postcal", OleDb.OleDbType.Char, 10).Value = Keyword
                Case "Tel"
                    selectCMD.Parameters.Add(" @Tel", OleDb.OleDbType.Char, 15).Value = Keyword 'ผลเหมือนกับเขียนแบบcaseTel,email
                Case "email"
                    dtAdapter2.SelectCommand.Parameters.Add(" @Email", OleDb.OleDbType.Char, 25)
                    dtAdapter2.SelectCommand.Parameters("@Email").Value = Keyword
            End Select
            Try
                dtSet.Clear()
                dtTable.Clear()
                dtAdapter2.Fill(dtSet, "contacts")      'นำข้อมูลที่กรองจากเทเบิล Contacts มาไว้ที่ dataset**สำคัญต้องใส่ชือTable contactsด้วยมิฉนัน้จะไม่กรองข้อมูล
                dtTable = dtSet.Tables("contacts")                    'ให้ตัวแปร dtTable แทนข้อมูลที่ได้จากการกรอง 
                objCurrencyMgr = CType(Me.BindingContext(dtSet, "contacts"), CurrencyManager) 'ให้ objCurrencyMgr แทนการทำงานร่วมกับ datatable,
                Dim datecolumn As New DataColumn("contacts.Birthdate")
                datecolumn.AllowDBNull = True
                'ถ้าเป็น datatable ว่าง แสดงข้อความบอกให้ทราบ
                If dtTable.Rows.Count = 0 Then MessageBox.Show("ไม่พบข้อมูลที่ต้องการ ! ", "ผลการกรอง", _
                                   MessageBoxButtons.OK, MessageBoxIcon.Information)
                Dim Bdatebind As New Binding("value", dtSet, "contacts.Birthdate")
                AddHandler Bdatebind.Format, AddressOf DTformatter
                AddHandler Bdatebind.Parse, AddressOf DTParser
                objclearbind(sender, e)
                BDatePicker1.DataBindings.Add(Bdatebind)
                SexStatusShow(sender, e)
                txttittle.DataBindings.Add(New Binding("Text", dtSet, "contacts.Tittle")) '**************
            Catch er As Exception
                Picture.Image = Nothing
                MessageBox.Show(er.Message() & vbCrLf & er.StackTrace)
            Finally
                Dim c = objCurrencyMgr.Position 'ทดสอบค่าว่า objcurrencymgr ใช้ได้ครับ
                MessageBox.Show(txtFName.Text, "Warnning!", MessageBoxButtons.OK, MessageBoxIcon.Information) 'พบว่าtxtfirstname ในformไม่มีค่าที่binding
                MessageBox.Show(c, "Warnning!", MessageBoxButtons.OK, MessageBoxIcon.Information) 'ทดสอบค่าว่า objcurrencymgr ใช้ได้ครับ
                txt = dtTable.Rows(c).Item("name")
                MessageBox.Show(txt, "Warnning!", MessageBoxButtons.OK, MessageBoxIcon.Information) 'ทดสอบค่าว่า ในdataset,datable มีค่า ใช้ได้ครับ
                btnSave.Enabled = False
                btnAdd.Enabled = False
                btnDelete.Enabled = False
                btnEdit.Enabled = False
                btnCancel.Enabled = False
                btnFind.Enabled = False
            End Try
        End If
    End Sub

รูปภาพform ครับ
form main
รูปภาพdata ครับ
data structure



Tag : .NET, Ms Access, Win (Windows App), VB.NET, VS 2003 (.NET 1.1)







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-07-31 22:27:58 By : rakdi View : 1906 Reply : 1
 

 

No. 1



โพสกระทู้ ( 2 )
บทความ ( 0 )



สถานะออฟไลน์


ผมก็เกิดปัญหาเหมือนกัน

ของผมแก้อย่างนี้ครับ
แนวทาง

DateTimePicker1.DataBindings.Add("Text", bindingSrc, "DateAdd")

ให้ binding เป็น Text ครับ


ปล.ไม่มีคนตอบมา 8 ปี
ตอบน่าจะคนแรก






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-04-25 19:15:13 By : kicvong
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : งง ครับ แก้มา15วันทำไมไม่ได้ ช่วยด้วยครับ datetimepicker ทำให้binding text ไม่ได้(หลังจากกรองข้อมูล)
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่