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 ลงฐานข้อมูล Database หลาย ๆ แถวพร้อมกัน ครับ



 

ต้องการบันทึกข้อมูลจาก DataGridView ลงฐานข้อมูล Database หลาย ๆ แถวพร้อมกัน ครับ

 



Topic : 065762



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



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




ต้องการบันทึกข้อมูลจาก Datagrid ลงฐานข้อมูลหลายๆแถวพร้อมกัน ครับ

code Vb.net

Code (VB.NET)
Private Sub BtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSave.Click
       
        strsql = "insert into OrderDetail(OrderID,ProductID,NumberOrder,UnitID,Weight,UnitWeightID,Driver,RegisDriver) values(@OrderId,@ProductID,@ProductName,@NumberOrder,@UnitID,@Weight,@UnitWeightID,@Driver,@RegisDriver)"
        objCmd = New System.Data.SqlClient.SqlCommand(strsql, DbConn)
        For i As Integer = 0 To DataGridOrder.RowCount - 1
            If Not DataGridOrder.Rows(i).IsNewRow Then
                With objCmd
                    .Parameters.Add(New SqlParameter("@OrderId", orderID.Text))
                    .Parameters.Add(New SqlParameter("@ProductID", DataGridOrder.Rows(i).Cells(0).Value))
                    .Parameters.Add(New SqlParameter("@NumberOrder", DataGridOrder.Rows(i).Cells(1).Value))
                    .Parameters.Add(New SqlParameter("@UnitId", DataGridOrder.Rows(i).Cells(2).Value))
                    .Parameters.Add(New SqlParameter("@Weight", DataGridOrder.Rows(i).Cells(3).Value))
                    .Parameters.Add(New SqlParameter("@UnitWeightID", DataGridOrder.Rows(i).Cells(4).Value))
                    .Parameters.Add(New SqlParameter("@Driver", Driver.Text))
                    .Parameters.Add(New SqlParameter("@RegisDriver", RegisDriver.Text))
                End With
            End If
        Next
        objCmd.ExecuteNonQuery()
        MessageBox.Show("บันทึกข้อมูลแล้ว")
        DbConn.Close()
        DataGridOrder.Rows.Clear()
    End Sub



มันสามารถเพิ่มได้แค่ทีละแถว ถ้าเพิ่มข้อมูล 2 แถวมันจะ Error

Code
The variable name '@OrderId' has already been declared. Variable names must be unique within a query batch or stored procedure.


ฐานข้อมูล Sql Server 2008
table orderDetail
OrderID ---PK
ProductID ---PK
NumberOrder
UnitID
Weight
UnitWeight
Driver
RegisDriver

จะเขียนเพิ่มยังไงให้สามารถ บันทึกจาก DataGrid ได้หลายๆแถวครับ



Tag : .NET, Ms SQL Server 2008, Win (Windows App), VB.NET, VS 2010 (.NET 4.x)







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2011-09-01 17:07:31 By : sniper View : 17006 Reply : 13
 

 

No. 1



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



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


เอา objCmd.ExecuteNonQuery() ไปไว้ข้างใน For ป่ะผมคิดว่าตรงนี้นะ เอาไว้ก่อน Next








ประวัติการแก้ไข
2011-09-01 18:08:50
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-01 18:07:47 By : Cyg
 


 

No. 2



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

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

คือมันซ้ำน่ะครับ คุณส่ง Parameter ซ้ำครับ เพราะ Loop มันส่งซ้ำ ๆ หรือไม่ก็ให้ Clear หรือไม่ก็ New ใหม่ครับ

Code (VB.NET)
objCmd.Parameters.Clear()


