19-05-24, 11:58 AM
المشكلة التي تواجهها تتعلق بتفسير Excel لأنواع البيانات عند إدخال الأرقام عن طريق الكود باستخدام OLEDB. عند إدخال البيانات يدوياً في Excel، يتم حفظها عادةً بالنوع الصحيح مباشرةً. ولكن عند إدخال البيانات برمجياً باستخدام OLEDB، قد يُحفظ النوع كـ "نص" بدلاً من "رقم" إذا لم يتم التعامل معه بشكل صحيح.
لحل هذه المشكلة، يمكنك التأكد من أن القيم المدخلة يتم تحويلها إلى النوع الصحيح عند الإضافة. يمكنك محاولة استخدام الدالة CInt أو CLng لتحويل القيم إلى أرقام قبل إدخالها في Excel.
إليك مثال على كيفية تعديل كود الإضافة للتحقق من نوع البيانات الصحيح:
أما بالنسبة لكود التحديث، تأكد من أن القيم المستخدمة في الشرط هي من النوع الصحيح أيضًا:
يجب أن تضمن أن كل قيمة تُضاف أو تُستخدم في الشروط يتم تحويلها إلى النوع الصحيح قبل استخدامها في SQL. هذا يحل مشكلة التوافق بين أنواع البيانات عند التعامل مع Excel باستخدام OLEDB.
لحل هذه المشكلة، يمكنك التأكد من أن القيم المدخلة يتم تحويلها إلى النوع الصحيح عند الإضافة. يمكنك محاولة استخدام الدالة CInt أو CLng لتحويل القيم إلى أرقام قبل إدخالها في Excel.
إليك مثال على كيفية تعديل كود الإضافة للتحقق من نوع البيانات الصحيح:
PHP كود :
' افترض أن لديك الاتصال مفتوح بالفعل وأن cmd هو كائن OleDbCommand
For Each row As DataGridViewRow In dgv1.SelectedRows
Dim id As Integer = CInt(row.Cells(0).Value) ' تحويل القيمة إلى عدد صحيح
cm.CommandText = "INSERT INTO [tb1$] (tid, tname, tphone, temail) VALUES (@tid, @tname, @tphone, @temail)"
cm.Parameters.Clear()
cm.Parameters.AddWithValue("@tid", id)
cm.Parameters.AddWithValue("@tname", row.Cells(1).Value.ToString())
cm.Parameters.AddWithValue("@tphone", row.Cells(2).Value.ToString())
cm.Parameters.AddWithValue("@temail", row.Cells(3).Value.ToString())
cm.ExecuteNonQuery()
Next
أما بالنسبة لكود التحديث، تأكد من أن القيم المستخدمة في الشرط هي من النوع الصحيح أيضًا:
PHP كود :
Dim arr(dgv1.SelectedRows.Count - 1) As Integer ' تأكد من تعريف المصفوفة كأعداد صحيحة
Dim n As Integer = 0
For Each row As DataGridViewRow In dgv1.SelectedRows
arr(n) = CInt(row.Cells(0).Value) ' تحويل القيمة إلى عدد صحيح
n += 1
Next
Dim ids As String = String.Join(",", arr)
cm.Parameters.Clear()
cm.CommandText = "UPDATE [tb1$] SET tid=null, tname=null, tphone=null, temail=null WHERE tid IN (" & ids & ")"
If con.State = ConnectionState.Closed Then con.Open()
cm.ExecuteNonQuery()
يجب أن تضمن أن كل قيمة تُضاف أو تُستخدم في الشروط يتم تحويلها إلى النوع الصحيح قبل استخدامها في SQL. هذا يحل مشكلة التوافق بين أنواع البيانات عند التعامل مع Excel باستخدام OLEDB.
غَزة شجرة سنديان لا تنحني، ووردة لا تذبل، وشوكة عصية على الكسر. غزة، دماؤها تنتصر على السيف والسياف.
متغيب لفترة ان اخطأت بحق احد ارجو المسامحة


