פקודת UPDATE לטבלת יסוד USERSB

פורומים אפיון ופיתוח פריוריטי פקודת UPDATE לטבלת יסוד USERSB

  • Post
    ויקה
    משתתף
    שלום,

    פיתחתי מסך בן חדש "מועמדים X" למסך סטנדרטי משרות . מטרת הפיתוח לנהל את כל הנושא של מועמדים באמצעות המסך בן הפרטי, תוך כדי סנכרון הנתונים מול המסך הסטנדרטי של המערכת "מועמדים לעבודה".

    שלבי תהליך העבודה:

    1.  במסך בן פיתוח פרטי המשתמש יקליד את המועמד החדש.
    2. הפעלת הממשק לצורך סנכרון נתונים למסך "מועמדים לעבודה".
    3. במסך בן פיתוח פרטי ,עדכון סטטוס של מועמד מ"מועמד" לסטטוס "עובד".
    4. הפעלת ממשק לעדכון סטטוס במסך סטנדרטי "מועמדים לעבודה".
    5. הפעלת פרוצדורה פרטית "הפיכת מועמד לעובד" (העתקה מפרוצדורה סטנדרטית הקיימת בהפעלות ישירות במסך "מועמדים לעבודה").מיקום הפרוצדורה בהפעלות ישירות של המסך משרות.
    • השלבים 1-4 עובדים בצורה תקינה .
    • בשלב 5 קיימת בעיה שנדרש להשתמש בפקודת UPDATE לטבלה הסטנדרטית USERSB לצורך עדכון דגל של סטטוס מועמד ו-USERID (אני יודעת שזה לא מומלץ ). עשיתי בדיקה של כל השלבים בפרוצדורה ע"י פקודת TABS,השלב של עדכון USERID לא עובד בכלל  גם ב WINDBI רואים שהמס' של USERID נשאר ללא שינוי.

    שאלות:

    1. הייתי מעדיפה להפעיל את הפרוצדורה הסטנדרטית של המערכת " הפיכת מועמד לעובד" ,בממשק כדי לא לשבור את התהליך הסטנדרטי של הקמת עובד. האם יש אפשרות כזאת?
    2. האם יש דרכים נוספות לבצע את השלב 5 , הפיכת מועמד לעובד ?

     

מוצגות 4 תגובות – 1 עד 4 (מתוך 4 סה״כ)
  • Replies
    ויקה
    משתתף
    הקוד של הפרוצדורה שבניתי:
    <p dir="ltr" style="text-align: left;">LINK VIKA_JOBCANDIDATES TO :$.PAR;
    ERRMSG 10 WHERE :RETVAL <= 0;
    /************************* INPUT *********************************/
    SELECT VIKA_JOB,VIKA_IDNUMBER
    FROM VIKA_JOBCANDIDATES
    WHERE VIKA_JOB <> 0
    TABS ADDTO 'C:\TMP\NASTIA.TXT';
    /*****************************************************************/
    :VIKUSERB = ";
    :USERID = 0;
    :EMPLOYEEFLAG = '\0';
    SELECT VIKA_JOBCANDIDATES.VIKA_IDNUMBER,USERSB.USERID,
    USERSTATUSES.EMPLOYEEFLAG
    INTO :VIKUSERB, :USERID,:EMPLOYEEFLAG
    FROM VIKA_JOBCANDIDATES, USERSB,USERSTATUSES
    WHERE USERSB.USERB <> 0
    AND USERSB.USERSTATUS = USERSTATUSES.USERSTATUS
    AND VIKA_JOBCANDIDATES.VIKA_IDNUMBER = USERSB.IDNUMBER
    AND VIKA_JOBCANDIDATES.VIKA_USERSTATUS=USERSTATUSES.USERSTATUS;
    UNLINK VIKA_JOBCANDIDATES;
    SELECT :VIKUSERB, :USERID,:EMPLOYEEFLAG
    FROM DUMMY
    TABS ADDTO 'C:\TMP\TANIA.TXT';
    ERRMSG 1 WHERE :USERID > 0 ;
    ERRMSG 4 WHERE :EMPLOYEEFLAG <> 'Y';
    ERRMSG 3 WHERE :INACTIVE = 'Y' ;
    /**************UPD STATUS AND  USERID********************/
    :USERSTATUS = 0 ;
    SELECT USERSBSTAT INTO :USERSBSTAT
    FROM USERSBSTATS WHERE INITSTATFLAG = 'Y' ;
    UPDATE USERSB SET USERID = :USERID, – השלב שלא עובד
    USERSBSTAT = (:USERSBSTAT <> 0 ? :USERSBSTAT : USERSBSTAT)
    WHERE USERID = :USERID;
    WRNMSG 2 WHERE EXISTS ( SELECT 'X' FROM USERSB
    WHERE USERB = :USERB AND USERID > 0);

    </p>

    yitzchok
    משתתף
    IL
    שתהיה פרוצדורה משלך אבל לא לבצע עדכונים – קראו לפרוצדורה ההיא

    בשלב SQLI להכין טבלת לינק של USERSB עם הרשומה הרלוונטית

    ואז להפעיל כך

    EXECUTE ACTIVATF '-P', 'USERSCTOB', 'USERSB', :filename

    ;

    אפשר לראות במסמך ה-SDK בחלק של "Running a Procedure/Report from an SQLI Step or Form Trigger"

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

    בהצלחה

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    ויקה
    משתתף
    היי, תודה על התגובה. הבעיה היא שבפרוצדורה USERSCTOB קיים קלט ואז המשתמש נאלץ להקליד את תעודת הזהות של המועד . איך ניתן להימנע מכך?
    yitzchok
    משתתף
    IL
    זה מה שקרה כאשר עשית מה שאני הצעתי?

    יעבוד תקין עם ACTIVATE במקום ACTIVATF ? או בשתי השיטות הקלט מופיע? אני מתפלא קצת כי אין INPUTF ב-USERSCTOB

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
מוצגות 4 תגובות – 1 עד 4 (מתוך 4 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.