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

البحث في قاعدة البيانات للتأكد من البيانات المدخلة

بدأه الزعيـــــم في 12 يوليو 2009 · 18 رد · 1,521 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلا م عليكم

كيف الحال إن شاء الله دوم بخير

أنا سويت برنامج وصادفتني مشكلة وياريت اللي عنده حل يساعدني

تفاصيل المشكلة

عندي 4 من textbox ادخل البيانات واضغط على زر الاضافة تنضاف الى قاعدة البيانات (اكسس) المشكلة إضغط زر الاضافة مره ثانية تناضف مره أخرى

ابي تساعدوني !!!! كيف اسوي بحث عن البيانات الموجودة في التكست بوكس إذا كانت موجوده يظهر لي مسج إن البيانات موجوده مسبقا وإذا كانت غير موجوده يضفها الى قاعدة البيانات

مع العلم إن استخدم Microsoft Visual Studio 2008 لغة C#

#2

السلام عليكم

ارجو ان تكون يا زعيم بخير وبصحة وعافية

اما بالنسبة للسؤال فان شاء الله يوجد حل وسوف اشرحة نظريا واذا لم تستطع تنفيذة ارسل لى المثال وسوف اقوم بالكتابه على مثالك للتوضيح

قبل عملية الاضافة قم بعمل Select من قاعدة البيانات ويكون مرتبط بالاسم المدخل فى Text Bos

select Name from Table where name '"+textbox1.text+"';

ثم ضع الناتج فى

datatable

ثم نسأل هل به صفوف ام لا

datatabe dt = new datatable

if (dt.rows.count ==0)

{

ضع كود الحفظ

}

else

{

messagebox.show ("تم ادخال هذه البيانات من قبل");

}

ارجو ان يكون كلامى واضح ومفيد

ان كنت قد وفقت فمن الله وان كنت قد قصرت فمن نفسى والله المستعان

#3

شكرا على مرورك

وهذا المثال في المرفقات اتمنى ان تعدل عليه

____________.rar

#4

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

اسف يا اخى انا حاليا اتعامل مع اصدار 2005 لذلك سوف استخدم قاعدة البيانات التى امامى ولكن على مثال اخر يوضح ما تريد

اسف لاننى لم اقم بانزال 2008 حتى الان

ولكن ما سأقوم به فى المثال يصلح للاصدارين ان شاء الله

فقط ضع قاعدة البيانات على D:

ارجو يا اخى ان يتسع صدرك لما ساقول

من الافضل فى التعامل البرمجى ان يكون اسم الجدول وحقولة باللغة الانجليزية لا العربية ليسهل على السى شارب التعامل معه

هذه مجرد نصيحة ارجو الا يضيق صدرك بها

قاعدة البيانات تم تعديلها للغه الانجليزية 

المثال بالمرفقات

___________________________.rar

#5

شكرا Dr Tamer على تجاوبك وعلى نصيحتك وبالعكس هذا يشرح الصدر لما تجد من يوجهك الى الطريق الصحيح

وإذا تستطيع تشرح لي الكود بالتفصيل ياريت

#6

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

بعدها يتم اصطياد الخطأ باستخدام جملة try لمعرفة التكرار عند حدوثه

#7

السلام عليكم

اخى الزعيم

فقط قمت بعمل جملة Select من قاعدة البيانات معتمدة على شرط وهو الاسم القادم من مربع النص الخاص باضافة اسم الطالب

اذا عاد ب datatable به اعمدة يعنى انه وجد فى قاعدة البيانات اسم طالب بالاسم الذى تريد اضافته مره اخرى فليظهر رسالة تمنع اضافته مره اخرى

اما اذا عاد ب datatable فارغة يعنى انه لم يجد اسم هذا الطالب من قبل فى قاعدة البيانات فيسمح باضافته وهذا يكتب فى جملة الـ If الشرطية

ارجو ان اكون اوضحت الفكرة واذا كانت مبهمة ارسل لى وسوف ارسل لك الكود مرة اخرى مشروح داخل المشروع

شكرا على سعة صدرك يا صديقى

والله المستعان

#8

شكر لتفاعلكم مع موضوعي .......وعلى فكرة انا مبرمج مبتدئ

هذا كود التسجيل الذي به المشكلة

if (t1.Text == "" || t2.Text == "")

{

MessageBox.Show(" ");

}

else

{

this.TableAdapter.InsertQuery(t1.Text, t2.Text);



}



this.TableAdapter.FillBy(this.DataSet.);



t1.Text = ""; t2.Text = "";

