تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] مساعدة بخصوص كود الحفظ
#1
السلام عليكم ورحمة الله وبركاته 


انا حاولت اكتب كود الحفظ بطريقة مختلفة بحيث اقوم باضافة كل التكست بوك الى قاعدة البيانات مرة واحدة عن طريقة عملية loop لكن لم تنجح الطريقة 

من يمكنه مساعدتي في تعديل هذا الكود وجزاكم الله كل خير


كود :
       Try
           Dim sql = ("select * from Company_Details where Company_ID=N'" & (Company_ID.Text) & "'")
           Dim adp As New SqlClient.SqlDataAdapter(sql, sqlconn)
           Dim ds As New DataSet
           adp.Fill(ds)
           Dim dt = ds.Tables(0)
           If dt.Rows.Count > 0 Then
               Exit Sub
           Else
               Dim dr = dt.NewRow

               Dim CTL As New Control



               For i = 0 To Me.Controls.Count - 1


                   If TypeOf CTL.Controls(i) Is TextBox And dr.Item(dr!CTL.Name(i)) = Me.Controls(i).Name Then


                       dr.Item(dr!CTL.Name(i)) = Me.Controls(i).Text


                   End If
               Next


                       dt.Rows.Add(dr)
                       Dim cmd As New SqlClient.SqlCommandBuilder(adp)
                       adp.Update(dt)

                       MsgBox("تم حفظ بيانات الشركة بنجاح", MsgBoxStyle.Information, "رسالة تأكيد ")
                   End If

       Catch ex As Exception
           MessageBox.Show(ex.Message, "فشل في عملية الحفظ ", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly)
       End Try
الرد }}}
تم الشكر بواسطة:
#2
لماذا لا بوجد رد
الرد }}}
تم الشكر بواسطة:
#3
معقول ماحد عارف الحل ؟؟؟؟

وينكم يا جماعة
الرد }}}
تم الشكر بواسطة:
#4
Iam wating .....
الرد }}}
تم الشكر بواسطة:
#5
عنجد مش معقول من امبارح لليوم فش ولا رد على الاقل واحد يرد يقول ما بعرف 

لا حول ولا قوة الا بالله
الرد }}}
تم الشكر بواسطة:
#6
أهلاً أخي 

أعذر الجميع أكيد مشغولين .

الخطاء عندك في إستخدام هذا السطر
Dim CTL As New Control



هذا الكود بعد التعديل :
كود :
  Try
           Dim sql = ("select * from Company_Details where Company_ID=N'" & (Company_ID.Text) & "'")
           Dim adp As New SqlClient.SqlDataAdapter(sql, sqlconn)
           Dim ds As New DataSet
           adp.Fill(ds)
           Dim dt = ds.Tables(0)
           If dt.Rows.Count > 0 Then
               Exit Sub
           Else
               Dim dr = dt.NewRow

               '----------------------------------------------------------------------------------------
               For Each Ctrl In Me.FindAllChildren
                   If TypeOf Ctrl Is TextBox And dt.Columns.Contains(Ctrl.Name) Then
                       dr.Item(Ctrl.Name) = Ctrl.Text
                   End If
               Next
               '----------------------------------------------------------------------------------------


               dt.Rows.Add(dr)
               'Dim cmd As New SqlClient.SqlCommandBuilder(adp)
               adp.Update(dt)


               MsgBox("تم حفظ بيانات الشركة بنجاح", MsgBoxStyle.Information, "رسالة تأكيد ")
           End If

       Catch ex As Exception
           MessageBox.Show(ex.Message, "فشل في عملية الحفظ ", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly)
       End Try



لا تنسى إضافة هذا الـ Module في ملف آخر أو في أسفل وخارج الـ Class الخاص بالـ Form :
وظيفتة يرجع جميع عناصر التحكم ( الـ Controls ) الموجودة في النافذة , ( بالطريقة التي إستخدمتها أنت لن يتم إرجاع إلا الـ TopLevel أبناء النافذة فقط , وأي أبناء لعنصر مختلف مثل الـ Panel لن يتم إرجاعهم )
كود :
Public Module ExtensionModule
   <Runtime.CompilerServices.Extension()>
   Public Function FindAllChildren(ByRef StartingContainer As System.Windows.Forms.Control) As List(Of System.Windows.Forms.Control)
       Dim Children As New List(Of System.Windows.Forms.Control)

       If StartingContainer.HasChildren = False Then
           Return Nothing
       Else
           Dim oControl As System.Windows.Forms.Control
           For Each oControl In StartingContainer.Controls
               Children.Add(oControl)
               If oControl.HasChildren Then
                   Children.AddRange(oControl.FindAllChildren())
               End If
           Next
       End If

       Return Children
   End Function
End Module




جرب وأخبرني لأني لا أستطيع إختبار الكود .
الرد }}}
تم الشكر بواسطة: ay.alhaj , rnmr , عبد العزيز البسكري , elgokr
#7
شكرا لك اخي الفاضل وجزاك الله عني كل خير

تم بنجاح
الرد }}}
#8
أهلاً وسهلاً بك ay.alhaj
الرد }}}
تم الشكر بواسطة: ay.alhaj , elgokr
#9
الامور شغالة مية بالمية 

بس في استفسار بسيط انا عندي صورة وبحفظها في قاعدة البيانات بعد التشفير طبقت الكود على الصورة ما زبطت 

لانه ما بعتبر الصورة control

شو الحل بعد اذنك 


وسؤال اخر ما فائدة اول سطر في functionfunction 

وهل يمكن تغيير function ليتناسب مع الكلاس 

بعد اذنك طبعا
الرد }}}
تم الشكر بواسطة:
#10
(03-10-18, 07:36 AM)ay.alhaj كتب : الامور شغالة مية بالمية 

بس في استفسار بسيط انا عندي صورة وبحفظها في قاعدة البيانات بعد التشفير طبقت الكود على الصورة ما زبطت 

لانه ما بعتبر الصورة control

شو الحل بعد اذنك 


وسؤال اخر ما فائدة اول سطر في functionfunction 

وهل يمكن تغيير function ليتناسب مع الكلاس 

بعد اذنك طبعا




لم أفهم أبداً عن ماذا تتحدث ... 
بعد التشفير : لا أعرف ماذا تعني بالتشفير ؟
طبقت الكود على الصورة : أي كود ؟
لانه ما بعتبر الصورة control : الصورة ليست كنترول !!! ( وإذا عندك PictuerBox يعرض الصورة , إذاً هذا هو الكنترول الذي يحمل قيمة الصورة في خصائصة )

إشرح أكثر وأرفق أي كود يساعد على فهم الأمر .
الرد }}}
تم الشكر بواسطة: elgokr



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


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