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

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

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

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

بس بدون استخدام الـ Adod .. يعني بالـ Data1 العادية

#2

شباااااااااااااااب

وين الحل

#3

أخي الحبيب:

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

و لك مني جزيل الشكر,,, (h)

____________________________________________________________________________

{ اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ } سورة الأنبياء (1)

____________________________________________________________________________

In a world without walls and fences, who needs Windows and Gates

مدونتي

#4

أخ smsm3650:

هل قاعدة البيانات نوعها أكسيس 97 أم أحدث (2000 ....إلخ)

أنا أسأل لأن Data تدعم DAO وليس ADO - أي أن Data تصلح فقط لقواعد بيانات من نوع 97 أو أقدم (على ما أظن)

إن كان كلامي ليس صحيحاً بشكل دقيق أرجو من الأعضاء أن يخبرنا وشكراً.

تم تعديل هذه المشاركة بواسطة aroma_kt في 14 سبتمبر 2005 في 10:44

#5

شكراً لإهتمامكم

الأخ Alaa Awaad ممكن تكتب الكود

لإن كل الاكواد الموجوة تستخدم الـ ADODC

.. الDATABASE مصممه بالـ Visual Data Manager

يعني اعتقد انها مثل اللتي بالـ ACCESS 97

#6

code:

########

private sub command1_click()

data1.recordset.findfirst "id="&val(text1.text)

if data1.recordset.nomatch then

data1.recordset.addnew

else

msgbox "This record is found!!"

end if

end sub

#7

أخي الحبيب :

إليك الطريقة بإستخدام كلا من ADODB وكذلك الأداة Data

هذا الكود بالنسبة لنظام الـ ADODB

dim doble as string
Set rs = New ADODB.Recordset
rs.Open "select * from [tablename] where [fieldname] like'" & text1.Text & "'", cn, adOpenDynamic, adLockOptimistic
rs.MoveFirst
While Not rs.EOF
doble = rs![fieldname]
rs.MoveNext
Wend
rs.Close
    If doble <> "" Then
        MsgBox "the name you tried to enter is already exist"
        Exit Sub
    Else
        Set rs = New ADODB.Recordset
        rs.Open "select * from [tablename]", cn, adOpenDynamic, adLockOptimistic
        rs.MoveFirst
        rs.AddNew
        rs![field1] = text1.Text
        rs![field2] = text2.Text
        rs.Update
        rs.Close

و تفسير هذا الكود كما يلي:

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

السطر الثاني و الثالث قمنا من خلالهما بإنشاء إتصال بالجدول المطلوب البحث فيه عن قيمة معينة و قد إستخدمنا الأمر where لفترة النتائج حيث [teblename] هو إسم الجدول , [fieldname] هو إسم الحقل المراد مقارنه المدخلات بمحتوياته , text1.text هو صندوق النص الذي تريد أن ترى إن كانت قيمته موجودة فعلا في قاعدة البيانات أم لا.

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

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

بالنسبة لأداة Data فالكود التالي يقوم بنفس الوظيفة:

mystore = InputBox("type the name you want to find", "Search")
Var = mystore
Var = "'" & Var & "'"
Data1.Recordset.FindFirst "[fieldname] like" & Var
Text1.Text = Data1.Recordset![field1]
Text2.Text = Data1.Recordset![field2]
If Data1.Recordset.NoMatch Then
    Data1.Recordset.AddNew
    Data1.Recordset![field1] = Text1.Text
    Data1.Recordset![field2] = Text2.Text
    Data1.Recordset.Update
Else
    MsgBox "the name you tried to enter is already exist"
    Exit Sub
End If

أتمنى أن أكون قد وفقت في الإجابة على تساؤلاتك أخي الحبيب.

و لك مني جزيل الشكر,,, (h)

تم تعديل هذه المشاركة بواسطة Alaa Awaad في 14 سبتمبر 2005 في 21:20

____________________________________________________________________________

{ اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ } سورة الأنبياء (1)

____________________________________________________________________________

In a world without walls and fences, who needs Windows and Gates

مدونتي

#8

شكراااااااااااااا جزيلاً لك أخي

لا يسعني الا ان اقول لكم ... زادكم الله من علمه

#9

أخي

شكراً جزلا لك لإهتمامك ولكن للأسف عن تغيير المتغيير mystore= inputbox ..... بـ Mystore = Text1.text فانه يعني الـ MsgBox دائما .. انظر لهذا الكود

Private Sub Text1_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then

اريد المستخدم عند الضغط على انتر يقوم البرنامج بالبحث .. فإذا وجد ان المستخدم يقوم بادخال بيان موجود مسبقا .. يعطي رسالة

End If

End Sub

هذا الكود بعد ان قمت بتعديله ولم يعمل