وهذا الكود كامل

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Data.OleDb;

using Microsoft.VisualBasic;

namespace _

{

public partial class Form1 : Form

{



public Form1()

{

InitializeComponent();

}

private void 1BindingNavigatorSaveItem_Click(object sender, EventArgs e)

{

this.Validate();

this.BindingSource.EndEdit();

this.tableAdapterManager.UpdateAll(this.DataSet);

}

private void Form1_Load(object sender, EventArgs e)

{

// TODO: This line of code loads data into the 'DataSet.' table. You can move, or remove it, as needed.

// TODO: This line of code loads data into the '_11DataSet.1' table. You can move, or remove it, as needed.





}

private void button1_Click(object sender, EventArgs e)

{







if (t1.Text == "" || t2.Text == "")

{

MessageBox.Show(" ");

}

else

{

this.TableAdapter.InsertQuery(t1.Text, t2.Text);



}



this.TableAdapter.FillBy(this.DataSet.);



t1.Text = ""; t2.Text = "";

}

private void BindingNavigatorSaveItem_Click(object sender, EventArgs e)

{

this.Validate();

this.BindingSource.EndEdit();

this.tableAdapterManager.UpdateAll(this.DataSet);

}

private void TextBox_TextChanged(object sender, System.EventArgs e)

{

string st = t2.Text;

for (int x = 0; x < st.Length; x++)

{

if (!Char.IsNumber(st, x))

{

MessageBox.Show(" ");

t2.Clear();

t2.Focus();

break;

}

}

}

private void textBox1_TextChanged(object sender, EventArgs e)

{

}

private void button3_Click(object sender, EventArgs e)

{

if (t3.Text == "")

MessageBox.Show(" ");

else

{

this.TableAdapter.FillBy1(this.DataSet., t3.Text);



}

t3.Text = "";



}

private void button2_Click(object sender, EventArgs e)

{

if (t4.Text == "")

{

MessageBox.Show(" ");



}



else

{

this.TableAdapter.FillBy1(this.DataSet., t4.Text);



t4.Text = "";



}









}

private void button5_Click(object sender, EventArgs e)

{

this.TableAdapter.FillBy(this.DataSet.);



}

private void button6_Click(object sender, EventArgs e)

{



}





}



}

تم تعديل هذه المشاركة بواسطة الزعيـــــم في 13 يوليو 2009 في 22:53

#9

اخى كلنا مبتدئين لا احد يعلو احد كلنا بحث وراء العلم وفوق كل ذى علم عليم

اخى الكريم اين المشكلة انت تعرض كود عن طريق ال Wizrd صح ام انك تكتب هذا الكود

يا اخى لا تتعامل بال Dataset انا لا اتعامل بها اطلاقا لأن نظام Disconnect ابطئ فى التعامل مع البيانات من نظام Connect

وكذلك اذا كان الكود من خلال الطريقة التلقائية فهى طريقة يصعب معها التعديل

هذا رأيي أما بالنسبة للطريقة التى قمت باضافتها لك فهى طريقة سهله ومضمونة ان شاء الله

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

اسف للاطاله واسف ان كنت لم احتفظ بالمشروع

سوف اكون معك للنهاية للوصول لحل لمشكلتك اخى الكريم ان شاء الله

اسف مرة اخرى

والله المستعان

تم تعديل هذه المشاركة بواسطة Dr Tamer في 14 يوليو 2009 في 01:59

#10

اخوانى لقد قمت باعادة كتابة البرنامج من الصفر باستخدام visual studio 2008

ولغة البرنامج هى الانجليزيه وقد تم حل معظم المشاكل التى تحدثتم عنها ولكن تبقى بعض الأشياء الناقصه فى البرنامج مثل عملية الحفظ  وووضع الاستثناءات     أقوم حاليا على اكمالها أو تساعدونى فيها

 هذه هى صورة البرنامج والبرنامج المرفق

 

post-207223-1247533122_thumb.gif

StudentRecord.zip

 وممّا زادنـــي شرفــاً وتيهــاً   **  وكدت بأخمصي أطأ الثريّا

دخولي تحت قولك يا عبادي  **   وأن صيّرت أحمد لي نبيّـاً

#11

Dr Tamer اشكرك لتواصل معي وانا زي ماقلت لك مبتدئي وهذا أول برنامج اعملة وانا مااعرف اتعامل إلا مع dataset سمعت عن dataGridView ولكن لااعرف كيف ربطها ولاكيف اتعامل معها علما بأن استخدم الربط المباشر بدون اكواد

البرنامج في المرفقات بلغة Visual Studio 2008

