تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] كود استيراد الاصناف من البرنامج الى الاكسيل
#4
(14-07-24, 03:38 PM)تركي الحلواني كتب : أرجو توفير جميع البيانات
عدد الاعمدة في الاكسل
واسم الجدول والحقول في قاعدة البيانات
وما هي الاعمدة المطلوب جلبها وحفظها

شكرا لردك السريع ياغالي 

Sql Server 2014 
Visual 2019

عدد الاعمدة في الاكسل:
15 صف الاكسيل عند الاستيراد من الداتا جريد 
 
واسم الجدول والحقول في قاعدة البيانات:
Item_Tbl

Item_ID int
ItemBarcode nvarchar(50) 
ItemNameA nvarchar(250) 
ItemNameE nvarchar(250) 
Cat_ID int 
Unit_ID int 
OpenStock int 
ItemLimit int 
Is_Buy_Tax bit 
Buy_Tax_Value decimal(18, 1) 
BuyPrice_NoTax decimal(18, 2) 
Buy_TaxTotal decimal(18, 2) 
BuyPrice_WithTax decimal(18, 2) 
Is_Sale_Tax bit 
Sale_Tax_Value decimal(18, 1) 
SalePrice_NoTax decimal(18, 2) 
Sale_TaxTotal decimal(18, 2) 
SalePrice_WithTax decimal(18, 2) 
Rbh decimal(18, 2) 
Item_Pic image 
Item_Status bit 
Is_Exp bit 
Is_Quick_Item bit

(14-07-24, 09:03 PM)Kamil كتب : وعليكم السلام ورحمة الله وبركاته

لحفظ الأصناف من DataGridView إلى قاعدة بيانات SQL Server في VB.NET، يمكنك اتباع الخطوات التالية:

استخراج البيانات من DataGridView:

قم بقراءة كل صف من DataGridView واستخراج البيانات.
الاتصال بقاعدة البيانات:

قم بإنشاء اتصال بقاعدة البيانات باستخدام SqlConnection.
تنفيذ عملية الإدخال:

قم بإعداد أمر SQL لإدخال البيانات في قاعدة البيانات باستخدام SqlCommand.
تكرار العملية لكل صف:

قم بتنفيذ أمر الإدخال لكل صف من DataGridView.
إليك مثال على كيفية تنفيذ هذه الخطوات:



PHP كود :
Imports System.Data.SqlClient

Private Sub SaveDataGridViewToDatabase()
 
   ' نص الاتصال بقاعدة البيانات
    Dim connectionString As String = "Data Source=YourServerName;Initial Catalog=YourDatabaseName;Integrated Security=True"

    ' 
إنشاء الاتصال بقاعدة البيانات
    Using connection 
As New SqlConnection(connectionString)
 
       ' فتح الاتصال
        connection.Open()

        ' 
بدء المعاملة
        Dim transaction 
As SqlTransaction connection.BeginTransaction()

 
       Try
            
' إعداد أمر الإدخال
            Dim insertCommand As New SqlCommand("INSERT INTO YourTableName (Column1, Column2, Column3) VALUES (@Column1, @Column2, @Column3)", connection, transaction)

            ' 
إضافة المعاملات لأمر الإدخال
            insertCommand
.Parameters.Add("@Column1"SqlDbType.VarChar)
 
           insertCommand.Parameters.Add("@Column2"SqlDbType.VarChar)
 
           insertCommand.Parameters.Add("@Column3"SqlDbType.Int)

 
           ' قراءة البيانات من DataGridView
            For Each row As DataGridViewRow In DataGridView1.Rows
                If Not row.IsNewRow Then
                    ' 
تعيين القيم للمعاملات
                    insertCommand
.Parameters("@Column1").Value row.Cells("Column1").Value.ToString()
 
                   insertCommand.Parameters("@Column2").Value row.Cells("Column2").Value.ToString()
 
                   insertCommand.Parameters("@Column3").Value Convert.ToInt32(row.Cells("Column3").Value)

 
                   ' تنفيذ أمر الإدخال
                    insertCommand.ExecuteNonQuery()
                End If
            Next

            ' 
تأكيد المعاملة
            transaction
.Commit()

 
           MessageBox.Show("Data saved successfully!")
 
       Catch ex As Exception
            
' إذا حدث خطأ، التراجع عن المعاملة
            transaction.Rollback()
            MessageBox.Show("An error occurred: " & ex.Message)
        End Try
    End Using
End Sub 

تأكد من تعديل أسماء الأعمدة (Column1, Column2, Column3) وأسماء الجدول (YourTableName) والاتصال (YourServerName, YourDatabaseName) بما يتناسب مع إعداداتك الخاصة.


بهذا الكود، يمكنك استيراد البيانات من Excel إلى DataGridView، ثم حفظها في قاعدة البيانات باستخدام زر يقوم باستدعاء الدالة SaveDataGridViewToDatabas