Dim mystore As String

mystore= Text1.Text

Var = mystore

Var = "'" & Var & "'"

Data1.Recordset.FindFirst "[Cash_No] like" & Var

Text1.Text = Data1.Recordset![Cash_No]

If Data1.Recordset.NoMatch Then

Data1.Recordset.AddNew

Data1.Recordset![Cash_No] = Text1.Text

Data1.Recordset.Update

Else

MsgBox "the name you tried to enter is already exist"

Exit Sub

End If

وهذا كود آخر وجدته ولكن عند تشغيله يعطي رسالة الخطا الاتية Data Type mismatch in criteria expression

هذا الكود

Data1.Recordset.FindFirst "Cash_No=" & Val(Text1.Text) 'Cash_No

Do While Not Data1.Recordset.EOF = True

If Data1.Recordset.NoMatch Then

Data1.Recordset.AddNew

Else

MsgBox "This record is found!!"

End If

Loop

#10

أخي الحبيب:

عفوا فلقد نسيت أن أضيف movefirst و هو نفس الخطأ في الكود الثاني أيضا , جرب الكود بعد التعديل و إن شاء الله لن تحدث مشاكل أخرى, و أنا في خدمتك في أي وقت.

Dim mystore As String
mystore= Text1.Text
Var = mystore
Var = "'" & Var & "'"
Data1.Recordset..movefirst
Data1.Recordset.FindFirst "[Cash_No] like" & Var
Text1.Text = Data1.Recordset![Cash_No]

If Data1.Recordset.NoMatch Then
Data1.Recordset.AddNew
Data1.Recordset![Cash_No] = Text1.Text

Data1.Recordset.Update
Else
MsgBox "the name you tried to enter is already exist"
Exit Sub
End If

و لك مني جزيل الشكر,,, (h)

____________________________________________________________________________

{ اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ } سورة الأنبياء (1)

____________________________________________________________________________

In a world without walls and fences, who needs Windows and Gates

مدونتي

#11

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

Private Sub Text1_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then

اريد وضع الكود هنا

End Sub

اظن ان المشكلة بسبب انه عند كتابة اي كلمة في الـ Text1.Text وعند الضغط على انتر فإنه يجد ان الكلمة الموجوده في الـ Text1.Text وبالتالي فإنه يعطي الرسالة

حاولت ان اضع الكود في Text2 وان ينفذ الكود عن الضغط على Command Button ونجحت .. ولكن عند ربط الـ Text2 بالـDataBase فإن المشكله تظهر مرة اخرى

فما الحل ..؟؟ ارجوا منك المساعدة وآآسف مرة اخرى للإثقال عليك

#12

أخي شكرا لك جدا جدا جدا جدا جدا جدا جدا جدا جدا جدا ..................................... إلى ما لا نهاية

فعلا المشكلة كانت كمان توقعت

بسبب انه عند كتابة اي كلمة في الـ Text1.Text وعند الضغط على انتر فإنه يجد ان الكلمة الموجوده في الـ Text1.Text وبالتالي فإنه يعطي الرسالة

والحمد لله الذي هداني للحل وهو بسيييط جدا

وهو إفراغ حقل النص

mystore = Text1.Text

Text1.Text = ""

شكرا لك اخي وزادك الله علما على علم

#13

ولو اني مبحبش الادوات ، وبحب اني اعتمد علي الكود اكثر ،، عموما هذا الكود كامل .

يلزمك تعرف متغيرين واحد من نوع Database واسمه DB

والثاني من نوع RcordSet واسمه Rec

SQL = "Select * from Table Where Field = '" & Trim(text1.Text) & "'"
    
 Set Rec = DB.OpenRecordset(SQL)
With Rec
    
        If .EOF Then '999
'Record Not Found
                        .AddNew
                        
                Else '999
'Record Found And Ask You If You Want To Edit
                            If MsgBox("Are you sure you want to edit ?", vbQuestion + vbYesNo) = vbYes Then '***
                            
                                        .Edit
                                    Else '***
                                        Exit Sub
                            
                            End If '**
        End If '999
                
!Field2 = Text2.Text
!Field3 = Text3.Text
!Field4 = Text4.Text
'...

    .Update

.Close

End With


End With

الإنسان الذي يقول بأنه لا يمكن عمل شيء يجب ألا يعيق مطلقاً الإنسان الذي يقوم بعمل ذلك الشيء.

إن تخطئ فأنت إنسان ... أما أن تلوم جهازك الكمبيوتر على خطأك فهذا أكثر إنسانية.

#14

انا محتاج كود بالسي شارب ADODC1 + DATAGRID

موقوف من المشاركة لقلة الأدب

============================

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

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

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

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

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

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