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

سؤال اخواني لماذا يعلق معي البرنامج عند أسخدام كود Do While Not .EOF

بدأه جواد في 24 أكتوبر 2013 · 5 رد · 657 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
السلام عليكم اخواني الأعزاء
 
سؤال اخواني لماذا يعلق معي البرنامج عند أسخدام هذا الأمر
 
 
Do While Not .EOF
 
Loop

 

 

وشكراً لكم أنتظر ردكم أخواني

#2

السلام عليكم...

 

كان من المفترض أن تبين الكود بين بداية و نهاية الحلقة!

 

لكن أعتقد أنك نسيت كتابة:

.MoveNext

قبل نهاية الحلقة (قبل Loop مباشرة) حتى يتم الانتقال إلى السجل التالي، و إلا فإن الحلقة ستستمر إلى ما لا نهاية و يعلق البرنامج لأنه لن يصل إلى EOF..

 

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#3

أهلاً أخي najy_zl

 

أنا واضع قبل الـ Loop هذا الكود

.MoveNext

ولم ارفق الكود لأنه كبير

 

شكراً لك سوف اضع الكود لأني ما أعرف ما هو سبب التعليق

تم تعديل هذه المشاركة بواسطة جواد في 24 أكتوبر 2013 في 16:32

#4

هذا هو الكود أخي najy_zl

 

أنتظر ردك أخي najy_zl بارك الله فيك

 
Public Sub ExHTM(Optional Path As String, Optional Title As String)
    
    Set Form1.ContactTable = Form1.db.OpenRecordset("SELECT * FROM Record ORDER BY Product")
    With Form1.ContactTable
        .MoveFirst
        Open Path & "Favorite.html" For Output As #1
            Print #1, "<HTML>"
            Print #1, "<HEAD>"
            Print #1, "<TITLE>" & Title & "</TITLE>"
            Print #1, "</HEAD>"
            Print #1, "<BODY BGColor=""#FFFEFB"" Text=""#3C6CBC"">"
            Print #1, "<H2>" & Title & "</H2>"
            Print #1, "<UL>"
            Do While Not .EOF
                Print #1, "<LI><A HREF=""" & !ID_Number & !Product & ".html"">" & !ID_Number & ", " & !Product & "</A></LI>"
                .MoveNext
            Loop
            Print #1, "</UL>"
            Print #1, "</BODY>"
            Print #1, "</HTML>"
        Close #1
        .MoveFirst
        Form1.PBar1.Min = 0
        Form1.PBar1.Max = .RecordCount
        Form1.PBar1.Value = 0
        Do While Not .EOF
            Open Path & !ID_Number & !Product & ".html" For Output As #1
                On Error Resume Next
                Print #1, "<HTML>"
                Print #1, "<HEAD>"
                Print #1, "<TITLE>" & !ID_Number & " " & !Product & "</TITLE>"
                Print #1, "</HEAD>"
                Print #1, "<BODY BGColor=""#FFFEFB"" Text=""#3C6CBC"">"
                Print #1, "<FONT Tahoma >"
                Print #1, "<H2>" & !ID_Number & " " & !Product & "</H2>"
                If !Product <> "" Then Print #1, !Product & "<BR>"
                If !Company <> "" Then Print #1, !Company & "<BR>"
                If Not (!POBox = "" And !City = "" And !Fax = "") Then
                    Print #1, !City & ", " & !POBox & " " & !Fax & "<BR><BR>"
                End If
                If !Productvip1 <> "" Then Print #1, "<B>Product vip 1:</B>: " & !Productvip1 & "<BR>"
                If !Productvip2 <> "" Then Print #1, "<B>Product vip 2:</B>: " & !Productvip2 & "<BR>"

                Print #1, "<BR><B>Product4</B>: " & Form1.Combo.List(!Group_Product) & "<BR>"
                If !Email <> "" Then Print #1, "<B>Produc5</B>: " & "<A HREF=""mailto:" & !Email & """>" & !Email & "</A><BR>"
                If !Web <> "" Then Print #1, "<B>Web Site</B>: " & "<A HREF=""" & !Web & """>" & !Web & "</A><BR>"
                Print #1, "<B>Product2</B>: " & Format(!Product2, "00") & "/" & Format(!Product3, "00") & "/" & Format(!Product, "00") & "<BR>"
                If !Comment <> "" Then
                    Print #1, "<BR><B>Product1</B>:<BR>"
                    Print #1, !Product1 & "<BR>"
                End If
                Print #1, "<BR><A HREF=""Index.html"">Home Page</A>"
                Print #1, "</BODY>"
                Print #1, "</HTML>"
                Form1.PBar1.Value = Form1.PBar1.Value + 1
            Close #1
            .MoveNext
        Loop
    End With

End Sub

تم تعديل هذه المشاركة بواسطة جواد في 27 أكتوبر 2013 في 14:23

#5

السلام عليكم...

 

لا يبدو أنه يوجد خطأ في تسلسل الكود - مع بعض الملاحظات (مثلاً عبارة On Error Resume Next من المفترض أن تكون خارج الحلقة).

 

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

 

مبدئياً: إذا كان البرنامج يتوقف عن الاستجابة فاضغط Ctrl+Break (أو Ctrl+Pause) عندما يعلق، لمعرفة أين يتوقف البرنامج.

 

ملاحظة أخيرة: جرب أن تنقل MoveFirst التالية:

        .MoveFirst
        Form1.PBar1.Min = 0
        Form1.PBar1.Max = .RecordCount
        Form1.PBar1.Value = 0
        Do While Not .EOF

لتكون بعد قراءة الـ RecordCount:

        Form1.PBar1.Min = 0
        Form1.PBar1.Max = .RecordCount
        Form1.PBar1.Value = 0
        .MoveFirst
        Do While Not .EOF

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#6

شكراً لك أخي najy_zl

 

ولكن للأسف ما زال البرنامج يعلق إن شاءالله سوف أضل احاول فيه لحتى تزبط

 

يعطيك العافية وشكراً لك

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

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

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

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

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