שלח תשובה

זירת השאלות

345
צפיות
32
תשובות

שאילתה ששולפת את הערך הגבוה

,‏ 18 בספטמבר, 2004

אני רוצה לשלוף מתוך טבלה עם שדה מסוג מספר את הערך האחרון הכי גבוה שבו ואז לבכניס אותו למשתנה להוסיף לו אחד ולהחזיר רשומה חדש עם נתונים שהמספור שלה יהיה הערך הגבוה /שנשלף פלוס 1
לדוגמא הרושמה של הלקוח אברון היתה 500 הכי גבוהה ועכשיו נכנס לקוח חדש בשם משה אז אני רוצה להכניס אותו עם מספור 501.
מקווה שזה מובן תודה מראש לעוזרים.

תגיות:

32 תשובות

  1. BuildHome הגיב:

    שאילתת MAX
    SQL = "SELECT MAX(field) AS maxNum FROM tbl"
    לאחר מכן זה הצבת maxNum במשתנה והכנסת הערך החדש למסד.

  2. פחן הגיב:

    השאלה שלי היא:
    נניח ולשדה קוראים client_id אז אחרי שאני שולף אותו איך אני מוסיף לו 1 מחינת השרשור???
    תודה על התשובה המהירה.

  3. ניר טייב הגיב:

    מה הבעיה בדיוק?


    SQL = "SELECT MAX(field)+1 AS maxNum FROM tbl"

    למה פשוט לא להשתמש במספור אוטומטי ?

  4. פחן הגיב:

    הבעייה היא שזו טבלה
    שהוספתי לה שדות ולכן הייתי חייב שהשדה client_id יהיה מספר ולא אוטומטי.
    (הייתי חייב להשאיר את השדות הקיימים עם הclient_id  המקורי שלהם)
    רציתי לשאול איך אני רושם את המשתמנה אחרי זה :
    נניח והמשפט שלי הוא :

    SQL = "SELECT max(client_id)+1 AS maxNum FROM customer"

    אז איך אני מכניס את השדה למשתנה אחרי זה:

  5. פחן הגיב:

    תודה רבה מאוד
    על עזרתכם אין כמוכם

  6. פחן הגיב:

    בעייה
    הקוד עובד לאט ובסוף מודיע על שגיאהexception occured

    הקוד מנסה לשלוף את המועצות ואז בלולאה לרוץ על הישובים ולרשום למשתמש
    את המועצה עם הישובים הרלונטיים אליה.
    הקוד שלי הוא:


                  <%
    set rs54=Server.CreateObject ("adodb.recordset")
    sql54="select * from report_moazak order by moaza"
    rs54.Open sql54,conn
                    
                    i=1
                      do until rs54.EOF
    set rs5=Server.CreateObject ("adodb.recordset")
    sql5="select * from report_yeshuvk where moaza=" & rs54("id")
    rs5.Open sql5,conn
    Response.Write "  '" & rs54("moaza") & "'-<input type=checkbox name=ryesuv" & i & " value=" & rs5("id") & ">  " & rs5("yesuv") & " &nbsp"
                            
    rs5.MoveNext
      i=i+1

      rs54.movenext                                  
    loop
      
                                       rs54.Close
                    set rs54=nothing
                      %>

    מה לא טוב פה???

  7. BuildHome הגיב:

    לא אעבור על הקוד
    בלי לדעת היכן השגיאה (איזו שורה).
    שאתה שם קוד שיש בו שגיאה, תסמן את השגיאה באדום,בולט וכו' – שנדע.

  8. פחן הגיב:

    צודק במליון אחוז
    השאלה הבסיסית האם הלולאה כתובה נכון

    <%
    set rs54=Server.CreateObject ("adodb.recordset")
    sql54="select * from report_moazak order by moaza"
    rs54.Open sql54,conn
                    
                    i=1
                      do until rs54.EOF
    set rs5=Server.CreateObject ("adodb.recordset")
    sql5="select * from report_yeshuvk where moaza=" & rs54("id")
    rs5.Open sql5,conn
    Response.Write "  '" & rs54("moaza") & "'-<input type=checkbox name=ryesuv" & i & " value=" & rs5("id") & ">  " & rs5("yesuv") & "  "
                            
    rs5.MoveNext
      i=i+1

      rs54.movenext                                  
    loop
      
                                       rs54.Close
                    set rs54=nothing
                      %>


    עוד שאלה:
    איך אני בודק תיבת סימון מסוג checkbox האם מילאו???

  9. BuildHome הגיב:

    מספר דברים
    1. לא יוצרים רקורדסט בתוך לולאה
    2. אחרי ביצוע שאילתה sql5 לא התחלת לולאה ובסוף השורה האדומה עשית שיעבור רשומה כאשר אין לולאה לאותו הרקורדסט.

  10. פחן הגיב:

    הבעייה עכשיו היא:
    זהו הקוד:


    <%
      set rs5=Server.CreateObject ("adodb.recordset")
      set rs54=Server.CreateObject ("adodb.recordset")
      sql54="select * from report_moazak order by moaza"
      rs54.Open sql54,conn

                                     do until rs54.eof
    sql5="select * from report_yeshuvk where moaza=" & rs54("id")
    rs5.Open sql5,conn
                   do until rs5.EOF  
                     i=1
                              
    Response.Write "  " & rs54("moaza") & "-<input type=checkbox name=ryesuv" & i & " value=" & rs5("id") & ">  " & rs5("yesuv") & " <br> "
         rs5.MoveNext
         loop          

    rs54.MoveNext

      
      
      i=i+1                                
    loop
          rs5.Close
    set rs5=nothing
                                       rs54.Close
                      set rs54=nothing
                      %>

    השגיאה היא:


    Operation is not allowed when the object is open.

  11. BuildHome הגיב:

    זה לא ילך
    אתה צריך לסמן לי את השורה שבגללה יש את השגיאה.

    בגלל שאני מכיר את השגיאה אז נסה להחליף את סדר יצירת הרקורדסטים באופן הזה:
      set rs54=Server.CreateObject ("adodb.recordset")
      set rs5=Server.CreateObject ("adodb.recordset")

  12. Ami הגיב:

    ככה


    <%
      set rs54=Server.CreateObject ("adodb.recordset")
      sql54="select * from report_moazak order by moaza"
      rs54.Open sql54,conn

                                     do until rs54.eof
    set rs5=Server.CreateObject ("adodb.recordset")
    sql5="select * from report_yeshuvk where moaza=" & rs54("id")
    rs5.Open sql5,conn
                   do until rs5.EOF  
                     i=1
                              
    Response.Write "  " & rs54("moaza") & "-<input type=checkbox name=ryesuv" & i & " value=" & rs5("id") & ">  " & rs5("yesuv") & " <br> "
         rs5.MoveNext
         loop          

    rs54.MoveNext

      
      
      i=i+1                                
    loop
          rs5.Close
    set rs5=nothing
                                       rs54.Close
                      set rs54=nothing
                      %>

  13. פחן הגיב:

    התנצלותי שנית


    <%
      set rs5=Server.CreateObject ("adodb.recordset")
      set rs54=Server.CreateObject ("adodb.recordset")
      sql54="select * from report_moazak order by moaza"
      rs54.Open sql54,conn

                                     do until rs54.eof
    sql5="select * from report_yeshuvk where moaza=" & rs54("id")
    rs5.Open sql5,conn
                   do until rs5.EOF  
                     i=1
                              
    Response.Write "  " & rs54("moaza") & "-<input type=checkbox name=ryesuv" & i & " value=" & rs5("id") & ">  " & rs5("yesuv") & " <br> "
         rs5.MoveNext
         loop          

    rs54.MoveNext

      
      
      i=i+1                                
    loop
          rs5.Close
    set rs5=nothing
                                       rs54.Close
                      set rs54=nothing
                      %>

  14. BuildHome הגיב:

    מה שכתבתי לא עזר לך?
    זה אמור לטפל בבעיה.

  15. פחן הגיב:

    ניסיתי את מה שami הציע
    עכשיו הוא שולף לי מועצה וישוב ליד לדוגמא:
    מועצת גלבוע-ישוב מירב
    מועצת גלבוע ישוב אדמית
    מועצת בקעת ביתשאן ישוב מיכל
    מועצת בקעת בית שאן ישוב חמדיה וכו.
    אני רוצה שהוא ישלוף לי כל פעם מועצה פעם אחת וישרשר אליה את כל הישובים השייכים לה אחריה לדוגמא:
    מועצת גלבוע-מירב,אדמית,
    מועצת בקעת בית שאן- מיכל,חמדיה

  16. Ami הגיב:

    ככה


    <%
      set rs54=Server.CreateObject ("adodb.recordset")
      sql54="select * from report_moazak order by moaza"
      rs54.Open sql54,conn

                                     do until rs54.eof
    Response.Write "  " & rs54("moaza") & " <br>"
    set rs5=Server.CreateObject ("adodb.recordset")
    sql5="select * from report_yeshuvk where moaza=" & rs54("id")
    rs5.Open sql5,conn
                   do until rs5.EOF  
                     i=1
                              
    Response.Write "    <input type=checkbox name=ryesuv" & i & " value=" & rs5("id") & ">  " & rs5("yesuv") & " <br> "
         rs5.MoveNext
         loop          

    rs54.MoveNext

      
      
      i=i+1                                
    loop
          rs5.Close
    set rs5=nothing
                                       rs54.Close
                      set rs54=nothing
                      %>

  17. פחן הגיב:

    עוד שאלה
    אני רוצה לעשות תנאי שאם נשלפו יותר מחמישה ישובים כל סבב של הלולאה אזי יהיה ירידת שורה וירשמו המשך הישובים האם אפשרי ואיך?

  18. BuildHome הגיב:

    ככה
    If i mod 5 = 0 Then Response.Write "<br>"
    כמובן שאתה מוסיף את זה בדיוק לפני rs5.MoveNext.
    אמור לעבוד כמו שצריך.

  19. ניר טייב הגיב:

    מדובר בלולאת while ?
    כי אם כן אז אתה יכול לאתחל משתנה i על 0 ובכל סיום של לולאה תבצע תנאי – אם I שווה  n אז תאפס את I ואם לא אז תעלה את I באחד

    n – זה מס' מסוים שאתה בוחר (במקרה הזה 5)

    דוגמא:

    var i=0, n=5;
    while(!rs.EOF){



    Response.Write((i==n)?"<br />":null);
    rs.moveNext();
    }

  20. פחן הגיב:

    מה שעשיתי זה:


            
                    <%
    set rs54=Server.CreateObject ("adodb.recordset")
    sql54="select * from report_moazak order by moaza"
    rs54.Open sql54,conn

                                     do until rs54.eof
                                 Response.Write"<br><font color=red><b> " & rs54("moaza") & ":</b></font>"
    set rs5=Server.CreateObject ("adodb.recordset")
    sql5="select * from report_yeshuvk where moaza=" & rs54("id")&" order by yesuv"
    rs5.Open sql5,conn
                  
                   do until rs5.EOF  
                    
                     i=1
                          
    Response.Write " <input type=checkbox name=ryesuv" & i & " value=" & rs5("id") & ">  " & rs5("yesuv") & ""
         If i mod 5 = 0 Then
         Response.Write "<br>"
         rs5.MoveNext
        end if
         loop          

    rs54.MoveNext

      
      
      
      i=i+1                                
    loop
          rs5.Close
    set rs5=nothing
                                       rs54.Close
                      set rs54=nothing
                      %>
                  
                  
                      <input type=hidden name=total value=<%=i%>>
                      </td></tr>

    והשגיאה שהוא נתן לי היא
    שעבר הזמן של הscriptיכול לרוץ על השרת.

  21. BuildHome הגיב:

    תיקון
         If i mod 5 = 0 Then Response.Write "<br>"
         rs5.MoveNext
         loop
    או
         If i = 5 Then
         Response.Write "<br>"
         i = 1
         end if
         rs5.MoveNext
         loop

    וכמו שאמרתי מקודם, לא יוצרים רקורדסט בתוך לולאה.

  22. פחן הגיב:

    עוד שאלה
    איך אני משרשר ללינק יותר ממשתנה אחד לצורך שליחה לדף???
    וקליטתו ב-QUERYSTRING????

  23. אוריקס הגיב:

    קודם כל
    סימן שאלה אחד בכל פעם בהחלט מספיק, יותר מזה זה כבר מציק.

    דבר שני:


    <a href = "http://www.walla.co.il?a=b&c=f">aaa</a&gt;

  24. פחן הגיב:

    סידור שליפה רשומות
    איך אני מסדר תוצאות שליפה קודם לפי שדה אחד ואח"כ לפי שדה שני
    לדוגמא:
    יש לי את כהן יעקב ואח"כ את כהן רוני
    אני רוצה שישלף קודם יעקב ואח" כ רוני
    כמובן שהשם הפרטי והמשפחה הם 2 שדות נפרדים
    תודה.

  25. ככה
    מפרידים עם פסיק, ככל שהשדה ראשון, עדיפות הסידור שלו ראשונה.

    ORDER BY firstName, lastName

שלח תשובה