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,037

HOME > .NET Framework > Forum > ได้สร้างdatagridview 2ตาราง(ที่เคยถามตอนนั้นมีdatagridviewเดียวและอัพเดทได้ทันทีแล้ว)อยู่ในฟอร์มเดียว ซึ่งdatagridview1 เป็นtable และ datagridview2 เป็นquery ปัญหาคือ datagridview2(query) ไม่อัพเดททันที แต่ในdatabase มันอัพเดทแล้ว



 

ได้สร้างdatagridview 2ตาราง(ที่เคยถามตอนนั้นมีdatagridviewเดียวและอัพเดทได้ทันทีแล้ว)อยู่ในฟอร์มเดียว ซึ่งdatagridview1 เป็นtable และ datagridview2 เป็นquery ปัญหาคือ datagridview2(query) ไม่อัพเดททันที แต่ในdatabase มันอัพเดทแล้ว

 



Topic : 118126



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



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




ได้สร้างdatagridview 2ตาราง(ที่เคยถามตอนนั้นมีdatagridviewเดียวและอัพเดทได้ทันทีแล้ว)อยู่ในฟอร์มเดียว ซึ่งdatagridview1 เป็นtable และ datagridview2 เป็นquery ปัญหาคือ datagridview2(query) ไม่อัพเดททันที แต่ในdatabase มันอัพเดทแล้ว

ซึ่งข้อมูลที่จะแสดงในdatagridview ต้องเลือกradiobutton
โดย datagridview1 เป็นtableที่รับค่าจากtextbox ใส่ในคอลัมquality
ส่วน datagridview2เป็น queryที่รับค่าจากtableในคอลัมquality

1.ปัญหาคือ datagridview1(table)พอรับค่าจากtextboxแล้วกดบันทึก มันอัพเดททันที
แต่ datagridview2(query) ไม่อัพเดททันที แต่ในdatabase มันอัพเดทแล้ว


2.เนื่องจากdatagridviewทั้ง2 ตาราง นำข้อมูลจากคนละไฟล์มาโชว์ ดังนั้นพวก da da ds ควรใช้ด้วยกันหรือแยกกันใช้

ปล.นำradiobuttonอันเดียวมาโชว์เพราะลองทำดูก่อน ถ้าได้เดี๋ยวที่เหลือก็จะได้