شكرا لك يا طيب 

ولكن هذ الكود ما اشتغل معايا للاسف 
هذا الكود الي انا شغال عليه :

Imports ExcelDataReader

Imports System.Data.SqlClient

Imports System.IO

Imports Microsoft.Office.Interop



Public Class Frm_Insert_Items

    Public Shared Sub SaveGridToExcel(ByVal DGV As DataGridView) ' صب نسخ من الجريد لإكسل

        Try

            Dim XCELAPP As Microsoft.Office.Interop.Excel.Application = Nothing

            Dim XWORKBOOK As Microsoft.Office.Interop.Excel.Workbook = Nothing

            Dim XSHEET As Microsoft.Office.Interop.Excel.Worksheet = Nothing

            Dim misValue As Object = System.Reflection.Missing.Value

            If DGV.Rows.Count > 0 Then

                Dim filename As String = ""

                Dim SV As New SaveFileDialog()

                SV.Filter = "Excel Files|*.xlsx|Excel 2003|*.xls"



                If SV.ShowDialog = DialogResult.OK Then

                    If DGV.RightToLeft = RightToLeft.Yes Then

                        DGV.RightToLeft = False 'تغيير اتجاه الجريد من اليمين لليسار لكي لا ينسخ بالمقلوب

                        filename = SV.FileName

                        Dim multiselect As Boolean = DGV.MultiSelect

                        DGV.MultiSelect = True

                        DGV.SelectAll()

                        DGV.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText

                        Clipboard.SetDataObject(DGV.GetClipboardContent())

                        Dim results = System.Convert.ToString(Clipboard.GetData(DataFormats.Text))

                        DGV.ClearSelection()

                        DGV.MultiSelect = multiselect

                        DGV.RightToLeft = RightToLeft.Yes ' ارجاع اتجاه الجريد لليمين

                        XCELAPP = New Excel.Application()

                        XWORKBOOK = XCELAPP.Workbooks.Add(misValue)

                        XCELAPP.DisplayAlerts = False

                        XCELAPP.Visible = False

                        XSHEET = XWORKBOOK.ActiveSheet

                        XSHEET.DisplayRightToLeft = True

                        XSHEET.PasteSpecial(RightToLeft.Yes)

                        XWORKBOOK.SaveAs(filename, Excel.XlFileFormat.xlOpenXMLWorkbook)

                        XWORKBOOK.Close(False)

                        XCELAPP.Quit()

                    Else

                        filename = SV.FileName

                        Dim multiselect As Boolean = DGV.MultiSelect

                        DGV.MultiSelect = True

                        DGV.SelectAll()

                        DGV.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText

                        Clipboard.SetDataObject(DGV.GetClipboardContent())

                        Dim results = System.Convert.ToString(Clipboard.GetData(DataFormats.Text))

                        DGV.ClearSelection()

                        DGV.MultiSelect = multiselect

                        XCELAPP = New Excel.Application()

                        XWORKBOOK = XCELAPP.Workbooks.Add(misValue)

                        XCELAPP.DisplayAlerts = False

                        XCELAPP.Visible = False

                        XSHEET = XWORKBOOK.ActiveSheet

                        XSHEET.Paste()

                        XWORKBOOK.SaveAs(filename, Excel.XlFileFormat.xlOpenXMLWorkbook)

                        XWORKBOOK.Close(False)

                        XCELAPP.Quit()

                    End If



                    If MessageBox.Show("هل تريد فتح الملف ؟", "فتح ملف الأكسل", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading) = MsgBoxResult.Yes Then

                        Process.Start(SV.FileName)

                    End If

                    Try

                        System.Runtime.InteropServices.Marshal.ReleaseComObject(XSHEET)

                        System.Runtime.InteropServices.Marshal.ReleaseComObject(XWORKBOOK)

                        System.Runtime.InteropServices.Marshal.ReleaseComObject(XCELAPP)

                    Catch

                    End Try

                End If

            End If



        Catch ex As Exception

            MessageBox.Show(ex.ToString)

        End Try

    End Sub



    Private Sub BTN_EXCEL_COPY_Click(sender As Object, e As EventArgs) Handles BTN_EXCEL_COPY.Click

        SaveGridToExcel(Dgv)

    End Sub



    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

        Try ' استيراد من الإكسل

            Dgv.Rows.Clear()

            Dim OFD As New OpenFileDialog

            OFD.Filter = "Excel Files|*.xlsx|Excel 2003|*.xls"

            OFD.Title = (" استيراد البيانات من الورقة الأولى من السطر الثاني في ملف الإكسل")

            If OFD.ShowDialog = Windows.Forms.DialogResult.OK Then

                BTN_EXCEL_COPY.Text = "يرجى الانتظار"

                BTN_EXCEL_COPY.BackColor = Color.Tomato

                BTN_EXCEL_COPY.Enabled = False

                Dgv.DataSource = Nothing

                Dim PATH_ As String = OFD.FileName



                Dim COUNT_ As Integer = 0 'تعريف متغير للوب

                If Dt.Rows.Count > 0 Then

                    Dgv.RowCount = Dt.Rows.Count + 1 ' مهم جدا عدد الاسطر في الداتاجريد تساوي عدد الاسطر في الداتاتيبل ويضيف سطر

                    For I As Integer = 0 To Dt.Rows.Count - 1 ' تعبئة الداتاجريد بحيث يمر على الداتا تيبل بلوب

                        Dgv.Rows(COUNT_).Cells(3).Value = Dt.Rows(I)(0).ToString

                        Dgv.Rows(COUNT_).Cells(4).Value = Dt.Rows(I)(1).ToString

                        'Dgv.Rows(COUNT_).Cells(5).Value = DT.Rows(I)(2).ToString

                        'Dgv.Rows(COUNT_).Cells(6).Value = DT.Rows(I)(3).ToString

                        'Dgv.Rows(COUNT_).Cells(7).Value = DT.Rows(I)(4).ToString

                        'Dgv.Rows(COUNT_).Cells(8).Value = DT.Rows(I)(5).ToString

                        'Dgv.Rows(COUNT_).Cells(9).Value = DT.Rows(I)(6).ToString

                        'Dgv.Rows(COUNT_).Cells(10).Value = DT.Rows(I)(7).ToString

                        'Dgv.Rows(COUNT_).Cells(11).Value = DT.Rows(I)(8).ToString

                        'Dgv.Rows(COUNT_).Cells(12).Value = DT.Rows(I)(9).ToString

                        'Dgv.Rows(COUNT_).Cells(13).Value = DT.Rows(I)(10).ToString

                        'Dgv.Rows(COUNT_).Cells(14).Value = DT.Rows(I)(11).ToString

                        'Dgv.Rows(COUNT_).Cells(15).Value = DT.Rows(I)(12).ToString

                        'Dgv.Rows(COUNT_).Cells(16).Value = DT.Rows(I)(13).ToString

                        'Dgv.Rows(COUNT_).Cells(17).Value = DT.Rows(I)(14).ToString

                        'Dgv.Rows(COUNT_).Cells(18).Value = DT.Rows(I)(15).ToString

                        'Dgv.Rows(COUNT_).Cells(19).Value = DT.Rows(I)(16).ToString

                        'Dgv.Rows(COUNT_).Cells(20).Value = DT.Rows(I)(17).ToString

                        COUNT_ += 1 ' بما أنه بدأ من السطر0 نزيده واحد في كل لوب

                    Next

                End If



            Else

                End

            End If

            BTN_EXCEL_COPY.Text = "استيراد من إكسل"

            BTN_EXCEL_COPY.Enabled = True

            BTN_EXCEL_COPY.BackColor = Color.Transparent

        Catch ex As Exception

            MessageBox.Show(ex.ToString)

        End Try



    End Sub
