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

سؤال عند إضافة سجل جديد في قاعدة بيانات ....

مغلق
بدأه salehr3 في 26 يوليو 2006 · 13 رد · 954 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

يسعدني ويشرفني بأن انظم إليكم وأستفيد من خبراتكم الفعالة ... في مجال البرمجة ( لغة الفيجول بيسيك 6) وعسى أن تكونو عونا لي في تحقيق ما أرغب إليه متنينا لكم التوفيق ...

سؤالي هو .....

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

#2

تعمل جملة إستعلامية لتبحث عن الإسم هكذا

select * from TabelName where FiledName = '" & text1.text & "' H

مالكش دعوة بحرف الـــ H

if rs.eof and rs.bof then

msgbox "هذا الإسم غير موجود من قبل"

Else

msgbox "هذا الإسم موجود من قبل"

end if

Mohamed Ali Salim

0.1..0...4....7.....6......2.......7........4.........8

#3

شكرا على الشرح

#4
Set rs = db.OpenRecordset("select Field from Table")


rs.FindFirst "Field=Name"

If rs.NoMatch = True Then

msgbox "No name found"
Else
msgbox " the name is existing"

End If
#5

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

أنا عملت كود إضافة سجل بهذي الطريقة ... كما مبين اسفل ...

Private Sub Command1_Click()
Data1.Recordset.AddNew
Data1.Recordset![Name] = Text1.Text
Data1.Recordset.Update
Data1.Refresh
MsgBox "تم حفظ السجل", vbMsgBoxRight + vbMsgBoxRtlReading, "حفظ"

وين أحط الكود الجديد الذي أعطيتموني إياه ... وشكرا جزيلا

#6

حطه كومتند بوتن 1

مادام الكابتن femTo موجود لا داعي للجزع فسيعطيك المطلوب

#7

شكرا جزيلا ... أأنا أنتظر الرد ....

#8
اقتباس
وين أحط الكود الجديد الذي أعطيتموني إياه

حقا انا لا اعرف كيفية الإستعلام عن اسم يالطريقة التي تستخدمها بس راح اعطيك الطريقة بتاعتي وخلاص

ضعه هاكذا

sql = " select * from TabelName where FiledName = '" & text1.text & "' 'H
if rs.eof and rs.bof then
Data1.Recordset.AddNew
Data1.Recordset![Name] = Text1.Text
Data1.Recordset.Update
Data1.Refresh
MsgBox "تم حفظ السجل", vbMsgBoxRight + vbMsgBoxRtlReading, "حفظ"
Else
msgbox "هذا الإسم موجود من قبل"
end if

في نفس الكوماند طبعا

يعني شيل اللي مكتوب في الكوماند1 وحط الكود ده المكتوب اعلاه

Mohamed Ali Salim

0.1..0...4....7.....6......2.......7........4.........8

#9

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

سوء الأسم موجود ولاه مو موجود ...وأسف ع الإزعاج

#10

السلام عليكم

اخى الكريم جرب هذا الكود

Data1.Recordset.FindFirst "NAME='" + TEXT1.Text + "'"
If Data1.Recordset.NoMatch Then
Data1.Recordset.AddNew
Data1.Recordset![Name] = TEXT1.Text
Data1.Recordset.Update
Data1.Refresh
MsgBox "Êã ÍÝÙ ÇáÓÌá", vbMsgBoxRight + vbMsgBoxRtlReading, "ÍÝÙ"
Else
MsgBox "åÐÇ ÇáÅÓã ãæÌæÏ ãä ÞÈá"
End If

واضح انا فيه مشكله فى العربى

ممكن تبقى تكتب الرسايل من الأول

تم تعديل هذه المشاركة بواسطة GENIUS-IT في 27 يوليو 2006 في 03:14

Never Give Up You Are Programmer

Being Genius Is The Step Before Madness

Artificial Intelligence Is No Match For Natural Stupidity

#11

السلام عليكم يا أخ salehr3

اولا

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

يعني المفروض تشيل كلمة TabelName وتكتب اسم الجدول المراد البحث بداخله وأيضا تشيل كلمة FiledName وتكتب اسم الحقل المراد البحث فيه

يعني لو إفترضنا ان اسم الجدول Student واسم الحقل اللي عايزين ندور جواه Name

فان الجملة تتكتب هاكذا

select * from Student where Name = '" & text1.text &"' 'H

فهمتني

ده اول شئ