Code (VB.NET)
Imports System.Data.OleDb
Imports System.Data
Public Class Form1
    Dim con As New OleDbConnection
    Dim da As New OleDbDataAdapter
    Dim ds As New DataSet
    Dim dt As New DataTable
    Dim inttype As Integer

    Dim dwvet As New DataView
    Dim dwfru As New DataView
    Dim dwsee As New DataView
    
    Private Sub InitialControl()
        'กำหนดค่าเริ่มต้นของคอนโทรล
        radvet.Checked = False
        radfru.Checked = False
        radsee.Checked = False

        '********************
        txt1.Text = ""

        '***โค้ดเพิ่มเติมจากเดิม*****
        rad1.Checked = False
        rad2.Checked = False

        txt1.Enabled = False
        txt1.Text = ""
        txt2.Enabled = False
        txt2.Text = ""

        '********************
        txt2.Text = ""  


    End Sub


    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        InitialControl()    'เรียกโปรแกรมย่อยสำหรับกำหนดค่าเริ่มต้น

        'คิวรี่ฐานข้อมูล (ใช้รูปแบบการเชื่อมต่อแบบ Disconnect กับฐานข้อมูล )
        'โดยใช้การคิวรี่ข้อมูลแล้ว เก็บค่าไว้ในดาต้าเซต 
        'ถ้าเป็นการเชื่อมต่อแบบ Connect กับฐานข้อมูล จำต้องมีการ Open และ Close การเชื่อมต่อฐานข้อมูล

        con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\admim\Documents\ฐานข้อมูล5.accdb"
        con.Open()
        ds.Tables.Add(dt)
        da = New OleDbDataAdapter("SELECT * FROM Tb_Need", con)
        da.Fill(dt)

        

        
    End Sub

    Private Sub radvet_CheckedChanged(sender As Object, e As EventArgs) Handles radvet.CheckedChanged

        Try
           
            'ถ้าเลือกผัก ตัวแปร inttype มีค่าเป็น 1
            If radvet.Checked = True Then
                inttype = 1
                radfru.Checked = False
                radsee.Checked = False


                '*****โค้ดส่วนเพ่ิ่มเติม********
                'ใช้ Datview เป็นตัวมากรองการแสดง โดยรับข้อมูลทั้งหมดมาจาก ดาต้าเทเบิ้ลที่ชื่อ ds 
                'เลือกเฉพาะข้อมูลที่มี Type = 1 แล้วให้เรียงตัวตัวอักษรตามฟิล ID  ที่อยู่ในฐานช้อมูล
                DataGridView1.DataSource = Nothing
                dwvet = New DataView(ds.Tables(0), "need_type = 1", "ID", DataViewRowState.CurrentRows)
                DataGridView1.DataSource = dwvet 'เลือกเฉพาะข้อมูลที่มี need_type = 1 แล้วให้เรียงตัวตัวอักษรตามฟิล ID  ที่อยู่ในฐานช้อมูล

                DataGridView1.Columns(0).Visible = False
                DataGridView1.Columns(1).Visible = True
                DataGridView1.Columns(2).Visible = True
                DataGridView1.Columns(3).Visible = True
                DataGridView1.Columns(4).Visible = True
                DataGridView1.Columns(5).Visible = True
                DataGridView1.Columns(6).Visible = True
                DataGridView1.Columns.Item(1).Width = 150
                DataGridView1.Columns.Item(2).Width = 70
                DataGridView1.Columns.Item(3).Width = 105
                DataGridView1.Columns.Item(4).Width = 70
                DataGridView1.Columns.Item(5).Width = 70
                DataGridView1.Columns.Item(6).Width = 90


            End If

            If Not con.State = ConnectionState.Open Then
                con.Open()
            End If

            Dim da As New OleDbDataAdapter
            Dim dt As New DataTable
            da = New OleDbDataAdapter("SELECT * FROM Purchase1", con)
            da.Fill(dt)

            DataGridView2.DataSource = dt.DefaultView

            DataGridView2.Columns(0).Visible = True
            DataGridView2.Columns(1).Visible = True
            DataGridView2.Columns(2).Visible = False
            DataGridView2.Columns(3).Visible = True
            DataGridView2.Columns(4).Visible = True
            DataGridView2.Columns(5).Visible = True
            DataGridView2.Columns(6).Visible = True
            DataGridView2.Columns(7).Visible = False
            DataGridView2.Columns(8).Visible = False
            DataGridView2.Columns(9).Visible = False
            DataGridView2.Columns.Item(0).Width = 150
            DataGridView2.Columns.Item(1).Width = 100
            DataGridView2.Columns.Item(3).Width = 80
            DataGridView2.Columns.Item(4).Width = 100
            DataGridView2.Columns.Item(5).Width = 100
            DataGridView2.Columns.Item(6).Width = 100

            con.Close()

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        Finally
        End Try

    End Sub


    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        'สร้างตัวแปรเพื่อเก็บค่าจำนวนจากการป้อน
        Dim intFillQuantity As Integer = 0

        '*******ตรวจสอบว่าได้ป้อนจำนวนหรือไม่ ถ้าไม่ได้ป้อนแสดงคำเตือน
        
        If txt1.Enabled = True Then
            If txt1.Text = "" Then
                MessageBox.Show("กรุณากรอกจำนวนลงในช่อง")
                Return
            Else
                intFillQuantity = CInt(txt1.Text)
            End If
        End If

        If txt2.Enabled = True Then
            If txt2.Text = "" Then
                MessageBox.Show("กรุณากรอกจำนวนลงในช่อง")
                Return
            Else
                intFillQuantity = CInt(txt2.Text)
            End If
        End If

       

        '*******ค้นหาตำแหน่งของประเภทที่เลือกไว้ในหน้าโปรแกรม ถ้าตรงกับเลขในดาต้าเทเบิ้ล ให้ใส่ค่าที่ป้อนลงในคอลัมน์ qua
        For Each dr As DataRow In dt.Rows
            If inttype = dr("need_type") Then
                dr("quanlity") = intFillQuantity

                dr("Need") = CInt(dr("quanlity")) * CInt(dr("constant"))
            End If
        Next

        'คำสั่งในการอัพเดทข้อมูลในดาต้าเซต ไปยังฐานข้อมูล (ตัว OleDbCommandBuilder จะทำให้อัตโนมัติ)
        Dim cb As New OleDbCommandBuilder(da)

        da.Update(ds.Tables(0))
        'ให้ตาต้าเซ็ตเกิดการเปลี่ยนแปลง  ทำให้มีผลกับข้อมูลใน Datagridview ของเรา เปลี่ยนแปลงไปด้วย
        ds.AcceptChanges()
        MessageBox.Show("บันทึกข้อมูลเรียบร้อยแล้ว")

    End Sub





Tag : .NET, Ms Access, VS 2012 (.NET 4.x)









ประวัติการแก้ไข
2015-08-02 11:06:03
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2015-07-31 09:23:55 By : peemes101 View : 1202 Reply : 1
 

 

No. 1



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



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


ช่วยดูให้หน่อย






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-08-02 11:08:10 By : peemes101
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ได้สร้างdatagridview 2ตาราง(ที่เคยถามตอนนั้นมีdatagridviewเดียวและอัพเดทได้ทันทีแล้ว)อยู่ในฟอร์มเดียว ซึ่งdatagridview1 เป็นtable และ datagridview2 เป็นquery ปัญหาคือ datagridview2(query) ไม่อัพเดททันที แต่ในdatabase มันอัพเดทแล้ว
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 04
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 อัตราราคา คลิกที่นี่