בעיה בקוד בvb6

sumoking

New member
בעיה בקוד בvb6

AdoSend.Recordset.MoveFirst Do While AdoSend.Recordset.EOF = False If AdoSend.Recordset.Fields("kod_parit") = AdoMlai.Recordset.Fields("kod_parit") Then a = AdoSend.Recordset.Fields("kod_parit") + AdoMlai.Recordset.Fields("kod_parit") MsgBox a End If Loop​
מישהו יכול לומר לי מה הבעיה? הוא נותן לי שגיה בשורה של ה-if תודה לכולם
 

davidea

New member
תיקון ושאלה

ראשית, אני מניח שרצית שהתנאי ללולאה תהיה While not adosend.recordset.EOF כלומר כל עוד לא הגעתי לרשומה הבאה. אחר כך, לפני המילה Loop אולי כדאי לעשות adosend.recordset.movenext בכדי לגרום לתוכנה לעבור לרשומה הבאה. לבסוף, מה הודעת השגיאה? האם שגיאה בעת הקומפילציה? האם שגיאה בעת הריצה? ומה תוכן ההודעה? מענה לנ"ל יקל על מתן פתרון
 

שינאל

New member
כנראה ערך אחד השדות הוא Null, היה עוזר לצרף

את הודעת השגיאה
 

sumoking

New member
פירוט הבעיה

דבר ראשון צודק שכחתי לשים movenext =] טעות אחת סידרנו בקשר לWhile not adosend.recordset.EOF זה אותו דבר כמו do While adosend.recordset.EOF=false תקן אותי אם אני טועה... עכשיו בקשר לבעיה הוא נותן לי הודעת שגיאה וכאשר אני עושה debug הוא מצביע לי על השורה עם הif ובקשר לתוכן הבעיה הוא רושם את המשפט הבא "או שהרשומה הנוכחית נמחקה true הם בעלי ערך eof או bof הפעולה המבוקשת דורשת רשומה נוכחית"
 

שינאל

New member
לא בדיוק אותו דבר

do While......loop לא עובד בדיוק כמו While.......wend נסה מה שדוד הציע, מה איכפת לך? כדאי לפני שניכנסים ללופ לבדוק אם יש רשומות בטבלה If rs.RecordCount > 0 Then rs.MoveFirst while Not rs.EOF If...... rs.MoveNext WEnd End if
 

davidea

New member
מתחילים להתקרב

לפני ה While היה צורך ב Open של ה Recordset. מאחר ולא ראינו את ההגדרות של ה ADO שביצעת ולא ראינו את תהליך פתיחת ה Recordset אזי מאד קשה לעזור. היה צריך להיות הצבה של Recordset ל AdoSend עם פקודת Set ואחר כך Open ל Recordset. פקודת ה Open מבצעת למעשה גם את MoveFirst אז אין צורך בה. תראה את כל הקוד המגדיר את ה Recordset ואיך בצעת את הפתיחה. אני מניח שהבעיה תיפתר אם תבדוק בעצמך באם ה Recordset פתוח.
 
למעלה