345
צפיות
צפיות
32
תשובות
תשובות
שאילתה ששולפת את הערך הגבוה
אני רוצה לשלוף מתוך טבלה עם שדה מסוג מספר את הערך האחרון הכי גבוה שבו ואז לבכניס אותו למשתנה להוסיף לו אחד ולהחזיר רשומה חדש עם נתונים שהמספור שלה יהיה הערך הגבוה /שנשלף פלוס 1
לדוגמא הרושמה של הלקוח אברון היתה 500 הכי גבוהה ועכשיו נכנס לקוח חדש בשם משה אז אני רוצה להכניס אותו עם מספור 501.
מקווה שזה מובן תודה מראש לעוזרים.
32 תשובות
שאילתת MAX
SQL = "SELECT MAX(field) AS maxNum FROM tbl"
לאחר מכן זה הצבת maxNum במשתנה והכנסת הערך החדש למסד.
השאלה שלי היא:
נניח ולשדה קוראים client_id אז אחרי שאני שולף אותו איך אני מוסיף לו 1 מחינת השרשור???
תודה על התשובה המהירה.
מה הבעיה בדיוק?
SQL = "SELECT MAX(field)+1 AS maxNum FROM tbl"
למה פשוט לא להשתמש במספור אוטומטי ?
הבעייה היא שזו טבלה
שהוספתי לה שדות ולכן הייתי חייב שהשדה client_id יהיה מספר ולא אוטומטי.
(הייתי חייב להשאיר את השדות הקיימים עם הclient_id המקורי שלהם)
רציתי לשאול איך אני רושם את המשתמנה אחרי זה :
נניח והמשפט שלי הוא :
SQL = "SELECT max(client_id)+1 AS maxNum FROM customer"
אז איך אני מכניס את השדה למשתנה אחרי זה:
ככה
maxNum = rs("maxNum")
למשתנה שלך קוראים maxNum
תודה רבה מאוד
על עזרתכם אין כמוכם
בעייה
הקוד עובד לאט ובסוף מודיע על שגיאה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") & "  "
rs5.MoveNext
i=i+1
rs54.movenext
loop
rs54.Close
set rs54=nothing
%>
מה לא טוב פה???
לא אעבור על הקוד
בלי לדעת היכן השגיאה (איזו שורה).
שאתה שם קוד שיש בו שגיאה, תסמן את השגיאה באדום,בולט וכו' – שנדע.
צודק במליון אחוז
השאלה הבסיסית האם הלולאה כתובה נכון
<%
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 האם מילאו???
מספר דברים
1. לא יוצרים רקורדסט בתוך לולאה
2. אחרי ביצוע שאילתה sql5 לא התחלת לולאה ובסוף השורה האדומה עשית שיעבור רשומה כאשר אין לולאה לאותו הרקורדסט.
הבעייה עכשיו היא:
זהו הקוד:
<%
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.
זה לא ילך
אתה צריך לסמן לי את השורה שבגללה יש את השגיאה.
בגלל שאני מכיר את השגיאה אז נסה להחליף את סדר יצירת הרקורדסטים באופן הזה:
set rs54=Server.CreateObject ("adodb.recordset")
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
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
%>
התנצלותי שנית
<%
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
%>
כן ככה
מה שכתבתי לא עזר לך?
זה אמור לטפל בבעיה.
ניסיתי את מה ש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
%>
הסתדר תודה .
עוד שאלה
אני רוצה לעשות תנאי שאם נשלפו יותר מחמישה ישובים כל סבב של הלולאה אזי יהיה ירידת שורה וירשמו המשך הישובים האם אפשרי ואיך?
ככה
If i mod 5 = 0 Then Response.Write "<br>"
כמובן שאתה מוסיף את זה בדיוק לפני rs5.MoveNext.
אמור לעבוד כמו שצריך.
מדובר בלולאת 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();
}
מה שעשיתי זה:
<%
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יכול לרוץ על השרת.
תיקון
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
וכמו שאמרתי מקודם, לא יוצרים רקורדסט בתוך לולאה.
עוד שאלה
איך אני משרשר ללינק יותר ממשתנה אחד לצורך שליחה לדף???
וקליטתו ב-QUERYSTRING????
קודם כל
סימן שאלה אחד בכל פעם בהחלט מספיק, יותר מזה זה כבר מציק.
דבר שני:
<a href = "http://www.walla.co.il?a=b&c=f">aaa</a>
סידור שליפה רשומות
איך אני מסדר תוצאות שליפה קודם לפי שדה אחד ואח"כ לפי שדה שני
לדוגמא:
יש לי את כהן יעקב ואח"כ את כהן רוני
אני רוצה שישלף קודם יעקב ואח" כ רוני
כמובן שהשם הפרטי והמשפחה הם 2 שדות נפרדים
תודה.
כך
select * from table1 order by last_n, name
ככה
מפרידים עם פסיק, ככל שהשדה ראשון, עדיפות הסידור שלו ראשונה.
ORDER BY firstName, lastName
אופס
ORDER BY lastName, firstName