تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] حول مشكلة توافق نوع البيانات عند الاستعلام في اكسل
#1
السلام عليكم ورحمة الله وبركاته
PHP كود :
       Dim arr(dgv1.SelectedRows.Count 1)
 
       Dim n As Integer 0
        For Each row 
As DataGridViewRow In dgv1.SelectedRows
            ReDim Preserve arr
(n)
 
           arr(n) = 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 ")"
        cm.Parameters.AddWithValue("@tid"x
PHP كود :
        If con.State ConnectionState.Closed Then con.Open() 
PHP كود :
        cm.ExecuteNonQuery() 
في حال اضفت الارقام بكود اضافة واستخدم الكود اعلاه تظهر رسالة مشكلة اختلاف البيانات اما لو اضفت ارقام بالاكسل يدويا لا تظهر المشكلة
وحتى لو اضفتها بالكود اذا فتحت الاكسل وحولت ما اضفت بالكود الى ارقام تزول المشكلة..
كود الاضافة
        cm.Parameters.AddWithValue("@tid", rowscount())
والدالة rowscount تعيد عدد صفوف السجلات
و المثال موجود بالموضوع.
المثال اللذي استخدم فيه الـoledb provider  وهو الملف باسم Phone_Book_Using_Excel_vbnet
زر حذف المحدد
ميزة التعامل مع مزودة قاعدة البيانات السرعة لكن تحويل النص الى int   لا يجدي نفعا 

انا متاكد اني لم ادخل نص ابدا فلابد ان هناك كود معين يحفظ الرقم بشكل صحيح.
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
الرد }}}
تم الشكر بواسطة:
#2
هذي محلولة من نفس الاكسل و جدت كثير من الناس نفس المشكلة


السؤال الان هو كيف نصيغ كود من الصفوف المحددة من الـ DataGridView  بحيث تكون بالنهاية شي هكذا:
PHP كود :
xlC1Sheet.Rows("10:19").delete() 
هذا سيحذف الصفوف من 10 الى 19 هل بالامكان التعديل عليه بحيث يحذف المحدد فقط؟
قد جربت الكود التالي فهو يقفز صف او صفين:
PHP كود :
       'Dim i As Integer
        '
For 0 To dgv1.Rows.Count 1
        
'    If dgv1.Rows(i).Selected = True Then
        ' 
       xlws.Rows(2).delete()
 
       '    End If
        '
Next 
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
الرد }}}
تم الشكر بواسطة:
#3
والكود التالي لا يحذف كل المحدد !!!
لم افهم مشكلته بعد
PHP كود :
For Each row As DataGridViewRow In dgv1.Rows
     Dim id 
As String row.Cells(0).Value
     
If row.IsNewRow False Then
         
If row.Selected Then
             xlws
.Rows(id).delete()
 
        End If
 
    End If
 
Next 
متغير الاي دي id هذا يحمل مفس رقم الصف في الاكسل لاني وضعت له قيمة =row() في العمود الاول عند كل اضافة بالكود
PHP كود :
xlws.Range("A" rowscount).Value "=row()" 
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
الرد }}}
تم الشكر بواسطة:
#4
المشكلة التي تواجهها تتعلق بتفسير Excel لأنواع البيانات عند إدخال الأرقام عن طريق الكود باستخدام OLEDB. عند إدخال البيانات يدوياً في 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.
غَزة شجرة سنديان لا تنحني، ووردة لا تذبل، وشوكة عصية على الكسر. غزة، دماؤها تنتصر على السيف والسياف.
متغيب لفترة ان اخطأت بحق احد ارجو المسامحة
الرد }}}
تم الشكر بواسطة: justforit , justforit
#5
حاولت فيها بكل الطرق لكن لابد من التصحيح من نفس الاكسل
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  استفسارات عن قواعد البيانات مبتدئ بوحمد 0 1,006 06-11-24, 10:15 AM
آخر رد: بوحمد
  [C#.NET] مشكلة في مجلد قاعدة البيانات kamel1978 3 679 06-10-24, 06:26 PM
آخر رد: Taha Okla
  ما هو كود معرفة نوع البيانات من اكسس؟ justforit 6 1,044 23-05-24, 08:22 AM
آخر رد: مصمم هاوي
Big Grin مشكلة لسه ماحدش جاوبني عليها cmd.excutenunquery Medo84 2 1,751 19-05-24, 12:03 PM
آخر رد: غزة العزة
  مشكلة فى الجريد فيو salah525 10 1,345 05-11-23, 08:15 PM
آخر رد: justforit
  مشكلة عند الاتصال ب sql server 2014 bassant 1 1,321 27-08-23, 12:26 PM
آخر رد: رضوان الجماعي
  [سؤال] عدم إظهار الصور مع النص فى Listview من قاعدة البيانات alims 2 2,031 27-08-23, 12:22 PM
آخر رد: رضوان الجماعي
  استفسار عن تخزين الوقت في قاعدة البيانات strongriseman 2 1,563 22-04-22, 07:27 PM
آخر رد: strongriseman
  [سؤال] مشكلة فى عرض الصورة من ادخل قاعدة البيانات alims 2 1,697 17-11-21, 10:09 AM
آخر رد: سعود
  استعلام يرجع اسماء الاعمدة و نوع البيانات في جدول معين بسام محمدغانم 0 1,283 23-10-21, 01:43 AM
آخر رد: بسام محمدغانم

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


يقوم بقرائة الموضوع: