דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
ס

סקרן 0

@סקרן 0
אודות
פוסטים
133
נושאים
24
קבוצות
0
עוקבים
1
עוקב אחרי
0

פוסטים

פוסטים אחרונים הגבוה ביותר שנוי במחלוקת

  • הרצת שאילתה בלולאה - VBA אקסס
    ס סקרן 0

    @dovid טעות שלי... פשוט חזרו הרבה מאד שורות ריקות בהתחלה, וזה היה נראה לי ריק... זה עובד מצוין! תודה (וסליחה על התגובה המוטעית...)


  • הרצת שאילתה בלולאה - VBA אקסס
    ס סקרן 0

    @dovid אוקיי, אני חושב שהבנתי במה טעיתי... תיקנתי, והשאילתה עובדת - הנה:

    SELECT תורמים.רחוב, תורמים.עיר, תורמים.שכונה, שאילתה.שם_שכונה
    FROM תורמים INNER JOIN (SELECT ערים.שם as עיר, שכונה.שם_שכונה, רחובות.שם as רחוב
    FROM ערים INNER JOIN (שכונה INNER JOIN רחובות ON שכונה.קוד_שכונה = רחובות.קודשכונה) ON ערים.קוד = רחובות.קודעיר
    )  AS שאילתה ON (תורמים.עיר = שאילתה.עיר) AND (תורמים.רחוב = שאילתה.רחוב);
    
    

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

    נ.ב. בתצוגה באתר יש ערבוב עם האנגלית, עכ"פ הכינויים לשדות בשאילתת המשנה הם בסדר...


  • הרצת שאילתה בלולאה - VBA אקסס
    ס סקרן 0

    @dovid תיקנתי את זה בעצמי ולמרות זאת זה החזיר את אותה שגיאה.
    האם אתה מתכוון לזה:

    SELECT ערים.שם, שכונה.שם_שכונה, רחובות.שם
    FROM ערים INNER JOIN (שכונה INNER JOIN רחובות ON שכונה.קוד_שכונה = רחובות.קודשכונה) ON (ערים.קוד = שכונה.קוד_עיר) AND (ערים.קוד = רחובות.קודעיר);
    
    

    (השמות בפועל קצת שונים ממה שכתבתי בהתחלה, כמובן שתיקנתי אצלי לפני שעדכנתי על השגיאה)

    נ.ב. בינתיים הרצתי אצלי את השאילתה שהבנתי שאתה מתכוון אליה, וחוזרת הודעת שגיאה על צירופים חיצוניים רב משמעיים...
    (הגדרתי את הצירופים כצירוף שמאלי, שמציג את כל הרשומות מ"תורמים" ורק את הזהות ב"שאילתה", וכן שמרתי את שאילתת המשנה בנפרד, ועדיין...)


  • הרצת שאילתה בלולאה - VBA אקסס
    ס סקרן 0

    @dovid השאילתא הראשונה מחזירה הודעת שגיאה "שגיאת תחביר במשפט JOIN

    תודה רבה!


  • הרצת שאילתה בלולאה - VBA אקסס
    ס סקרן 0

    @dovid "רחוב, עיר, שכונה" הם טקסט.


  • הרצת שאילתה בלולאה - VBA אקסס
    ס סקרן 0

    @dovid

    @dovid כתב בהרצת שאילתה בלולאה - VBA אקסס:

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

    מה זה קשור? אם אני מוסיף משהו שמתעסק עם הנתונים - אני לוקח סיכון כביכול שיהיה שיבוש בפעילות התוכנה. ההסכם יוצא מנקודת הנחה שגם מישהו שחושב שהוא מבין עשוי לפגוע בחלקים אחרים של מסד הנתונים - לדוגמה אם הנתונים בשדה אמורים להיות בטייפ אחר וכו' וכו'.
    כשאני מפעיל קוד שהתפקיד שלו זה לעשות את מה שהמתכנת רצה שיקרה - אין בזה שום סיכון. זה הסיבה שאני חושב (מסברא, וכמו שאמרתי אין לי כרגע דרך לוודא את זה), שזה לא יגרום להסרת האחריות.

    @dovid כתב בהרצת שאילתה בלולאה - VBA אקסס:

    עזוב, תן לנו לעזור לך, בבקשה!

    וואו! - אני אביא את המקרה האמיתי (הוא קצת יותר מורכב כדלהלן, ולכן העדפתי לשאול ע"י משל... אולי טעיתי...)

    בדוגמא הזו אני מעדכן שכונה לתורם ע"פ הכתובת שהוזנה. המשתמש לא מזין את השכונה בעצמו כיון שזה נתון אוטומטי ע"פ הרחוב והעיר.

    1.טבלת "תורמים" - "רחוב", "עיר", "שכונה".
    2. טבלת "רחובות" - "מזהה_רחוב", "מזהה_עיר", "שם_רחוב", "מזהה_שכונה"
    3. טבלת "ערים" - "מזהה_עיר", "שם_עיר"
    4. טבלת "שכונות" - "מזהה_שכונה", "שם_שכונה".

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

    הקוד המקורי שאמור לעשות את זה הוא:

    If Not IsNull(Me!רחוב) Then
            Me!שכונה = Nz(DLookup("שם_שכונה", "שכונהלרחוב", "רחוב = '" & Me!רחוב & "' AND עיר = '" & Me!עיר & "'"), "")
        End If
    

    (שכונהלרחוב זו שאילתא שמוציאה את שם_עיר מ"ערים", שם_רחוב מ"רחובות", ושם_שכונה מ"שכונות")

    הקוד הזה לא עובד, והסיבה שלא שאלתי איך לתקן אותו היא מהסיבה דלעיל, שחששתי שזה יפגע באחריות וכו'.

    למעשה יש טופס עדכון, שמבוסס על הטבלה "רחובות", כשעל כל שורה יש כפתור "עדכון", שמריץ את הקוד הבא:

    Private Sub עדכן_Click()
    
            DoCmd.SetWarnings 0
            DoCmd.RunSQL "UPDATE תורמים SET תורמים.שכונה = '" & DLookup("שם_שכונה", "שכונה", "קוד_שכונה =" & Me!קודשכונה & " and קוד_עיר = " & Me!קודעיר) & "' WHERE (((תורמים.עיר)= '" & DLookup("שם", "ערים", "קוד =" & Me!קודעיר) & "') AND ((תורמים.רחוב)= '" & Me!שם & "'));"
            DoCmd.SetWarnings -1
        End If
    
    End Sub
    

    במצב כזה, אני צריך לעבור רחוב רחוב (כ 5000 רלוונטיים במצטבר) וללחוץ על "עדכון".
    זה כל המידע שיש לי לומר, וכל עזרה תתקבל בברכה.

    נ.ב. @dovid האם כדאי למחוק את הפוסטים הקודמים שלי? או שיש בהם איזה תוספת מידע מועילה? לשיקולך...)

    תודה ענקית!


  • הרצת שאילתה בלולאה - VBA אקסס
    ס סקרן 0

    @OdedDvir ע"פ מה שזכור לי (ואני אבדוק את זה שוב בהסכם הרככישה שאינו תחת ידי כרגע), כל פעולה שפועלת ישירות על נתונים גורמת להסרת האחריות (כיון שאז המשתמשים יכולים לפגוע באמינות התוכנה), מה שאין כן בקוד כזה שבס"ה מפעיל שאילתא שהמתכנת יצר. לכן אני חושב שיש חילוק, ולכן אני בכל זאת אשמח לקבל קוד שיעשה את זה.

    על הצד שזה כן יהיה מותר לי (וסתם להעשרה...) התחביר של השאילתא צריך להיות כך?

    UPDATE משווקים
    INNER JOIN (לקוחות)  ON משווקים.פרמטר = לקוחות.פרמטר SET לקוחות.משווק = [משווקים].[משווק];
    
    

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


  • הרצת שאילתה בלולאה - VBA אקסס
    ס סקרן 0

    @mekev זה בדיוק הנקודה (ולכן גם מה שכתב @ארי צריך איזו התאמה למה שאני צריך...)

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

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

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

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


  • הרצת שאילתה בלולאה - VBA אקסס
    ס סקרן 0

    @OdedDvir @dovid האמת שאחרי ששאלתי את השאלה ישבתי עוד זמן רב על התוכנה, והבנתי שהשאלה נבעה מהבנה שגויה שלי על המבנה של ה DB.
    אני לא יכול לצרף מבנה טבלאות כמו שביקש @dovid בצדק רב, (וליתר דיוק זה דורש ממני עבודה מיותרת כמו שאסביר).

    לאחר מעשה הבנתי שהנסיונות לפתור את הבעיה באמצעות שאילתות עדכון אחרות וכדו' לא רלוונטי, והאופציה היחידה שרלוונטית במקרה שלי זה כמו ששאלתי בהתחלה (באופן לא ברור....) וכמו שכתב @OdedDvir (באופן ברור):

    לכתוב קוד שמפעיל את הכפתור 10000 פעמים.

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


  • הרצת שאילתה בלולאה - VBA אקסס
    ס סקרן 0

    יש לי שתי טבלאות, אחת טבלה של לקוחות, ואחת טבלה של אנשי שיווק, שאליהם משוייכים לקוחות. (לכל עובד משוייכים כמה לקוחות.) מסיבות שונות בטבלת הלקוחות לא מעודכן מי איש השיווק שמטפל בלקוח הספציפי, ולכן יש שאילתת עדכון שמעדכנת את השדה "איש שיווק" בטבלת הלקוחות, באמצעות נוסחת Dlookup ע"פ טופס שמבוסס על הטבלה השניה (שבה משוייכים הלקוחות לאנשי השיווק)
    הצורה שבה זה בנוי, שבכל שורה בטופס (טפסים רציפים) יש כפתור, שבלחיצה עליו מורצת השאילתה, כשהפרמטר ב Dlookup הוא המזהה לקוח בשורה הזו. הבעיה היא שצריך להריץ את השאילתה שוב ושוב, על כל שורה בטבלת השיוך... (כ - 10000 שורות...)
    מה שאני רוצה זה קוד - או משהו אחר - שיריץ את השאילתה בלופ על כל השורות בטבלת השיוכים.
    (גילוי נאות: לא אני בניתי את התוכנה, ואין לי דרך כרגע לפנות למי שמכר לי אותה...)


  • נמוג לי המחשב... עזרה!!
    ס סקרן 0

    @קינג-קומפיוטר זה לא עובד בכזה מצב
    @אחד-וחצי שורת המשימות וכדו' מופעל ג"כ ע"י סייר הקבצים, ולכן במצב שנתקעת תיקייה כדאי להרחיב את השורה של הסייר ולסגור רק את התיקייה הספציפית.
    לחילופין אפשר לעשות הפעלה מחדש של הפעולה הלחיצה ימנית על השורה של סייר הקבצים.
    c16679c1-ef62-49e7-8b4b-b004d0f0f64a-image.png


  • מילוי בכל הטבלה באקסס כמו באקסל
    ס סקרן 0

    @באתי-לעזור אם תסביר מה אתה בדיוק רוצה יהיה קל יותר לעזור - אתה רוצה להוסיף טור לטבלה ולמלאות אותו? או למלאות נתונים בטור קיים בהתבסס על הנתונים בטורים האחרים?
    לגבי האפשרות הראשונה אני לא יודע מספיק בשביל להסביר.
    לגבי השאלה השניה אתה נכנס ל"עיצוב שאילתה", למעלה יש לך אופציה שנקראת "עדכון". תבחר בזה, ובשורות למטה (איפה שבוחרים את הטורים) תבחר את הטור שאתה רוצה לעדכן, בשורה עדכן ל תכתוב את הערך שאתה רוצה להזין, ובשורה קריטריונים תכתוב את הקריטריון שלפיו אתה רוצה לעדכן.


  • אקסל גדול
    ס סקרן 0

    @clickone הוא כתב שזה לא עזר לו


  • אקסל גדול
    ס סקרן 0

    @clickone

    @יצחק-ה כתב באקסל גדול:

    גם פיצלתי את הקובץ בחלוקה של 100,00 (מאה אלף) ויצא 62 חלקים
    וגם שמרתי בקידוד UTF-8?
    ולא הועיל במאומה

    מה עוד נשאר לו?


  • אקסל גדול
    ס סקרן 0

    @clickone @יצחק-ה במחילת כל החברים החשובים, קטונתי אבל לדעתי הרעיון שהצעתי הוא הכי פשוט וקל - כמדומני שגם @A0533057932 הציע כנ"ל - וגם לא נראה לי שניסית אותו... לפתוח עם עורך טקסט כל שהוא (פנקס רשימות, Notepad++ וכדו') ולהעתיק את הטקסט ידנית לאקסל.


  • בעיה בהתקנת חבילת שפה - ווינדוס 10
    ס סקרן 0

    @ivrtikshoret לא ניסיתי... אני עם נטפרי, ועדכוני ווינדוס פועל (בלי החסימה של אר אל וכו')
    יש קשר בין זה לסינון?


  • בעיה בהתקנת חבילת שפה - ווינדוס 10
    ס סקרן 0

    @אליר325000 לא עזר... הכל מעודכן ובכל זאת...


  • אקסל גדול
    ס סקרן 0

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


  • אקסל גדול
    ס סקרן 0

    @יצחק-ה עם איזה סיומת הוא?
    עריכה: אחזתי שזה עם סיומת csv... מה הבעיה לפתוח עם פנקס רשימות
    תעשה פתח באמצעות > פנקס רשימות


  • אקסל גדול
    ס סקרן 0

    @יצחק-ה

    @יצחק-ה כתב באקסל גדול:

    אני לא יכול לפתוח את הקובץ נורמלי רק בחיבור נתונים או בייבוא מטקסט

    למה? בעיה בקובץ? או שהוא מגיע ככה?

  • 1 / 1
  • התחברות

  • אין לך חשבון עדיין? הרשמה

  • התחברו או הירשמו כדי לחפש.
  • פוסט ראשון
    פוסט אחרון
0
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום