منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[سؤال] كود اظهار رساله في حال وجود الرقم في اكثر من عمود - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [سؤال] كود اظهار رساله في حال وجود الرقم في اكثر من عمود (/showthread.php?tid=47751)



كود اظهار رساله في حال وجود الرقم في اكثر من عمود - مبرمج صغير 1 - 02-01-24

السلام عليكم ورحمة الله وبركاته



لدي برنامج وضعت فيه خانة رقم الهوية الرئيسي (textbox) ووضعت فيه خانه اخري التابعين (textbox)



المطلوب

لو قمت ووضعت رقم هوية احد التابعين في خانة التابع وتم الحفظ



وبعد وقت اريد ان اضيف التابع في خانه رقم الهوية  الرئيسي 



اذا قمت وادخلت هوية التابع في الرئيسي 



اريد ان تظهر رساله الشخص موجود في قائمة التابعين للهوية الرئيسي رقم ....................

قاعدة البيانات اكسس



اتمني وصلت الفكرة 

هذا الكود للحفظ واضهار رساله اذا كان الرقم موجود مسبقا في الرئيسي فقط 

كود :
If connAccess2005.State = ConnectionState.Closed Then connAccess2005.Open()
       Dim cmd As New OleDbCommand("SELECT COUNT([idr]) FROM [tan]  WHERE [idr]=? ", connAccess2005)
       cmd.Parameters.AddWithValue("@", Val(txtidr.Text))
       If cmd.ExecuteScalar > 0 Then
           MsgBox("رقم الهوية مضاف مسبقا!", MsgBoxStyle.Exclamation, "تنبية!")
           Return

       End If
       Try
           Dim cmdinsert As New OleDbCommand("insert into tan (idr, idt ) values ('" & txtidr.Text & "','" & txtidt.Text & "')")
           cmdinsert.Connection = connAccess2005
           cmdinsert.ExecuteNonQuery()
       
   MsgBox("تم حفظ البيانات بنجاح")

 Catch ex As Exception
            MsgBox(ex.Message.ToString)
        End Try
        connAccess2005.Close()



RE: كود اظهار رساله في حال وجود الرقم في اكثر من عمود - تركي الحلواني - 03-01-24

