עזרה באקסס קיבוץ מספר רשומות לרשומה אחת לפי מספר מזהה באקסס

HMJETVRI221

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

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

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

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

וא"ת למה אני באמת לא יכול לעשות "שדה מרובת ערכים" כנ"ל.

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

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

מי שיוכל לעזור בענין
אשמח מאוד - זה קצת דחוף לי
תודה רבה רבה
 

Rרחמים

משתמש סופר מקצוען
עיצוב גרפי
איור וציור מקצועי
מוזיקה ונגינה
עריכה תורנית
D I G I T A L
עימוד ספרים
לא מספיק מובן המבנה של הטבלאות, אולי תעלה צילום מסך
 

אפר

סתם מתעניין...
מנוי פרימיום
מצורף קוד VBA
קוד:
Public Function TextThreading(DTime As Date, DVAlue As String, DId As Long, Optional Opr As String = ";", Optional Cnt As Long = 1000) As String
Static TempData() As String
Static TempId As Long
Static TempTime
If DTime <> TempTime Then
TempTime = DTime
ReDim TempData(Cnt)
End If
If Len(TempData(DId)) > 0 Then
TempData(DId) = TempData(DId) & Opr
End If
TempData(DId) = TempData(DId) & DVAlue
TextThreading = TempData(DId)
End Function
השימוש:
ארגומנט 1 = DTime (לשים Now) = זמן הפעלת השאילתא למניעת שמירה בזיכרון משאילתא לשאילתא
ארגומנט 2 = DValue = הערך לקיבוץ (string/טקסט)
ארגומנט 3 = DId = הערך המקבץ (Long/מספר שלם ארוך) {ניתן לקבץ לפי מזהה ולאחר מכן לקשר לטקסט אחר}
ארגומנט 4 = Opr = אופרטור חיבור בין שני ערכים (string/טקסט) {לא חובה - ברירת המחדל היא ;}
ארגומנט 5 = Cnt = המזהה הגבוה ביותר (Long/מספר שלם ארוך) {לא חובה - ברירת המחדל היא 1000, אפשר להשתמש בDMax או במספר שרירותי}
קוד:
Max(TextThreading(Now(),Nz([טבלה1].[שדה2],""),Nz([טבלה1].[שדה1],0),",",DMax("שדה1","טבלה1")))
כמובן בשאילתא להפעיל את סכומים ובסך הכל של השדה לשים Expression

עריכה 2: שיניתי את הקוד כרגע אין צורך במיון והמקבץ חייב להיות מספר
 
נערך לאחרונה ב:

HMJETVRI221

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

מצוטט את הפוסט שלו...

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

קבצים מצורפים

  • דוגמא (2).zip
    KB 26.8 · צפיות: 22

אפר

סתם מתעניין...
מנוי פרימיום

HMJETVRI221

משתמש חדש
מצורף קוד VBA
קוד:
Public Function TextThreading(DTime As Date, DVAlue As String, DId As Long, Optional Opr As String = ";", Optional Cnt As Long = 1000) As String
Static TempData() As String
Static TempId As Long
Static TempTime
If DTime <> TempTime Then
TempTime = DTime
ReDim TempData(Cnt)
End If
If Len(TempData(DId)) > 0 Then
TempData(DId) = TempData(DId) & Opr
End If
TempData(DId) = TempData(DId) & DVAlue
TextThreading = TempData(DId)
End Function
השימוש:
ארגומנט 1 = DTime (לשים Now) = זמן הפעלת השאילתא למניעת שמירה בזיכרון משאילתא לשאילתא
ארגומנט 2 = DValue = הערך לקיבוץ (string/טקסט)
ארגומנט 3 = DId = הערך המקבץ (Long/מספר שלם ארוך) {ניתן לקבץ לפי מזהה ולאחר מכן לקשר לטקסט אחר}
ארגומנט 4 = Opr = אופרטור חיבור בין שני ערכים (string/טקסט) {לא חובה - ברירת המחדל היא ;}
ארגומנט 5 = Cnt = המזהה הגבוה ביותר (Long/מספר שלם ארוך) {לא חובה - ברירת המחדל היא 1000, אפשר להשתמש בDMax או במספר שרירותי}
קוד:
Max(TextThreading(Now(),Nz([טבלה1].[שדה2],""),Nz([טבלה1].[שדה1],0),",",DMax("שדה1","טבלה1")))
כמובן בשאילתא להפעיל את סכומים ובסך הכל של השדה לשים Expression

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

אפר

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

אולי מעניין אותך גם...

הפרק היומי

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


תהילים פרק קיט ק'

קמה קָרָאתִי בְכָל לֵב עֲנֵנִי יְהוָה חֻקֶּיךָ אֶצֹּרָה:קמו קְרָאתִיךָ הוֹשִׁיעֵנִי וְאֶשְׁמְרָה עֵדֹתֶיךָ:קמז קִדַּמְתִּי בַנֶּשֶׁף וָאֲשַׁוֵּעָה (לדבריך) לִדְבָרְךָ יִחָלְתִּי:קמח קִדְּמוּ עֵינַי אַשְׁמֻרוֹת לָשִׂיחַ בְּאִמְרָתֶךָ:קמט קוֹלִי שִׁמְעָה כְחַסְדֶּךָ יְהוָה כְּמִשְׁפָּטֶךָ חַיֵּנִי:קנ קָרְבוּ רֹדְפֵי זִמָּה מִתּוֹרָתְךָ רָחָקוּ:קנא קָרוֹב אַתָּה יְהוָה וְכָל מִצְוֹתֶיךָ אֱמֶת:קנב קֶדֶם יָדַעְתִּי מֵעֵדֹתֶיךָ כִּי לְעוֹלָם יְסַדְתָּם:
נקרא  22  פעמים

לוח מודעות

למעלה