Code (VB.NET)
Private Sub BtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSave.Click
       
        strsql = "insert into OrderDetail(OrderID,ProductID,NumberOrder,UnitID,Weight,UnitWeightID,Driver,RegisDriver) values(@OrderId,@ProductID,@ProductName,@NumberOrder,@UnitID,@Weight,@UnitWeightID,@Driver,@RegisDriver)"
        objCmd = New System.Data.SqlClient.SqlCommand(strsql, DbConn)
        For i As Integer = 0 To DataGridOrder.RowCount - 1
            If Not DataGridOrder.Rows(i).IsNewRow Then
                With objCmd
                    .Parameters.Add(New SqlParameter("@OrderId", orderID.Text))
                    .Parameters.Add(New SqlParameter("@ProductID", DataGridOrder.Rows(i).Cells(0).Value))
                    .Parameters.Add(New SqlParameter("@NumberOrder", DataGridOrder.Rows(i).Cells(1).Value))
                    .Parameters.Add(New SqlParameter("@UnitId", DataGridOrder.Rows(i).Cells(2).Value))
                    .Parameters.Add(New SqlParameter("@Weight", DataGridOrder.Rows(i).Cells(3).Value))
                    .Parameters.Add(New SqlParameter("@UnitWeightID", DataGridOrder.Rows(i).Cells(4).Value))
                    .Parameters.Add(New SqlParameter("@Driver", Driver.Text))
                    .Parameters.Add(New SqlParameter("@RegisDriver", RegisDriver.Text))
                End With
		objCmd.ExecuteNonQuery()
		objCmd.Parameters.Clear()
            End If
        Next
        
        MessageBox.Show("บันทึกข้อมูลแล้ว")
        DbConn.Close()
End Sub


หรือ

Code (VB.NET)
Private Sub BtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSave.Click
       
        strsql = "insert into OrderDetail(OrderID,ProductID,NumberOrder,UnitID,Weight,UnitWeightID,Driver,RegisDriver) values(@OrderId,@ProductID,@ProductName,@NumberOrder,@UnitID,@Weight,@UnitWeightID,@Driver,@RegisDriver)"
        
        For i As Integer = 0 To DataGridOrder.RowCount - 1
            If Not DataGridOrder.Rows(i).IsNewRow Then
		objCmd = New System.Data.SqlClient.SqlCommand(strsql, DbConn)
                With objCmd
                    .Parameters.Add(New SqlParameter("@OrderId", orderID.Text))
                    .Parameters.Add(New SqlParameter("@ProductID", DataGridOrder.Rows(i).Cells(0).Value))
                    .Parameters.Add(New SqlParameter("@NumberOrder", DataGridOrder.Rows(i).Cells(1).Value))
                    .Parameters.Add(New SqlParameter("@UnitId", DataGridOrder.Rows(i).Cells(2).Value))
                    .Parameters.Add(New SqlParameter("@Weight", DataGridOrder.Rows(i).Cells(3).Value))
                    .Parameters.Add(New SqlParameter("@UnitWeightID", DataGridOrder.Rows(i).Cells(4).Value))
                    .Parameters.Add(New SqlParameter("@Driver", Driver.Text))
                    .Parameters.Add(New SqlParameter("@RegisDriver", RegisDriver.Text))
                End With
		objCmd.ExecuteNonQuery()
            End If
        Next
        
        MessageBox.Show("บันทึกข้อมูลแล้ว")
        DbConn.Close()
        DataGridOrder.Rows.Clear()
    End Sub

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-01 21:24:26 By : webmaster
 

 

No. 3



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



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

รบกวนถามนิดนึงนะคะว่า ก่อนที่จะเขียน code ด้านบนเนี่ย ต้องทำฐานข้อมูล แล้วก็สร้าง table ขึ้นมารองรับก่อนรึเปล่าคะ หรือว่าพอพิมคำสั่ง ด้านบนแล้ว มันจะสร้าง table ให้เลยคะ ??
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-07 11:29:06 By : nUnGnInG_ReScUe
 


 

No. 4



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



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


คำสั่ง insert เป็นการเพิ่มข้อมูลลงฐานข้อมูล
ถ้าไม่มีฐานข้อมูลจะเพิ่มยังไงหว่า
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-07 11:37:54 By : m
 


 

No. 5



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



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

แหะๆ ขอบคุณค่ะ ^^
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-07 14:37:55 By : nUnGnInG_ReScUe
 


 

No. 6

Guest