ثانيا بقى

انك مش معرف قناة اتصال اساسا بإسم RS

وأيضا انت لم تقم بفتحها

ثالثا

أريد أن اعلمك طريقة إتصال انا افضلها عن الأداه اللى انت بتستعملها اللى هي Data

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

وكمان هذه الأداة تتصل بجول واحد بس

المهم

تابعني

++++++++++++++++++++++++++++++++++

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

++++++++++++++++++++++++++++++++++

اول شي سوف تقوم بإضافة موديل

وتكتب به بعض التعريفات التالية

Public SQL As String
Public Connection As New ADODB.Connection
Public Re As New ADODB.Recordset

طبعا اول تعريف اللي هو SQL ده اللي هانكتب بعد كدة جمل الــ SQL الإستعلامية

واللي بعدها Connection ده طريقة الإتصال

واللي بعدها Re دي قناة الإتصال

---------------------------------------------------------------

وتكتب أيضا هذا الصب Sub في نفس الموديل هذا الصب مهمته الإتصال بقاعدة البيانات تكتب هاكذا

  

Public Sub ConnectNow()
If Connection.State = 1 Then Connection.Close
Connection.ConnectionString = "provider=Microsoft.Jet.OLEDB.3.51;data source=" & _
App.Path & "\database\DataBase97.mdb;"




Connection.Open
End Sub

طبعا انت شايف العنوان الل مكتوب بعد دالة App.Path ده طبعا بقوله ان قاعدة البيانات اللي عاوزك تتصل بيها موجودة مع البرنامج بداخل المجلد اللي اسمه database وكلمة DataNase97 ده اسم قاعدة البيانات يعني المفروض تغيرها الي اسم قاعدة البيانات بتاعتك انت

وخلي بالك ان لازم تحول قاعدة البيانات بتاعتك الي 97 انت فاهمني طبعا ً

بس كدة

طبعا انت عارف جمل الــ SQL

ولو مش عارفها هاقولهالك

لو عايز تضيف سجل جديد يبقى تكتب كده

insert into TabelName(Filed1,Filed2,Filed4,........) values ('Value1','Value2','Value3',......) 'H

لو عايز تحذف

delete * from TabelName

لو عاوز تعمل تحديث يعني تغير قيمة موجودة من قبل

Update TabelName Set FiledName = ' Value' 'H

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

المهم

شوف المرفق فهو مثال بسيط جدا لمدرسة

سلامي لك

++++++++++++++++++++++++++++++++++

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

++++++++++++++++++++++++++++++++++

School.rar

Mohamed Ali Salim

0.1..0...4....7.....6......2.......7........4.........8

#12

مشكوووور أخى الكريم على الموضوع

جزاك اله كل خير

Never Give Up You Are Programmer

Being Genius Is The Step Before Madness

Artificial Intelligence Is No Match For Natural Stupidity

#13

للأسف لم أتوصل لحل أزمة

(( عند اضافة اسم مكرر ... ظهور رسالة الاسم مكرر ))

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

طريقة data وضحتها في الأعلى ...

وهذي الربط عن طريق ADO ... وأرجو توضيح وضع الكود ( عدم تكرار الأسم ) وين يكون بالضبط ...

Private Sub Command4_Click()
If Trim(Text2.Text) = "" Then
   MsgBox "Connot contain a Null Value .", vbCritical, "Message"
   Text1.SetFocus
   Exit Sub
End If
'
With rs
	 .AddNew
'
				![Name] = Trim(Text1.Text)
	 If Not Trim(Text2.Text) = "" Then ![numb] = Trim(Text2.Text)
'
	 .Update
End With
'
	 rs.Requery
	 rs.MoveLast


End Sub

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

تم تعديل هذه المشاركة بواسطة salehr3 في 28 يوليو 2006 في 21:56

#14

اخي العزيز salehr3

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

قم بعمل مفتاح اساسي على حقل الإسم ( المراد عدم التكرار فيه )

واذهب عند الزرار بتاع الإضافة

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

انت بقى تعمل ايييييي؟

تحط في الزرار ده الأمر ده

on error goto no

no:

msgbox"هذا الإسم موجود من قبل"

exit sub

وبكدة عند ظهور رسالة الخطأ اللي قلتلك عليها فوق خالص سوف تظهر الرسالة دي

Mohamed Ali Salim

0.1..0...4....7.....6......2.......7........4.........8

هذا الموضوع مغلق.

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