السلام عليكم ورحمة الله وبركاته
لدي برنامج وضعت فيه خانة رقم الهوية الرئيسي (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()
كرر الإستعلام في جدول التابعين ان كان يوجد جدول منفصل
او اضف الشرط في عمود رقم التابعين
PHP كود :
Dim cmd As New OleDbCommand("SELECT COUNT([idr]) FROM [tan] WHERE [idr]=? and [IDCode]=?", connAccess2005)
اهلين اخ تركي
اتمني لو تحطه لي بمثال أكون لك من الشاكرين
مبتدئ بالبرمجة
هذي صورة البرنامج المطلوب
لما يتم ادخال الاسم الرئيسي والتابعين وحفظها
لما يتم الحفظ ورجعت مره ثانية ابي اضيف التابع رئيسي يطلع لي رساله
بأن صاحب هذه الهوية مضاف تابع للمستخدم الرئيسي صاحب الهويه ..............
اتمني وصلت الفكره
البرنامج بالمرفقات للتعديل عليه
يبدو أن الكود يقوم بالتحقق من وجود الرقم المُدخل في قاعدة البيانات قبل إدخاله، وإذا كان موجودًا، يُظهر رسالة تنبيه. الخطوة التالية هي إدخال البيانات في حالة عدم وجود الرقم.
ومن الجيد أنك تتحقق من الاتصال بقاعدة البيانات وتُغلقه بشكل صحيح. إليك تحسينات للكود
هذا الكود يقوم بإدخال البيانات إذا لم يتم العثور على الرقم في قاعدة البيانات،
وإلا فإنه يُظهر رسالة تنبيه. يستخدم الكود استعلامات معلماتية (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
ولا تنسي الضغط علي شكر
(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
ولا تنسي الضغط علي شكر
اولا شاكر لمرورك وردك
الكود يحفظ معي فقط ولكن لايتم التدقيق في قاعدة البيانات هل الرقم موجود في التابعين ام لا
حفظ معاي وكرر الرقم في التابعين
- أولاً : عندما تعمل علاقة بين جدولين، يجب أن يكون بينهما حقل مشترك تتكرر البيانات فيه في كلا الجدولين (في أحدهما مرة على الأكثر) فإن وجِدَ الأول.. (تكرر في الثاني صفر مرة على الأقل(يعني قد لا يوجد وقد يوجد مرات كثيرة)).
- ثانياً : الجدولين عندك في قاعدة البيانات التي لديك لا يوجد بينهما حقل مشترك.
- ثالثاً : أنت عملت علاقة بين حقلين مختلفين (هوية الرئيسي - وهوية التابع) وهذا خطأ مربع.
- رابعاً : عندما تعمل علاقة بين جدولين عليك الاستفادة من الاستعلامات الداخلية التي تضمنها ضمن قاعدة البيانات (وهذا أنت لم تفعله وربما لا تعرفه) فعليك الاطلاع أكثر على فيديوهات تعلم قواعد البيانات والعلاقات بين الجداول.
- خامساً : عندما تريد استخدام الجداول بشكل مباشر من مشروع برمجي (وليس الربط مع الاستعلامات على تلك الجداول) فمن الخطأ أن تعمل علاقة بين الجداول ضمن قاعدة البيانات، بل الربط يكون فقط في رأسك وتطبقه على الجداول من خلال الكود الذي أنت تضعه (فالكود سيتعامل مع الجدولين وكأنه يوجد علاقة مع أنها غير موجودة).
في هذا الموضع في
الرابط : يوجد مشروع
فيه مثال يشبه تقريباً مشروعك من حيث المطلوب برمجياً مع اختلاف المسميات
فيك الاستفادة منه- ركز على المشاركتين الثالثة والرابعة .. يعني (المشروع - ثم الكود الذي ستضعه في المشروع بدلاً من الموجود فيه، )
طريقة عمل المشروع بعد التعديل - مشابهة لما تريد من مشروعك أن يعمله
فيك الاطلاع على البلوكات الجاهزة التي تم إضافتها للمشروع - للاستفادة منها في مشروعك.
نفس الكود ولكن يختلف عليك أن تعدل على الاستعلام فقط، بدلاً من الحذف تضع كود إضافة، وتعدل إستعلام كود التحقق بما يناسب مشروعك..
إذا أطلعت على المشروع وقرأت كوده خطوة خطوة وفهمته، ستحصل على كل ما تريد..