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

مالخطأ في هذا الكود عاجل وهام

بدأه khz في 5 مارس 2012 · 5 رد · 725 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

حياتي للجميع

انا في طور التعلم فقد انات قاعدة بيانات خاصة بالعمل ولدينا عملاء ووضعت نموذج لللاضافة وزر لحفظ البيانات المدخلة النموذج لا يعتمد على اي استعلام مجرد 3 نصوص للادخال رقم بطاقة العميل واسمة وجوالة

فقلت استخدم Ado بدل من ماكرو للحفظ فعملت الكوت التالي :

Private Sub cmdaddcus_Click()

Dim recCustomer As New ADODB.Recordset

Dim conSceco As New ADODB.Connection

Set conSceco = CurrentProject.Connection

recCustomer.Open "Customer", conSceco, adOpenKeyset, adLockPessimistic

Do Until recCustomer.EOF

If recCustomer.Fields("CardID").Value <> Me.texid Then

recCustomer.AddNew

recCustomer.Fields("CardID").Value = Me.texid

recCustomer.Fields("CustomerName").Value = Me.texnam

recCustomer.Fields("Jawal").Value = Me.texjaw

recCustomer.Fields("Note").Value = Me.texmem

recCustomer.update

Else

MsgBox "ÑÞã ÇáÈØÇÞÉ ãßÑÑ ÇáÑÌÇÁ ÇáÊÃßÏ", vbOKOnly

End If

recCustomer.MoveNext

Loop

recCustomer.Close

Set recCustomer = Nothing

End Sub

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

#2

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

أخي الكريم أحد الحلول الذي يوفرها لك الأكسس ضمن ADO هي البحث Find وإليك التطبيق العملي على مثالك

Private Sub cmdaddcus_Click()
Dim recCustomer As New ADODB.Recordset
Dim conSceco As New ADODB.Connection
Set conSceco = CurrentProject.Connection
recCustomer.Open "Customer", conSceco, adOpenKeyset, adLockPessimistic
'Do Until recCustomer.EOF
 Dim mark As Variant

            If Me.texid = "" Or IsNull(Me.texid) Then
                    MsgBox "You Can Not Add An Empty Data"
                    GoTo ExitMe
            End If

recCustomer.Find "[CardID]  Like '" & Me.texid & "'"

    Do While Not recCustomer.EOF
        'continue if last find succeeded
        MsgBox "You Can Not Add Double CardID : " & recCustomer!CardID
        ' note current position
        mark = recCustomer.Bookmark
        recCustomer.Find "[CardID]  Like '" & Me.texid & "'", 1, adSearchForward, mark
        ' above code skips current record to avoid finding the same row repeatedly;
        ' last arg (bookmark) is redundant because Find searches from current position
    GoTo ExitMe
    Loop

recCustomer.AddNew
recCustomer.Fields("CardID").Value = Me.texid
recCustomer.Fields("CustomerName").Value = Me.texnam
recCustomer.Fields("Jawal").Value = Me.texjaw
recCustomer.Fields("Note").Value = Me.texmem
recCustomer.Update
MsgBox "Data Added"

ExitMe:
recCustomer.Close
Set recCustomer = Nothing
End Sub

وسلامي لك وللجميع

EyADOSample.rar

post-212280-018827400 1330982460_thumb.j

المرفقات
13-04-33 12-19-17 ص.jpg

عَـجِبْتُ لِمَنْ يَتَفَكَّـرُ فى مَـأْكُولِهِ كَيْـفَ لا يَتَفَـكَّـرُ فى مَعْـقُـولِهِ، فَيُجَنِّبُ بَطْنَهُ ما يُؤْذيهِ، وَ يُودِعُ صَدْرَهُ ما يُرْدِيهِ

(الحسن بن علي بن أبي طالب)

#3

حقيقة اشكرك اخوي اياد الان ضبط كل شي تم اضافة الكود في حدث عند النقر على زر حفظ

بس ياليت لو تشرح خطأي بالكود اللي انا كاتبة علشان استفيد او شرح الكود اللي كتبته انت للفائدة

صحيح يعجز لساني للايفاء بشكرك .... والله شلت هم من راسي لي اسبوعين وانا احاول وعجزت

#4

طلب اخوي اياد

طيب في حالة التعديل والحذف

#5
khz كتب:

طلب اخوي اياد

طيب في حالة التعديل والحذف

عند التعديل أو الحذف ماذا تطلب من البرنامج أن يفعل ؟؟

اقتباس
حقيقة اشكرك اخوي اياد الان ضبط كل شي تم اضافة الكود في حدث عند النقر على زر حفظ

بس ياليت لو تشرح خطأي بالكود اللي انا كاتبة علشان استفيد او شرح الكود اللي كتبته انت للفائدة

