(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