End Class


الرد }}}
تم الشكر بواسطة:


الردود في هذا الموضوع
RE: كود استيراد الاصناف من البرنامج الى الاكسيل - بواسطة Hamza8484 - 15-07-24, 12:08 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  لماذا البرنامج يتوقف بدل عرض رسالة الخطأ justforit 0 109 07-12-25, 10:22 AM
آخر رد: justforit
  كيفية حفظ إعدادات البرنامج بحيث لا تتغير أحمد إبراهيم سعد 4 3,006 06-08-25, 06:34 PM
آخر رد: Taha Okla
  [سؤال] تغيير الفورم الرئيسي عند تشغيل البرنامج في Visual Studio مع .NET 8؟ silverlord 2 659 09-03-25, 03:52 AM
آخر رد: silverlord
Rainbow [VB.NET] عدد من هم فاتحي البرنامج محمد مسافر 1 421 25-02-25, 07:58 PM
آخر رد: princelovelorn
  مساعدة في استيراد البيانات من الليست بوكس fireswored1 4 485 22-01-25, 08:43 PM
آخر رد: fireswored1
  [Acces2010] مساعدة في كود استيراد يانات fireswored1 9 599 02-01-25, 03:25 AM
آخر رد: fireswored1
  استفسار عن حمايه البرنامج ahmedramy 1 559 25-12-24, 11:07 PM
آخر رد: aljzazy
  مساعدة في عمل جملة الاتصال في ملف خارج البرنامج Emam emam 2 392 25-11-24, 09:24 PM
آخر رد: Emam emam
  تغيير مكان حفظ الصورة من قاعدة البيانات إلى مجلد في مسار البرنامج F.H.M 37 2,378 05-11-24, 08:30 AM
آخر رد: F.H.M
  [مثال] تشغيل البرنامج كمسؤول alswade 2 468 30-10-24, 07:08 PM
آخر رد: aliday03

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم