עזרה עם קוד – פיתוח פרטי

פורומים אפיון ופיתוח פריוריטי עזרה עם קוד – פיתוח פרטי

  • Post
    MIKE ABU AWAD
    משתתף
    שלום,

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

    במקום לקבל פירוט של כל המקטים אני מקבל פירוט של מקט אחד.

    תודה
    <p style="text-align: left;">EXECUTE 'BUDGETREP' :MOD, :GL, :BUD1, :VER, :REP1,
    :RPD1, :ST, :FPR, :TPR;
    /***/
    LINK BUDGETREP TO :REP1;
    GOTO 899 WHERE :RETVAL <= 0;
    LINK BUDGETREP GREP TO :GLOBAL.GREP;
    GOTO 899 WHERE :RETVAL <= 0;
    /**************************************/
    UPDATE BUDGETREP SET DNAME = SQL.ENV
    WHERE BUDGET = -1;
    INSERT INTO BUDGETREP GREP
    SELECT * FROM BUDGETREP
    WHERE BUDGET <> 0;
    UNLINK BUDGETREP GREP;
    /**/
    LINK BUDREPDET TO :RPD1;
    GOTO 898 WHERE :RETVAL <= 0;
    LINK BUDREPDET GRPD TO :GLOBAL.GRPD;
    GOTO 899 WHERE :RETVAL <= 0;
    /**************************************/
    /**** CURSOR FOR EACH BUDGET ****/
    DECLARE SAE_BUDREPDET CURSOR FOR
    SELECT BUDGET
    FROM BUDGETREP
    WHERE BUDGET <> 0;
    OPEN SAE_BUDREPDET;
    LABEL 333;
    :SAE_BUDDET = 0;
    :SAE_DNAME = ";
    FETCH SAE_BUDREPDET INTO :SAE_BUDDET;
    GOTO 222 WHERE :RETVAL = 0 ;
    /***/
    UPDATE BUDREPDET GRPD
    SET BUDGET = :SAE_BUDDET
    WHERE BUDGET > 0;
    INSERT INTO BUDREPDET GRPD
    SELECT * FROM BUDREPDET
    WHERE BUDGET <> 0;
    LOOP 333;
    LABEL 222;
    CLOSE SAE_BUDREPDET;
    /**** CLOSE CURSOR ****/
    UNLINK BUDREPDET GRPD;
    UNLINK BUDREPDET;
    LABEL 898;
    UNLINK BUDGETREP;
    LABEL 899;
    UNLINK BUDGETS BUD1;
    LABEL 900;
    /****/
    LOOP 111;
    LABEL 1101;
    CLOSE DNAMECUR;
    LABEL 1100;</p>
     

מוצגות 2 תגובות – 1 עד 2 (מתוך 2 סה״כ)
  • Replies
    yitzchok
    משתתף
    IL
    ככל הנראה זה קוד חלקי ולכן אין לנו דרך להביע דעה מסודרת.

    אני לא יודע מה אתה מנסה לעשות אבל לי די ברור שאתה לא עושה את זה נכון… לכל הפחות רוב הסיכויים שיכול להיות יותר יעיל.

    בכל מקרה אציין שאני כן רואה שהכינון של LINK GOTO UNLINK LABEL לא טוב. במצב הרגיל לא משתמשים ב-GOTO הזה בפועל אבל כשיקרה חשוב שיעבוד נכון; יכול לצאת מטעות שם שיבושים בנתונים.

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    elig
    משתתף
    באמת הקוד מלא בדברים מיותרים, אלא אם אתה עושה בהם שימוש באופן שלא רואים בקוד שלך.

    אתה צריך להבין מה קורה בשאילתה הזו:

    SELECT BUDGET
    FROM BUDGETREP
    WHERE BUDGET <> 0;
    לדעתי היא תתן לך רק תוצאה אחת. אם אתה רוצה לשלוף אותה, תוסיף לפני הקרסור את השורה:
    SELECT BUDGET FROM BUDGETREP WHERE BUDGET <> 0 TABS 'C:\TMP\STK.TXT' ;
    אם אתה רוצה שהקובץ יווצר בנתיב אחר, אתה יכול לשנות את הטקסט בסוף.
מוצגות 2 תגובות – 1 עד 2 (מתוך 2 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.