كرر الإستعلام في جدول التابعين ان كان يوجد جدول منفصل
او اضف الشرط في عمود رقم التابعين
PHP كود :
Dim cmd As New OleDbCommand("SELECT COUNT([idr]) FROM [tan]  WHERE [idr]=?  and [IDCode]=?"connAccess2005



RE: كود اظهار رساله في حال وجود الرقم في اكثر من عمود - مبرمج صغير 1 - 04-01-24

اهلين اخ تركي

اتمني لو تحطه لي بمثال أكون لك من الشاكرين

مبتدئ بالبرمجة


RE: كود اظهار رساله في حال وجود الرقم في اكثر من عمود - مبرمج صغير 1 - 04-01-24



هذي صورة البرنامج المطلوب 



لما يتم ادخال الاسم الرئيسي والتابعين وحفظها 



لما يتم الحفظ ورجعت مره ثانية ابي اضيف التابع رئيسي يطلع لي رساله 



بأن صاحب هذه الهوية مضاف تابع للمستخدم الرئيسي صاحب الهويه ..............



اتمني وصلت الفكره 



البرنامج بالمرفقات للتعديل عليه 



RE: كود اظهار رساله في حال وجود الرقم في اكثر من عمود - HALIM ELEULMA - 06-01-24

يبدو أن الكود يقوم بالتحقق من وجود الرقم المُدخل في قاعدة البيانات قبل إدخاله، وإذا كان موجودًا، يُظهر رسالة تنبيه. الخطوة التالية هي إدخال البيانات في حالة عدم وجود الرقم.

ومن الجيد أنك تتحقق من الاتصال بقاعدة البيانات وتُغلقه بشكل صحيح. إليك تحسينات للكود

هذا الكود يقوم بإدخال البيانات إذا لم يتم العثور على الرقم في قاعدة البيانات، 
وإلا فإنه يُظهر رسالة تنبيه. يستخدم الكود استعلامات معلماتية (parameterized queries) 
للتعامل مع البيانات المدخلة، 
مما يساهم في تفادي ثغرات الأمان مثل هجمات حقن SQL (SQL injection).
PHP كود :
If connAccess2005.State ConnectionState.Closed Then connAccess2005.Open()
Try
 
   Dim cmd As New OleDbCommand("SELECT COUNT([idr]) FROM [tan] WHERE [idr]=?"connAccess2005)
 
   cmd.Parameters.AddWithValue("@idr"Val(txtidr.Text))
 
   Dim count As Integer Convert.ToInt32(cmd.ExecuteScalar())
 
   
    If count 
0 Then
        MsgBox
("رقم الهوية مضاف مسبقا!"MsgBoxStyle.Exclamation"تنبية!")
 
       Return
    End 
If

 
   Dim cmdinsert As New OleDbCommand("INSERT INTO tan (idr, idt) VALUES (?, ?)"connAccess2005)
 
   cmdinsert.Parameters.AddWithValue("@idr"txtidr.Text)
 
   cmdinsert.Parameters.AddWithValue("@idt"txtidt.Text)
 
   cmdinsert.ExecuteNonQuery()
 
   
    MsgBox
("تم حفظ البيانات بنجاح")
Catch 
ex As Exception
    MsgBox
(ex.Message.ToString())
Finally
 
   connAccess2005.Close()
End Try 

ولا تنسي الضغط علي شكر


RE: كود اظهار رساله في حال وجود الرقم في اكثر من عمود - مبرمج صغير 1 - 09-01-24

(06-01-24, 02:04 AM)HALIM ELEULMA كتب : يبدو أن الكود يقوم بالتحقق من وجود الرقم المُدخل في قاعدة البيانات قبل إدخاله، وإذا كان موجودًا، يُظهر رسالة تنبيه. الخطوة التالية هي إدخال البيانات في حالة عدم وجود الرقم.

ومن الجيد أنك تتحقق من الاتصال بقاعدة البيانات وتُغلقه بشكل صحيح. إليك تحسينات للكود

هذا الكود يقوم بإدخال البيانات إذا لم يتم العثور على الرقم في قاعدة البيانات، 
وإلا فإنه يُظهر رسالة تنبيه. يستخدم الكود استعلامات معلماتية (parameterized queries) 
للتعامل مع البيانات المدخلة، 
مما يساهم في تفادي ثغرات الأمان مثل هجمات حقن SQL (SQL injection).
PHP كود :
If connAccess2005.State ConnectionState.Closed Then connAccess2005.Open()
Try
 
   Dim cmd As New OleDbCommand("SELECT COUNT([idr]) FROM [tan] WHERE [idr]=?"connAccess2005)
 
   cmd.Parameters.AddWithValue("@idr"Val(txtidr.Text))
 
   Dim count As Integer Convert.ToInt32(cmd.ExecuteScalar())
 
   
    If count 
0 Then
        MsgBox
("رقم الهوية مضاف مسبقا!"MsgBoxStyle.Exclamation"تنبية!")
 
       Return
    End 
If

 
   Dim cmdinsert As New OleDbCommand("INSERT INTO tan (idr, idt) VALUES (?, ?)"connAccess2005)
 
   cmdinsert.Parameters.AddWithValue("@idr"txtidr.Text)
 
   cmdinsert.Parameters.AddWithValue("@idt"txtidt.Text)
 
   cmdinsert.ExecuteNonQuery()
 
   
    MsgBox
("تم حفظ البيانات بنجاح")
Catch 
ex As Exception
    MsgBox
(ex.Message.ToString())
Finally
 
   connAccess2005.Close()
End Try 

ولا تنسي الضغط علي شكر


اولا شاكر لمرورك وردك

الكود يحفظ معي فقط ولكن لايتم التدقيق في قاعدة البيانات هل الرقم موجود في التابعين ام لا

حفظ معاي وكرر الرقم في التابعين



RE: كود اظهار رساله في حال وجود الرقم في اكثر من عمود - Taha Okla - 09-01-24

- أولاً : عندما تعمل علاقة بين جدولين، يجب أن يكون بينهما حقل مشترك تتكرر البيانات فيه في كلا الجدولين (في أحدهما مرة على الأكثر) فإن وجِدَ الأول.. (تكرر في الثاني صفر مرة على الأقل(يعني قد لا يوجد وقد يوجد مرات كثيرة)).
- ثانياً : الجدولين عندك في قاعدة البيانات التي لديك لا يوجد بينهما حقل مشترك. 
- ثالثاً : أنت عملت علاقة بين حقلين مختلفين (هوية الرئيسي - وهوية التابع) وهذا خطأ مربع.
- رابعاً : عندما تعمل علاقة بين جدولين عليك الاستفادة من الاستعلامات الداخلية التي تضمنها ضمن قاعدة البيانات (وهذا أنت لم تفعله وربما لا تعرفه) فعليك الاطلاع أكثر على فيديوهات تعلم قواعد البيانات والعلاقات بين الجداول.
- خامساً : عندما تريد استخدام الجداول بشكل مباشر من مشروع برمجي (وليس الربط مع الاستعلامات على تلك الجداول) فمن الخطأ أن تعمل علاقة بين الجداول ضمن قاعدة البيانات، بل الربط يكون فقط في رأسك وتطبقه على الجداول من خلال الكود الذي أنت تضعه (فالكود سيتعامل مع الجدولين وكأنه يوجد علاقة مع أنها غير موجودة).

في هذا الموضع في الرابط : يوجد مشروع 
فيه مثال يشبه تقريباً مشروعك من حيث المطلوب برمجياً مع اختلاف المسميات
فيك الاستفادة منه- ركز على المشاركتين الثالثة والرابعة .. يعني (المشروع - ثم الكود الذي ستضعه في المشروع بدلاً من الموجود فيه، ) 
طريقة عمل المشروع بعد التعديل - مشابهة لما تريد من مشروعك أن يعمله
فيك الاطلاع على البلوكات الجاهزة التي تم إضافتها للمشروع  - للاستفادة منها في مشروعك.
نفس الكود ولكن يختلف عليك أن تعدل على الاستعلام فقط، بدلاً من الحذف تضع كود إضافة، وتعدل إستعلام كود التحقق بما يناسب مشروعك..
إذا أطلعت على المشروع وقرأت كوده خطوة خطوة وفهمته، ستحصل على كل ما تريد..