548
צפיות
צפיות
13
תשובות
תשובות
בעיה עם rs.EOF
יש לי בעיה עם הEOF של rs..
אני מבצע שאילתת בחירה, ועושה תנאי if..else..end if על הערך של rs.EOF.
בדקתי בPHPMyAdmin את השאילתה, ומוחזרות רשומות.
אבל משום מה, למרות שהוחזרו רשומות הRS מתעלם מהתנאי שיצרתי קודם וממשיך כאילו לא הוחזרו רשומות.
מה יכולה להיות הבעיה?
13 תשובות
מה עם קוד?
הינה
rs.Open sql
if not rs.EOF then
dim ID
ID=rs("ID")
rs.Close
conn.Close
sql="SELECT ……"
conn.Open "DSN=mydsn"
rs.Open sql
if rs.EOF then
rs.Close
set rs=nothing
conn.Close
sql="UPDATE….. "
conn.Open "DSN=mydsn2"
conn.Execute sql
conn.Close
conn.Open "DSN=mydsn"
else
rs.Close
set rs=nothing
end if
end if
כמו שאפשר לראות, יש תנאי rs.eof אחד בתוך השני (אולי זה קשור לבעיה?)
התנאי המודגש (הפנימי) הוא התנאי שאליו אני מתכוון.
כשאתה מנסה לבצע שאילתה
אתה לא מגדיר גם את החיבור בפתיחה (rs.open). אין לך שגיאה?
למה אתה פותח וסוגר כל הזמן את החיבור?
תשובה
אחרי שאני מכניס אובייקט רקורדסט למשתנה rs, אני משתמש במאפיין
rs.activeconnection
וקובע לו שהחיבור שאני משתמש בו הוא conn, לכן אין שגיאה.
אני סוגר ופותח את החיבור בגלל שאני צריך לבצע את השאילתה על מסדי נתונים שונים..
אין משהו שאני יכול לעשות
בעיניין? זה אבוד?
איך אני פותר את הבעיה (גם אם זה באופן עקיף)?
אז בעצם הקוד שנתת
הוא אחרי חיתוך ומחיקה של שורות קוד אחרות.
די קשה לקבוע כאן היכן הבעיה.
השורות שמחקתי
הם הכנסת נתונים למשתנים..
זה בטח לא מה שעושה את הבעיה לא?
יכול להיות שזה קורה בגלל שזה תנאי rs.EOF בתוך אחר?
שאלה לי אלייך…
זאת לא שאלה שאמורה לקטול אותך או משהו.
אבל חייבים לסגור את אובייקט החיבור?
הכוונה שלי היא שכשסגרת את ה RS סגרת גם את החיבור ואז פתחת אותו שוב
ואז פתחת את ה RS שוב.
הקודים שלי פועלים מצויין למשל בלי לסגור אובייקט חיבור.
אבל זה גונב תעבורה.
לא
לא צריך לסגור את החיבור אלה אם מסיימים את העבודה עם המסד..
אני עושה את זה בגלל שאני מחליף מסד נתונים כל שאילתה.
אין פתרון?
זה הורס לי את כל המערכת..
יש אולי רעין לדרך עקיפה, ואולי מתוחכמת?
נסה לקרוא לרקורדסט השני בשם אחר
הצלחתי לפתור את הבעיה
כנראה בגלל הconn.close וopen מחדש, המאפיין rs.activeconnection התאפס ככה שלרקורדסט לא היה קונקשיין..
אז בסופו של דבר עשיתי כך:
rs.open sql, conn
וזה פתר את הבעיה..
תודה רבה שניסיתם לעזור לי.