تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مساعده فى فورم اضافه سجل جديد
#1
السلام عليكم و رحمة الله و بركاته
عند اضافه سجل جديد فى جدول bank اريد الحصول على عدد السجلات و يضيف 1 اذا كان لايوجد سجلات فكتبت التالى

كود :
كود :
       Dim getdate As New db_accountDataContext

       Dim maxid = Aggregate newid In getdate.banks Into Max(newid.bank_id)

       TxtBank_id.Text = maxid + 1



عدلت الكود ليصبح هكذا





كود :
كود :
       Dim getdata As New db_accountDataContext

       Dim b = From cors In getdata.banks Select cors

       Dim maxid = Aggregate newid In getdata.banks Into Max(newid.bank_id)


       If IsDBNull(b) Then
           TxtBank_id.Text = 1
       Else
           TxtBank_id.Text = maxid + 1
       End If

لكنه لايعمل



مرفق ملف ال فيجوال و الداتابيس من نوع سيكوال سيرفر 2008



[attachment=26225]مرفق ملف ال فيجوال و الداتابيس من نوع سيكوال سيرفر 2008
غيرت اسم الداتابيس فى المرفقات ليصبح s


الملفات المرفقة
.rar   New folder (4).rar (الحجم : 3.41 م ب / التحميلات : 12)
الرد }}}
تم الشكر بواسطة:
#2
السلام عليكم ورحمة الله وبركاته
اخي سلام 
هذا فنكشن يجلب قيمة الماكس ثم يضيف 1 
كود :
'-------------Function MaxID------------
Public function MaxID_Personal() as integer
Dim Maxid = (from P in DBcontext.Personals select P.Cv_Id).Max()
if Maxid = 0 Then
return Maxid = 1
Else
return Maxid + 1
End if
End Function

وفي بوتون جديد ننادي عليه بحيث يضع القيمة العائدة في مربع الايدي 
كود :
Txt_Cv_Id.Text = MaxId().ToString()
يبقى امر تعرفه وهو تغيير الاسماء للجدول والداتابيس ومربع نص اي دي
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
#3
شكرا اخ ابراهيم
سارفق لك المشروع  ارجو تعديله و تجربته لقد حاولت و لم اعرف المشروع عباره عن 2 فورم
فورم للعرض و فورم للاضافه[attachment=26235][attachment=26235]


الملفات المرفقة
.rar   New folder (4).rar (الحجم : 3.54 م ب / التحميلات : 7)
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو
#4
السلام عليكم ورحمة الله وبركاته
اخي سلام 
ضع هذا الفنكشن في فورم اضافة بنك ببدل الذي وضعته
كود :
   '-------------Function MaxID------------
   Public Function MaxID() As Integer
       Dim g As New sDataContext
       Dim b As New bank

       Dim Maxi = (From P In g.banks Select P.bank_id).Max()
       If Maxi = 0 Then
           Return Maxi = 1
       Else
           Return Maxi + 1
       End If
   End Function
واستبدل كود صب نيو بنك بالتالي
كود :
Public Sub newbank_id()

       TxtBank_id.Text = MaxID().ToString()
       TxtBank_name.Text = ""
       TxtBank_address.Text = ""
       Txtbank_swiftcode.Text = ""
       TxtBank_phone.Text = ""
       TxtBank_fax.Text = ""
       TxtBank_email.Text = ""
       TxtBank_webpage.Text = ""
       TxtBank_note.Text = ""
       CmbBank_user_id.Text = ""
       DtpBank_date.Value = Now.Date
       TxtBank_name.Select() 'ليضع مؤشر على التكستبوكس
   End Sub


وفي بوتون اضافة في الفورم الرئيسية نكتب هكذا
كود :
Dim frmbank_add_v As New Frmbank_add
       frmbank_add_v.newbank_id()
       frmbank_add_v.ShowDialog()