***************************

amr.alsaidy

اشكرك لإعادة كاتبة البرنامج واتمنى ان تضيف زر للحذف وزر للتعديل على قاعدة البيانات

وعلى فكرة في برنامجك الاسم اللي تكتبه في تكست بوكس الاسم يتخزن في عمود الرقم في قاعدة البيانات ....هل لاحظتها

____________.rar

#12
اقتباس
وعلى فكرة في برنامجك الاسم اللي تكتبه في تكست بوكس الاسم يتخزن في عمود الرقم في قاعدة البيانات ....هل لاحظتها

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

لأنى بصراحه مشغول جدا أعذرنى أخى بمجرد أن أكمله سوف أرفعه مباشرة

 وممّا زادنـــي شرفــاً وتيهــاً   **  وكدت بأخمصي أطأ الثريّا

دخولي تحت قولك يا عبادي  **   وأن صيّرت أحمد لي نبيّـاً

#13

انا بإنتظارك

#14

ومازلت انتظر الحل على احر من الجمر

#15

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

post-207223-1247906620_thumb.gif

post-207223-1247906957_thumb.gif

StudentRecord2.zip

 وممّا زادنـــي شرفــاً وتيهــاً   **  وكدت بأخمصي أطأ الثريّا

دخولي تحت قولك يا عبادي  **   وأن صيّرت أحمد لي نبيّـاً

#16

أول شيء يا أخي, لقد خلطت في مشروعك هذا بين نوعي الإتصال مع قاعدة البيانات. النوع الأول المتصل أو Connected تستعمله عندما يدخل المستعمل البيانات عن طريق DataGrid و تنادي على TableAdapterManager.UpdateAll لإرسال البيانات الجديدة أو المحررة إلى قاعدة البيانات. النوع الثاني الغير المتصل أو Deconnected تستعمله عندما يدخل المستعمل البيانات عن طريق TextBox و تنادي على DataTableAdapter.InsertQuery لإرسال التسجيل الجديد مباشرة إلى قاعدة البيانات. و أنا أنصحك بعدم الخلط بينهما في مشروع واحد إلا في حالة الضرورة لأن هذا الخلط يسبب الكثير من المشاكل طيلة مدة تطوير المشروع.

المشكل الآخر هو أن VC# و في كل مرة تطلب منه إنشاء المشروع يقوم بمحو قاعدة البيانات و وضع الأصلية مكانها مما يؤدي إلى محو المعلومات الجديدة. و لحل هذا المشكل أنقر على اسم قاعدة البيانات student.accdb في Solution Explorer ثم انتقل إلى نافدة الخصائص Properties و اختر Copy in the out folder أو شبيه لأن عندي النسخة الفرنسية ثم اختر Copy if up to date أو ماشابه.

أما بالنسبة للسؤال لماذا الزر Save و Delete لا يعملان فالجواب أن InsertCommand و DeleteCommand و UpdateCommand لا توجدان في DataTableAdapter و param2 لـ InsertCommand غير محدد. والحل يكمن في إعادة تنفيد wizard الذي يهيء المشروع للربط مع قاعدة البيانات و يهيئ DataSet

#17

شكرا على الملاحظات

ولكن أخى زر ال delete تمام فقط حدد ال row ثم اضغط delete

المشكله بالنسبه لزر save

رجاء لو تستطيع تعديل البرنامج ثم رفعه

 وممّا زادنـــي شرفــاً وتيهــاً   **  وكدت بأخمصي أطأ الثريّا

دخولي تحت قولك يا عبادي  **   وأن صيّرت أحمد لي نبيّـاً

#18

المشاكل كلها كانت على مستوى studentDataSet.xsd تمت زيادة كل من DeleteCommand, UpdateCommand و تصحيح InsertCommand على مستوى components تمت إزالة bindingSource1 التي لم يكن لها أي دور في المشروع. على مستوى الكود لم يتم تغيير شيء.

StudentRecord2.rar

#19

جزاك الله أخى على تعاونك وبارك الله فيك

ولكن أخى كلما أردت اضافة InsertQuery يكون الناتج بهذا الشكل (InsertQuery(Number,param2

كيف أجعلها (InsertQuery(Number,Name

تم تعديل هذه المشاركة بواسطة amr.alsaidy في 19 يوليو 2009 في 00:12

 وممّا زادنـــي شرفــاً وتيهــاً   **  وكدت بأخمصي أطأ الثريّا

دخولي تحت قولك يا عبادي  **   وأن صيّرت أحمد لي نبيّـاً

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…