ขอบคุณมากครับ ผม อ่านแล้วเอามาประยุต ใช้ ได้ผล และได้ความรู้มากมายครับ ขอบคุณทุกท่าน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-11-29 10:45:56 By : โปรแกรมเมอร์ มือสมัครเล่น
 


 

No. 7

Guest


*****

รบกวนถามนิดนึงนะคะว่า ก่อนที่จะเขียน code ด้านบนเนี่ย ต้องทำฐานข้อมูล แล้วก็สร้าง table ขึ้นมารองรับก่อนรึเปล่าคะ หรือว่าพอพิมคำสั่ง ด้านบนแล้ว มันจะสร้าง table ให้เลยคะ ??


*****


โดยทั่วฯไป เราจะเห็น SourceCode ประกอบเพื่อให้เข้าใจ และใช้งานจริงฯ ไม่ได้ มันเป็นอย่างนี้จริงฯ 1, 2, 3, 4, 5, ..., Infinity

แต่คำถามนี้มันกลับกัน Infinity, ..., 5, 4, 3, 2, 1 มันทำได้ครับ และใช้งานได้จริงฯ และถูกต้องเสมอ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-11-29 11:33:48 By : ผ่านมา
 


 

No. 8

Guest


แหะๆ ขอบคุณค่ะ ^^

หนู ถาม/โดยเข้า/ไม่เข้าใจ มันเป็นสิ่งที่ถูกต้องแล้วครับ และผมก็ยึดแนวทางแบบนี้

จริงฯแล้วมันคือ Dynamic Table/Field
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-11-29 11:41:18 By : ผ่านมา
 


 

No. 9

Guest


ช่วยดูให้หน่อยได้ไหมค่ะ พอรันแล้วมันบอกว่า คุณละเมิดข้อจำกัด คีย์หลัก อยากรู้ว่ามันเปนเพราะอะไรค่ะ


Code (VB.NET)
If myCon.State = ConnectionState.Open Then
            myCon.Close()
        End If
        myCon.ConnectionString = strConn
        myCon.Open()
        strSql = "Insert Into  employees (emp_id,emp_name,emp_address,emp_phone,emp_gender,Status,Username,Password) values(@id,@emp_name,@emp_address,@emp_phone,@emp_gender,@Status,@Username,@Password)"
        objCmd = New System.Data.SqlClient.SqlCommand(strSql, myCon)

        For i As Integer = 0 To dgvEmp.RowCount - 1
            If Not dgvEmp.Rows(i).IsNewRow Then
                objCmd = New System.Data.SqlClient.SqlCommand(strSql, myCon)

                With objCmd
                    .Parameters.Add(New SqlParameter("@id", txtId.Text))
                    .Parameters.Add(New SqlParameter("@emp_name", dgvEmp.Rows(i).Cells(0).Value))
                    .Parameters.Add(New SqlParameter("@emp_address", dgvEmp.Rows(i).Cells(1).Value))
                    .Parameters.Add(New SqlParameter("@emp_phone", dgvEmp.Rows(i).Cells(2).Value))
                    .Parameters.Add(New SqlParameter("@emp_gender", dgvEmp.Rows(i).Cells(3).Value))
                    .Parameters.Add(New SqlParameter("@Status", dgvEmp.Rows(i).Cells(4).Value))
                    .Parameters.Add(New SqlParameter("@Username", dgvEmp.Rows(i).Cells(5).Value))
                    .Parameters.Add(New SqlParameter("@Password", dgvEmp.Rows(i).Cells(6).Value))
                End With
                objCmd.ExecuteNonQuery()
            End If
        Next
        MessageBox.Show("บันทึกข้อมุลแล้ว")
        myCon.Close()
        dgvEmp.Rows.Clear()

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


 

No. 10

Guest


Quote:
Code (VB.NET)