صحيح يعجز لساني للايفاء بشكرك .... والله شلت هم من راسي لي اسبوعين وانا احاول وعجزت

من خلال مشاركتك ومحاولاتك أستطيع أن أستنتج أنك على علم بتعليمات ADO

حاول أن تتصفح الكود جيداً وأي نقطة غير واضحة فسأحاول شرحها لك بكل سرور

كما أتمنى عليك أخي الكريم في المرات القادمة أن تضع مثالك دائماً في المرفقات حتى لا يتعذب المجيب بعمل كل شئ

سلامي لك وللجميع

تم تعديل هذه المشاركة بواسطة إياد بيك في 6 مارس 2012 في 02:04

عَـجِبْتُ لِمَنْ يَتَفَكَّـرُ فى مَـأْكُولِهِ كَيْـفَ لا يَتَفَـكَّـرُ فى مَعْـقُـولِهِ، فَيُجَنِّبُ بَطْنَهُ ما يُؤْذيهِ، وَ يُودِعُ صَدْرَهُ ما يُرْدِيهِ

(الحسن بن علي بن أبي طالب)

#6

Private Sub cmdaddcus_Click()

Dim recCustomer As New ADODB.Recordset

Dim conSceco As New ADODB.Connection

Set conSceco = CurrentProject.Connection

recCustomer.Open "Customer", conSceco, adOpenKeyset, adLockPessimistic

'Do Until recCustomer.EOF

Dim mark As Variant 'هذا متغير لوضع قيمة موقع السجل الحالي

If Me.texid = "" Or IsNull(Me.texid) Then 'اذا كان عنصر التحكم النص يساوي فراغ او قيمة خالية

MsgBox 'ساله تفيد بان لا يكم ترك هذا الحقل فارغ"لا يمكن ترك رقم البطاقة فارغ"

GoTo ExitMe 'الخروج من مربع الرسالة والعودة لمربع النص

End If 'الخروج من قاعدة الشرط

recCustomer.Find "[CardID] Like '" & Me.texid & "'" 'هذه دالة للبحث بمعرفة القيمة المدخلة بمربع النص والبحث في حقل رقم البطاقة

Do While Not recCustomer.EOF 'هذه جملة التكرار ومفادها انه طالمالم نصل الى اخر سجل لمجموعة السجل

'continue if last find succeeded

MsgBox "رقم البطاقة مكرر : " & recCustomer!CardID 'هذه رسال تفيد بانه وجد رقم البطاقة المكرر والمؤشر علية ورقم البطاقه هو

' note current position

mark = recCustomer.Bookmark 'هذا اسناد موقع السجل الحالي للمتغير مارك

recCustomer.Find "[CardID] Like '" & Me.texid & "'", 1, adSearchForward, mark 'جملة للبحث مرة اخرى من الموقع الحالي

' above code skips current record to avoid finding the same row repeatedly;

' last arg (bookmark) is redundant because Find searches from current position

GoTo ExitMe 'لم افهمها

Loop

'باقي الكود مفهوم

recCustomer.AddNew

recCustomer.Fields("CardID").Value = Me.texid

recCustomer.Fields("CustomerName").Value = Me.texnam

recCustomer.Fields("Jawal").Value = Me.texjaw

recCustomer.Fields("Note").Value = Me.texmem

recCustomer.Update

MsgBox "تمت الاضافة"

ExitMe: 'لم افهمها

recCustomer.Close

Set recCustomer = Nothing

End Sub

اللي فهمته كالتالي

1: القسم الاول من الكو يتم فيه تعريف المتغيرات للاتصال وتكوين مجموعة السجل ومتغير لموع السجل وجمل الاسناد وفتح الاتصال ..... هذا القسم الاول

2: القسم الثاني عبارة if وهي هنا لاختبار مربع النص هل يحتوي على قيمة فارغه واستخدام دالة isnull السؤال الان لماذا كتبت Me.texid = "" مع استخدام دالة isnull

3: جملة التكرار وللي فهمته انه طالما لم نصل الى اخر سجل فكرر الجمل وبناء على عبارة البحث recCustomer.Find "[CardID] Like '" & Me.texid & "'" فاذا وجد السجل فمعنى هذا لم نصل الى اخر سجل واذا لم يجده فمعنى هذا اننا باخر سجل وسوف يخرج من عبارة التكرار ويكمل باقي الكود لللاضافة

4:هذه عبارة اعادة البحث recCustomer.Find "[CardID] Like '" & Me.texid & "'", 1, adSearchForward, mark لم افهم وسائطها

5: لم افهم عبارة ExitMe

على العموم اشكرك اخوي ومرفق لك القاعدة بكاملها

لم استطيع رفع القاعدة

khz.zip

تم تعديل هذه المشاركة بواسطة khz في 8 مارس 2012 في 10:52

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