עזרה עם אקסס - עמוד 2 - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

עזרה עם אקסס


yotam.m

Recommended Posts

השוואה לפני ה-Or? לא מוצא איפה אפשר להכניס אותה הכוונה הייתה סה"כ לתת 2 משפטים מופרדים בפונקציה כלשהי ואותם להשוות למשפט השלישי (אחרי ה =) כמובן שאין פונקציה מתאימה או לא כזאת שאני מכיר.

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

את נושא ה- Criteria  גדול מ-0 קצת פחות הבנתי לצערי :/

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

אהה ותודה על ההיענות..:)

 

קישור לתוכן
שתף באתרים אחרים

  • תגובות 42
  • נוצר
  • תגובה אחרונה

מה שרשמת בבונה הביטויים הוא:  X || Y=Z אבל זה בלי סוגריים. או שתוסיף סוגריים לביטוי X || Y) = Z) אבל לא בטוח שזה ישנה משהו, או שתשנה ל: X=Z || Y=Z כי זו בסופו של דבר התוצאה הלוגית שאנחנו רוצים להגיע אליה.

 

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

 

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

 

Expr1: IIf(Month([tbl_Table1]![Birthday])=Month(Date()),1,0)

Expr2: IIf(Month([tbl_Table2]![Birthday])=Month(Date()),1,0)

 

כשבשדה ה-Criteria יש >0. הביטוי סה"כ בודק את אותו הדבר, אתה יכול להשאר עם שלך.

קישור לתוכן
שתף באתרים אחרים

נחמד

לא חשבתי על הוספת הסוגריים או שבעצם לכתוב פעמיים =Z אומנם מבולגן אבל יכול לעבוד.

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

אגב עוד בעיה מוזרה היא שכשיש ילד שתאריך הלידה שלו הוא בשנת 2000 הוא לא מופיע בשום טבלה לא משנה אם עומד בקריטריונים או לא, כנראה משהו עם סכום ה-00 בסוף. גם כשמכניסים שנה לא תקנית נגיד תאריך כמו 1/1/0000 אקסס ישר מעביר את השנה ל-2000. מוזר.

המון תודה על העזרה תשקיע במבחנים שלך אני אעשה את הנסיונות על כל הצעה שתיתן B|

 

עדכון:

2 ההצעות עובדות ככל הנראה גם הוספת סוגריים וגם הפרדת הביטוי ל-X=z או y=z (חבל שלא עלה במוחי רעיון פשוט שכזה תיארתי לעצמי שאפשר לפתור את זה בצורה פשוטה יחסית :)

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

נשארתי רק עם "באג 2000" ואפשר להתחיל לעבוד (לא קריטי אבל כל ילד שנולד בשנת 2000 אינו מוצג בשום שאילתה)

אגב עברתי לתצוגת שבוע קדימה (פרקטי יותר) datepart "ww",date()+7 לא מציג את אותו יום אבל לא נורא.

המון תודה שוב :D

 

עדכון שני: 

המעבר לקוד של שבוע קדימה פתר גם את בעיית שנת לידה 2000 משום מה.

קישור לתוכן
שתף באתרים אחרים

ומסתבר ש-SQL דווקא כן ממשיך לבדוק גם את התנאי השני בביטוי Or, בשונה משפות אחרות. גם אני למדתי משהו קטן לקראת כל הקורסים על בסיסי נתונים ו-SQL בשנים הבאות :) 

קישור לתוכן
שתף באתרים אחרים

מוזר.

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

יש לך מושג למה מוצגים לי 3 פעמים אותו שם לקוח גם אם רק 1 הילדים עמד בקירטריון?

קישור לתוכן
שתף באתרים אחרים

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

קישור לתוכן
שתף באתרים אחרים

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

טעיתי?

הטבלת ילדים מאוד פשוטה יש בה שם ילד תאריך לידה והמפתח הזר שהוא מקושר למזהה הלקוח בטבלת לקוחות.

כמובן שיכולים להיות כמה ילדים לאותו לקוח אבל מקושר מול מזהה לקוח ספציפי.

עדכון:

אם ילד אחד עומד בקריטריון מופיעה שורה אחת גם אם יש ללקוח יותר מילד אחד.

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

אפשר לחיות עם זה למרות שמעניינת הלוגיקה מאחורי זה

קישור לתוכן
שתף באתרים אחרים

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

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

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

 

מפתח מורכב: הולכים ל-Design View, מסמנים את שתי העמודות יחד ולוחצים Primary Key. אבל הקשר של לקוחות לילדים הוא אחד לרבים, אז לא נראה לי שזה יעבוד בעצם.

קישור לתוכן
שתף באתרים אחרים

טבלת הילדים מאוד ענייה ולכן כמובן שגם הלקוח הראשי צריך להיות מוצג

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

לא יודע מה יעזור להוסיף את מזהה הלקוחות של שניהם אבל אלך על זה :)

עדכון:

עדיין כמו שאמרתי אם ילד אחד עומד בקריטריון לא יוצגו כל הילדים תחת אותו לקוח

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

קישור לתוכן
שתף באתרים אחרים

שוב נתקעתי גם ככה

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

אם אני משתמש ב datepart "d", date()+7 הנודניק רואה בדיוק 7 ימים קדימה ולא מהתאריך של היום +7 קדימה (מתסתכל...)

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

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

 

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.


×
  • צור חדש...