الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مساعدة فى اظهار رسالة للمستخدم

بدأه shosho842000 في 7 أكتوبر 2010 · 3 رد · 610 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

سؤالى هو اظهار رساله للمستخدم بعدم وجود الادارة المراد الاستعلام عليها

 If cn.State = ConnectionState.Open Then cn.Close()
            cn.Open()
            cmd.Connection = cn
            cmd.CommandType = CommandType.StoredProcedure
            cmd.Parameters.Clear()
            cmd.CommandText = "selectsome"
            cmd.Parameters.Add("@dept_id", SqlDbType.Int).Value = TextBox1.Text
            tb.Clear()
            tb.Load(cmd.ExecuteReader)
            DataGridView1.Columns(0).Visible = False

يعنى لو دخل ادارة مش موجودة يظهر رساله ان هذه الادرة ليست موجودة

وشكرا

#2

الاخت الفاضلة شوشو ..

الصراحة السؤال مبهم لانني لا اعرف ماذا تقصدين بادارة غير موجودة .؟؟

يعني هل هي بالاصل مخزونة عندك مجموعة اسماء وعندما يريد المستخدم ان يدخل بيانات في حالة عدم وجود تلك الادارة تظهر له تأكد من اسم الادارة ؟؟

اذا كان كذلك لي عدة مقترحات ..

1- ان لا يكون الخزن من قبل TextBox وانما من قبل ComboBox والسبب لانك بالاساس ستجعلين المستخدم متقيد باسماء محددة يختار التي يريد وهنا ستتجاوزين مسالة اختبار والتي من الممكن ان تؤخر المستخدم ..

يعني بدلا من ان يكتب خطأ ثم يمسح ويرجع ليكتب مرة اخرى الاسم الصحيح .. اصلا هو لن يحتاج سوى لقائمة منسدلة تظهر له كافة الاسماء ثم بعد ذلك يخزن ما اختاره ..

اذا خدمك هذا الاقتراح .. التغيير على الكود بسيط .. وهو سيكون على جزء الاستقبال بدلا من TextBox1 سيتقبل من ComboBox1

استبدال السطر التالي :

cmd.Parameters.Add("@dept_id", SqlDbType.Int).Value = TextBox1.Text

بالسطر التالي :

cmd.Parameters.Add("@dept_id", SqlDbType.Int).Value = ComboBox1.Text

2- اذا لم يخدمك المقترح السابق من الممكن ان نستخدم ما هو دائم الارتباط مع اليات الحذف والخزن من القاعدة .. وهي التقاط رسائل النظام وهي الية Try Catch End Try ... كالتالي :

Try

If cn.State = ConnectionState.Open Then cn.Close() 
            cn.Open() 
            cmd.Connection = cn 
            cmd.CommandType = CommandType.StoredProcedure 
            cmd.Parameters.Clear() 
            cmd.CommandText = "selectsome" 
            cmd.Parameters.Add("@dept_id", SqlDbType.Int).Value = TextBox1.Text 
            tb.Clear() 
            tb.Load(cmd.ExecuteReader) 
            DataGridView1.Columns(0).Visible = False

Catch ex As Exception
MsgBox ( ex.Message)

End Try

في هذه السطرين

Catch ex As Exception
MsgBox ( ex.Message)

قمت بالتقاط ما قد حدث من خطأ في ما لو اي من الاسطر التي بينها وبين Try قد حدث فيها خطا غير متوقع من المستخدم للنظام .. . فان هذه السطرين ستطبع هذه الرسالة على المستخدم كرسالة تنبيه .. .

مثلا .. ادخل نص بدلا من رقم .. او العكس .. او قام بادخال بيانات غير مصرح بها ..

3- من الممكن ان نقوم بخزن الاسماء المقترحة في مجال معين .. مثل لائحة List او مصفوفة او جدول او اي طريقة .. ونقارن هل القيمة المدخلة في TextBox1 ( اي البحث فيها ) موجودة في هذه اللائحة ؟؟

اذا نعم .. استمر .. اذا لا .. توقف واضهر الرسالة ::

وانا هنا انصحك بالدرس التالي الذي قد كتبته قبل شهر تقريبا ...

ومن خلاله ممكن ان نضيف جدول خارجي يحتوي على اسماء الادارات الممكنة فقط .. ونضيفها الى ComboBox وعندما يكتب المستخدم اختياره يتم حصر ما كتب فقط والبحث عنه وبذلك ندمج بين اقتراحي الاول (1) مع ما تريدين من خلال TextBox..

المقالة :

درس: البحث والعرض التلقائي في الComboBox مع قاعدة البيانات

الصراحة وحسب رأيي الشخصي هذه هي افضل الحلول .. وارشح الحل الاخير فهو سيعطي طابع جميل للنظام المطلوب .. وايضا طريقة سهلة للحل ..

اتمنى ان اكون قد وفقت في توصيل ما اريد .. وانه ذا فائدة لك وللجميع ..

تحياتي العطرة..

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#3

شكرا على الرد

ولكنى اقوم باضفه اسم الادارة من خلال datagrid بحيث انه يعرض له اسماء الادارات فى datagrid ويوجد textbox هذه يتم استخدامه فى البحث اذا وجد الادارة يتم اظهارها واذا لم يتم الحصول عليها يتم اظهار الرساله

الكود المستخدم فى المشاركه الاولى وشكرا

يوجد سؤال اخر عند البحث بالاسم لا يعمل مع خلال هذا الكود

SELECT * from tran1 where name like '@name%'

يعنى لما استخدم الطريقة دى الاسماء لا يتم عرضها ولكن عند استبدال like بمعامل = يتم اظهاره لماذا

سؤال اخر برضه

[code If cn.State = ConnectionState.Open Then cn.Close()

cn.Open()

cmd.Connection = cn

cmd.Parameters.Clear()

cmd.CommandType = CommandType.StoredProcedure

cmd.CommandText = "selectemp"

cmd.Parameters.Add("@id", SqlDbType.Int).Value = TextBox1.Text

dr = cmd.ExecuteReader

If dr.Read Then

TextBox2.Text = dr("name")

Else

MessageBox.Show("هذا الموظف غير موجود ")

TextBox2.Text = ""

End If

If cn.State = ConnectionState.Open Then cn.Close()

cn.Open()

cmd.Connection = cn

cmd.Parameters.Clear()

cmd.CommandType = CommandType.StoredProcedure

cmd.CommandText = "selectinsurence"

cmd.Parameters.Add("@emp_id", SqlDbType.Int).Value = TextBox1.Text

tb.Clear()

tb.Load(cmd.ExecuteReader)

DataGridView1.DataSource = tb]

الكود دا فيه 2 stored produre واحد بيظهر الاسم والثانى بيظهر بيانات اشتراك التامينات لهذه الموظف

انا عايزاه اعرف ازاى اعدل الكود الثانى بحيث ان ناتج العرض يكون فى textbox وكمان فى datagrid

يعنى نتيجة الاستعلام اعرض منها بيان فى textbox هو الاسم

وباقى البيانات يتم عرضها فى datagrid

وشكراااااااااااااااااااااااااا

#4

اختي ممكن لو تتفضلين باضافة المشروع ..؟؟

او مثال بسيط للفكرة او على الاقل ضور ..

لانني صراحة لم افهم المطلوب جيدا ؟؟

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

مواضيع مشابهة