ثم اجعل الاقلاع للمشروع من القورم الرئيسية
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
#5
شكراااااااااااااااااا اخ ابراهيم يعمل بشكل جيد عند الاضافه
اما عند نقر زر حذف اول مره يعمل طبيعى اما عند تكرار الحذف اى حذف سجل ثانى  ثم النقر عل زر اعاده تحميل الذى فى الفورم الاساس فى التولبار
 يعطى error كما فى الصوره



سارفق لك المشروع  ارجو تعديله و تجربته لقد حاولت و لم اعرف
اضفت فورم للتعديل تاخذالبيانات المطلوب تعديلها من الفورم الاساس من الكنتولز المحاط بمستطيل اخضر فى الصوره السابقه و ضيفت الاسطر كم فى الصوره و لم تعمل

.rar   New folder (4).rar (الحجم : 3.76 م ب / التحميلات : 2)
الرد }}}
تم الشكر بواسطة: عبد العزيز البسكري
#6
السلام عليكم ورحمة الله وبركاته
اخي سلام 
في البداية اشد على يدك واشجعك في الاستمرار مع تقنية (LinQ) واتمنى من كل الاعضاء الانتقال اليها (وكما كان يقول اخوانا الكبيرين الاستاذ ابو ايهاب والاستاذ Khodor Shahimi ان تقنية ADO.net صارت من الماضي )
وهما ايضا من حفزاني في استخدام هذه التقنية جزاهما الله كل خير
بالنسبة لمشروعك وكود الحذف لماذا يعمل اول مرة ثم لايعمل في المرة الثانية ويعطي خطأ؟
السبب انه في المرة الاولى يمكنك تحديد اي سجل تريد حذفه بالضغط على صف من الداتاغرايد فيتم نقل البيانات الى مربعات النصوص ويتم الحذف بناء على الايدي الموجود في مربع الاي دي (وكذلك سيكون التعديل )  وبعد الحذف تبقى مرعات النصوص محتفظة ببيانات السجل الذي تم حذفه ولاتستطيع تحديد صف أخر ليتم نقل بياناته الى هذه المربعات لا اعلم اين المشكلة (لم ابحث عنها ) وعند اعطاء امر الحذف في المرة الثانية سيجد البرنامج الاي دي للصف الذي تم حذفه في المرة الاولى في مربع نص الاي دي وهذا راجع الى مشاكل BindingContax وعملية نقل السجل الى مربعات النصوص وحركة السجلات من اول وتالي وسابق واخير حيث لاتعمل  (لديك خربظة في هذا الجانب ولم اشأ الخوض في تفاصيل اكوادك وفضلت عمل مثال بنفس الجدول والمسميات للسهولة (بدون تعريب الاسماء)واضفت لك كود البحث بالاسم(انتبه للعربي والانكليزي)
الشيئ الاخر لاارى فائدة من اظهار فورم خاصة باضافة سجل جديد فجعلت المثال نافذة واحدة ...  تمعن في  طريقة العمل وطبقها في مشروعك
يبقى تغيير اسم السيرفر في ملف App.config  حيث سطر ConnectioString الى اسم السيرفر الذي عندك قبل تشغيل المثال
كود :
   connectionString="Data Source=[ضع اسم السيرفر هنا];Initial Catalog=S;Integrated Security=True"


الملفات المرفقة
.zip   SalamBank.zip (الحجم : 127.99 ك ب / التحميلات : 4)
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
تم الشكر بواسطة: سلام و محبه
#7
شكراااااااااااااااااا اخ ابراهيم يعمل بشكل جيد
لاحظت عند ضغط زر نيو و الداتاجريدفيو فارغ يعطى

فهل اكتب سطر معناه اذا كان عدد الصفوف = 0 يكون الزر enabled=false ام لها حل افضل
كيف اكتب كود معناه (اذا كان عدد الصفوف = 0)
_______________________________________________________________________________________________________________________________
استفسار آخر
يوجد اكثر من فورم كتبت فى class1 كود لتنسيق الفورم
كود :
Public Class Class1

   Public Sub FormatingOfForms()
       Frm_accounts.FormBorderStyle = FormBorderStyle.FixedToolWindow
       Frm_accounts.RightToLeft = RightToLeft.Yes
       Frm_accounts.StartPosition = FormStartPosition.CenterScreen
       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
       Frmbank.FormBorderStyle = FormBorderStyle.FixedToolWindow
       Frmbank.RightToLeft = RightToLeft.Yes
       Frmbank.StartPosition = FormStartPosition.CenterScreen
       '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

   End Sub

End Class
و فى اجراء  frmbank_load استدعيته
كود :
Public Class Frmbank

   Private Sub Frmbank_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       FormatingOfForms()
   End Sub
End Class
يضع خط ازرق تحت  FormatingOfForms()
________________________________________________________________________________________________________________________________________
استفسار ثالث
لماذا لم تستخدم التالى للحصول على max

كود :
       Dim getdata As New db_accountDataContext

       Dim b = From cors In getdata.banks Select cors

       Dim maxid = Aggregate newid In getdata.banks Into Max(newid.bank_id)

و استخدمت بدلها function

كود :
  '-------------Function MaxID------------
   Public Function MaxID_bank() As Integer
       Dim Maxid = (From B In DBcontext.banks Select B.bank_id).Max()
       If Maxid = 0 Then
           'Cleardata_bank()
           Return Maxid = 1
       Else
           Return Maxid + 1
       End If
   End Function

اسف على الاطاله
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو
#8
السلام عليكم ورحمة الله وبركاته
اخي سلام
بالنسبة لفنكشن الماكس معك حق حبث لم انتبه الى الفيمة (null)في حال كان الجدول فارغ
استبدل الفنكشن القديم  بالتالي
كود :
 '-------------Function MaxID------------
   Public Function MaxID_bank() As Integer
       Dim Count = (From B In DBcontext.banks Select B).Count() ' جلب عدد السجلات
       Dim Maxid As Integer
       If Count > 0 Then
           Maxid = (From B In DBcontext.banks Select B.bank_id).Max()
           Return Maxid + 1
       Else
           Maxid = 1
           Return Maxid
       End If
   End Function
اما بالنسبة لـ الكلاس الذي يحتوي على صب لتنسيق الفورم
يكفي كتابة تنسيق لفورم افتراضي مع باراميتر اسم الفورم  وعند الاستدعاء نكتب (Me) للدلالة على الفورم الحالي ولانكتب اسم الفورم 
اما لماذا وضع حط الخطأ فلانك لم تعرف اوبجكت من الكلاس فلم يتم التعرف اليه
في الكلاس اكتب هذا الصب
كود :
 Public Sub FormatingOfForms(Frm As Form)
       Frm.FormBorderStyle = FormBorderStyle.FixedToolWindow
       Frm.RightToLeft = RightToLeft.Yes
       Frm.StartPosition = FormStartPosition.CenterScreen
   End Sub
وفي كود الفورم بالاعلى عرف نسخة من الكلاس هكذا
كود :
Dim Cls As New Class1()
,وعند مناداة الصب من الكلاس  في حذث تحميل الفورم نكتب التالي
كود :
Cls.FormatingOfForms(Me)
اما لماذا لم استخدم الكود الذي ذكرت فهذا امر يعود الى طريقتي ومعرفتي بالكود
اتمنى ان اكون قد افدتك .... دمت بخير
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
تم الشكر بواسطة: سلام و محبه
#9
شكرا اخى ابراهيم
زر الحذف يعمل




حدث مشكله كما فى الصوره ما الحل
الرد }}}
تم الشكر بواسطة:
#10
إقتباس :اما لماذا لم استخدم الكود الذي ذكرت فهذا امر يعود الى طريقتي ومعرفتي بالكود

اتمنى ان اكون قد افدتك .... دمت بخير
linq له طريقتان فى كتابه الكود طريقه quary syntax و طريقه non quary syntax
ايهم طريقتك
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو



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


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