Imports System.Data.SqlClient
Public Class Form1
    Public employee_ID As String
    Dim AddItemValue As New List(Of keypair)
    '  Dim AddItemDate As New List(Of keypair)
    Dim gender As String                                                '
    ' Dim vardate As String




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

    End Sub

    Private Sub setddGender()
        AddItemValue.Add(New keypair("ชาย", "M"))
        AddItemValue.Add(New keypair("หญิง", "F"))

        For Each AddItemValues As keypair In AddItemValue
            ComboBox1.Items.Add(AddItemValues.Name)
        Next
    End Sub

    Private Sub ctrecord_Click(sender As Object, e As EventArgs) Handles ctrecord.Click
        Dim Con As New conn()
        Dim strCon As New SqlConnection(Con.strConn)
        strCon.Open()
        Dim datadate As String = ""


        Dim Conm As New SqlCommand("insemployee_data", strCon)
        Conm.CommandType = CommandType.StoredProcedure
        Conm.Parameters.Add("@employee", SqlDbType.VarChar, 50).Value = TextBox1.Text.Trim
        Conm.Parameters.Add("@name", SqlDbType.VarChar, 100).Value = TextBox2.Text.Trim
        Conm.Parameters.Add("@startdate", SqlDbType.VarChar).Value = DateTimePicker1.Text.Trim
        Conm.Parameters.Add("@department", SqlDbType.VarChar, 50).Value = TextBox3.Text.Trim
        Conm.Parameters.Add("@sex", SqlDbType.VarChar, 50).Value = ComboBox1
        Conm.Parameters.Add("@phon", SqlDbType.VarChar, 50).Value = TextBox4.Text.Trim


        Conm.ExecuteNonQuery()
        strCon.Close()
        clear_text()
        viewemployee.Show()
    End Sub
    Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
        Dim SelectedText As String = ComboBox1.Items(ComboBox1.SelectedIndex).ToString
        For Each AddItemValues As keypair In AddItemValue
            If SelectedText = AddItemValues.Name Then
                gender = AddItemValues.KeyName

            End If
        Next
    End Sub
    Private Sub clear_text()
        TextBox1.Text = ""
        TextBox2.Text = ""
        TextBox3.Text = ""
        TextBox4.Text = ""
        DateTimePicker1.Text = ""
        ComboBox1.Text = ""

    End Sub

    Private Sub LinkLabel1_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
        viewemployee.Show()

    End Sub
End Class


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-07-24 11:06:12 By : กนกวรรณ หมั่นกิจ
 


 

No. 11



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



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

ตอบความคิดเห็นที่ : 9 เขียนโดย : onjira เมื่อวันที่ 2015-02-27 14:14:10
รายละเอียดของการตอบ ::
.Parameters.Add(New SqlParameter("@id", txtId.Text))

txtId.Text มันซ้ำอยู่ที่ค่าเดิมรึป่าวครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-07-25 08:01:53 By : lamaka.tor
 


 

No. 12

Guest


ขอเป็น c# หน่อยครับพรีสสสส
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-04-10 09:22:29 By : pongsakorn
 


 

No. 13



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



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


ผมใช้วิธีนี้ครับ
'//////////////// สำหรับการแสดงผลใน datagrid ครับ
Dim sqlstr As String = "SELECT * FROM Table"
Dim cs As New SqlConnection

Dim adp as SqlDataAdapter
adp = New SqlDataAdapter(sqlstr, cs)
adp.Fill(ds, "tablename")
adp.FillSchema(ds, SchemaType.Source, "tablename")
Me.DataGridView1.DataSource = ds
Me.DataGridView1.DataMember = "tablename"

'////////////// สำหรับ update ข้อมูลจาก datagrid ลง database ครับ ตอบสนองต่อ event ที่ต้องการนะครับ
Dim cmdbuilder As New SqlCommandBuilder(adp)
Dim i As Integer
Try
i = adp.Update(ds, "tablename")
MsgBox("Records Updated= " & i)
Catch ex As Exception
MsgBox(ex.Message)
End Try

ลองดูนะครับ ไม่รู้ช่วยได้แค่ไหนนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-07-06 22:44:57 By : khasri
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ต้องการบันทึกข้อมูลจาก DataGridView ลงฐานข้อมูล 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 02
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 อัตราราคา คลิกที่นี่