שלח תשובה

זירת השאלות

547
צפיות
12
תשובות

שאלה בהעברה מטבלה לטבלה

,‏ 21 באוגוסט, 2004

זהו הקוד:


set rs1=Server.CreateObject("adodb.recordset")
sql1="select * from kesher_settle where racaz=6 "
rs1.open sql1,conn
do until rs1.EOF
set rs1=Server.CreateObject("adodb.recordset")
sql2="update kesherz set enter_date='" & rs1(enter_date) & "',status=" & rs1(status) & ",client_id=" & rs1(client_id) & ",first_name='" & rs1(first_name) & "',last_name='" & rs1(last_name) & "',birth_date=" & rs1(birth_date) & ",family_status=" & rs1(family_status) & ",job='" & rs1(job) & "',children=" & rs1(children) & ",address='" & rs1(address) & "',job_address='" & rs1(work_address) & "',hphone='" & rs1(hphone) & "',wphone='" & rs1(wphone) & "',mobile='" & rs1(mobile) & "',fax='" & rs1(fax) & "',email='" & rs1(email) & "',remark='" & rs1(remark) & "',came_from=" & rs1(came_from) & ",ech=" & rs1(ech) & ",racaz=" & rs1(racaz) & ",reason='" & rs1(reason) & "',f_racaz=" & rs1(f_racaz) & ",f_date='" & rs1(f_date) & "'  
rs2.movenext
loop
rs1.Close
set rs1=nothing

אני צריך להעביר שדות שבהגדרה שלהם הם כן /לא
איךא ני משלב את זה במשפט העדכון????

תגיות:

12 תשובות

  1. אני רואה פה עדכון, לא ההעברה
    בכל מקרה, אתה פשוט מוסיף תנאי


    WHERE fld=True/Flase

  2. פחן הגיב:

    לא מצליח לפתור את הלולאה:
    הקוד הוא:

    <%
    set conn=Server.CreateObject("adodb.connection")
    conn.Open "db_name"
    set rs=Server.CreateObject("adodb.recordset")
    sql="select * from racazim"
    rs.Open sql,conn
    do until rs.EOF
    set rs1=Server.CreateObject("adodb.recordset")
    sql1="SELECT client_id INTO kesherz FROM kesher_settle where racaz="& rs("id")
    rs1.open sql1,conn
    loop
    rs.MoveNext

    conn.Close
    set conn=nothing
    %>

    בטבלת racazim יש 3 רכזים הממוספרים בid
    1,2,3
    בפועל הוא מעביר לי לטבלת גיבוי רק את הרכז הראשון ולא את כל השלושה משהו בלולאה לא טוב מה זה???
    תודה

  3. פחן הגיב:

    נסיון שני

    <%
    set conn=Server.CreateObject("adodb.connection")
    conn.Open "db_name"
    set rs=Server.CreateObject("adodb.recordset")
    sql="select * from racazim"
    rs.Open sql,conn
    do until rs.EOF
    set rs1=Server.CreateObject("adodb.recordset")
    sql1="SELECT client_id INTO kesherz FROM kesher_settle where racaz="& rs("id")
    rs1.open sql1,conn
    rs.MoveNext
    loop

    conn.Close
    set conn=nothing
    %>

    למה זה לא פועל מישהו יכול לעזור???

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

    כי
    אתה לא סוגר את ה RS לפני שאתה פותח אותו שוב (וממש ממש לא מומלץ לפתוח RS בלולאה…)

  5. פחן הגיב:

    זאת לא הבעייה הבעייה היא שכל פעם בל
    ולאה אני אומר לו ליצור טבלת גיבוי חדשה בשם keshery ואז אחרי הפעם הראשונה שהוא יוצר  הוא נותן לי שגיאה שהטבלה קיימת .
    איך אני יכול לפתור את זה???
    בפורום asp זוהר פלד אמר לי להכניס את כל ה-Id למחרוזת אשר כל id מופרד בפסיק ואז לעשות במשפט יצירת הטבלה משהו עם in/
    אני לא יודע איך מכניסים למחרוזת עם פסיק בין id ל id ןאני לא יודע איך משתמשים עם In תוכלו לעזור אולי????
    תודה על הנכונות.

  6. זהר פלד הגיב:

    לא הבנתי…
    אתה צריך רק לעדכן את הטבלה keshery, לא?
    אז בשביל מה אתה שולף את כל הטבלה racazim?

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

    <%
    set conn=Server.CreateObject("adodb.connection")
    conn.Open "db_name"
    set rs=Server.CreateObject("adodb.recordset")
    sql="SELECT id FROM racazim" ' select only id from racazim
    rs.Open sql,conn
    idString = rs.getString(2,-1,"",",")  ' use getString method
    rs.close ' close the rs

    idString = left(idString,len(idString-1)) ' cut the last , from the idString

    sql1="SELECT client_id INTO kesherz FROM kesher_settle where racaz IN ("& idString &")"
    rs.open sql1,conn
    rs.close
    conn.Close
    set rs = nothing
    set conn=nothing
    %>

    על getString ב ADO
    על אופרטור IN ב sql

  7. פחן הגיב:

    לא לעדכן אלא ליצור
    טבלת גיבוי חדשה אשר נקראת kesherz והנתונים שיכנסו אליה הם כל הcusomer_id מטבלת kesher_settle אשר השדה racaz בטבלת kesher_settle תואם ל-id מטבלת racazim/
    תודה על הנכונות לעזור אולי עכשיו זה יהיה מובן???

  8. פחן הגיב:

    זה מתחיל להסתדר;
    הבעייה היא שהוא רושם לי שגיאה


    Operation is not allowed when the object is closed.
    על שורה המודגשת בשחור:
    <%
    set conn=Server.CreateObject("adodb.connection")
    conn.Open "db_name"
    set rs=Server.CreateObject("adodb.recordset")
    sql="SELECT id FROM racazim" ' select only id from racazim
    rs.Open sql,conn
    idString = rs.getString(2,-1,"",",")  ' use getString method
    rs.close ' close the rs

    idString = left(idString,len(idString-1)) ' cut the last , from the idString

    sql1="SELECT client_id INTO kesherz FROM kesher_settle where racaz IN ("& idString &")"
    rs.open sql1,conn
    rs.close
    conn.Close
    set rs = nothing
    set conn=nothing
    %>
    הוא יוצר את הטבלה אך נתקע אחרי 10 id

  9. פחן הגיב:

    כאשר הורדתי את:


    idString = left(idString,len(idString-1)) ' cut the last , from the
    idString


    משום מה רק אז הוא מושך את כל ה-
    id
    מטבלת
    racazim???

  10. זהר פלד הגיב:

    תעבור שלב שלב.
    קודם כל תשלוף את כל ה id, תראה שאתה מקבל בדיוק את המחרוזת שאתה רוצה, ואז תנסה ליצור את הטבלה השניה.
    לא הבנתי באיזה מצב אתה נמצא עם זה עכשיו. זה עובד או לא, ואם לא, מה הודעת השגיאה?

  11. פחן הגיב:

    כאשר הורדתי מהקוד את השורה


    idString = left(idString,len(idString-1)) ' cut the last , from the IdString


    שאתה רשמת הוא פועל לי מצויין.
    למרות שגיאה שהוא נותן:


    Operation is not allowed when the object is closed.


    על השורה


    rs.close


    השני
    ואני חוזרומציין שזה פועל למרות השגיאה.

  12. BuildHome הגיב:

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

    rs.close
    response.write rs("id")

    תסגור אותו בסוף השימוש בו ולא לפני כן.

שלח תשובה