-
קודם כל תודה
אני לא רוצה שיהא למשתמש כמו שאילתת פרמטר, אלא שיהא כמו דלוקאפ שהשאילתה תבדוק באיזה שדה לחפש כעת עפ"י מה שהוגדר,
-
@חייםיודלביץ
בקוד וודאי זה אפשרי.לא בקוד, אולי אתה יכול להשתמש בצורה מסויימת עם JOIN לטבלה MSysObjects (זו טבלה מוסתרת) אבל לא בדקתי.
-
@clickone אמר בעזרה בקרטריון בשאילתה באקסס:
@חייםיודלביץ
בקוד וודאי זה אפשרי.לא בקוד, אולי אתה יכול להשתמש בצורה מסויימת עם JOIN לטבלה MSysObjects (זו טבלה מוסתרת) אבל לא בדקתי.
תודה,
אתה מתכוון שעם קוד אני ישנה את המאפיינים של השאילתה? איך?
אני מכיר איך לשנות מקור פקד בטופס האם אותו דרך יש גם לשאילתה?@clickone אמר בעזרה בקרטריון בשאילתה באקסס:
@חייםיודלביץ
לא בקוד, אולי אתה יכול להשתמש בצורה מסויימת עם JOIN לטבלה MSysObjects (זו טבלה מוסתרת) אבל לא בדקתי.לא הבנתי את דבריך, אני לא כל כך מקצוען, אשמח אם תוכל להסביר לי יותר
תודה -
@חייםיודלביץ
איפה אתה הולך להשתמש עם זה?
בטופס?
אתה רוצה לתת למשתמש אפשרות לבחור את השדה, אח"כ סוג השוואה וערך?
אבל שמצד שני לא יצטרך להבין SQLלי יש ממש מחולל דוחות שלם שבו המשתמש קובע את השדות, הסינון, הקיבוץ וכו'
מה שאתה מחפש צריך להיות משהו בכיוון הזה.אבל זה בד"כ עם קוד.
כאן אני חושב יש דוגמא מעניינת לזה.
הקובץ חסום בנטפרי אבל הגשתי בקשה לפתיחה -
@clickone אמר בעזרה בקרטריון בשאילתה באקסס:
@חייםיודלביץ
איפה אתה הולך להשתמש עם זה?
בטופס?
אתה רוצה לתת למשתמש אפשרות לבחור את השדה, אח"כ סוג השוואה וערך?
אבל שמצד שני לא יצטרך להבין SQLלי יש ממש מחולל דוחות שלם שבו המשתמש קובע את השדות, הסינון, הקיבוץ וכו'
מה שאתה מחפש צריך להיות משהו בכיוון הזה.אבל זה בד"כ עם קוד.
כאן אני חושב יש דוגמא מעניינת לזה.
הקובץ חסום בנטפרי אבל הגשתי בקשה לפתיחהתודה!
אני מעוניין שהמשתמש יוכל רק להגדיר באיזה שדה לחפש, כל השאר טבלה, וערך וכולי אני מגדיר מראש.אם זה רק שינוי שדה ללא שיוני טבלה כן אפשר עם ביטוי?
-
@חייםיודלביץ
אם כל השדות נמצאות בשאילתא וזה לא דינמי לגמרי אז כן
תשים את זה מתחת לכל השדות
כמובן תשנה בהתאמה
וצריך שהפילטר יהיה בOR ולא בAND
ז"א, בתצוגה אל תשים אותם באותה שורה, אלא כל אחד בשורה מתחת לשורה שמעלlike iif(forms!frmtest!cmbfiled="f1",forms!frmtest!txtfilter,"*")
שים לב שאם זה הרבה נתונים / עמודות זה עלול להיות בזבזני ואיטי, ואז תחשוב שוב על קוד
-
@clickone אמר בעזרה בקרטריון בשאילתה באקסס:
@חייםיודלביץ
אם כל השדות נמצאות בשאילתא וזה לא דינמי לגמרי אז כן
תשים את זה מתחת לכל השדות
כמובן תשנה בהתאמה
וצריך שהפילטר יהיה בOR ולא בAND
ז"א, בתצוגה אל תשים אותם באותה שורה, אלא כל אחד בשורה מתחת לשורה שמעלlike iif(forms!frmtest!cmbfiled="f1",forms!frmtest!txtfilter,"*")
שים לב שאם זה הרבה נתונים / עמודות זה עלול להיות בזבזני ואיטי, ואז תחשוב שוב על קוד
תודה!
אני אמור לשים את זה בשורת הקריטריונים? יש לי שם כבר פרמטרים לחיפוש, וגם אני מעוניין לשנות את השדה "שדה".
כנראה שלא הבנתי את דבריך אשמח אם תוכל להסביר לי שוב
תודה
-
@חייםיודלביץ
כן
אתה שם אותו למטה בקרטריונים.
זה טריק הפוך
כמובן שאם יש ל גם קרטריונים נוספים אז אתה צריך לשים אותם ביחד עם כל קרטריון דינמי -
@clickone אמר בעזרה בקרטריון בשאילתה באקסס:
@חייםיודלביץ
כן
אתה שם אותו למטה בקרטריונים.
זה טריק הפוך
כמובן שאם יש ל גם קרטריונים נוספים אז אתה צריך לשים אותם ביחד עם כל קרטריון דינמיאתה מתכוון שאני יתן למשתמש טופס לבחור באיזה שדה הוא מעוניין לחפש ויהא הפניה בקרטריון לשדה בטופס שמכיל את שם השדה הרצוי בחיפוש?
בכולם צריך להיות אותו קריטריון? הרי אני רוצה לתת למשתמש אפשרות לשנות רק שדה אחד!
תודה רבה על העזרה!
-
בשיטה הזו זה צריך להיות בטופס לכאורה (לא בדקתי אולי אפשר לעשות טריק אחר שיבקש את האותו הערך פעם אחת וזה ישפיע על הכל.
לגבי השאלה על הקריטריונים הקבועים שלך למה צריך שהם יהיו אצל כולם, זה אכן ככה, בגלל שאתה משתמש בOR שזה אומר שאם התנאי הראשון לא התקיים והשני כן הוא יביא את התוצאות מהשני.
ובגלל שאתה רוצה שהקריטריונים שלך יחולו בכל מקרה, אז אתה צריך לשים אותם בכל ביטוי מחדש. -
-
הנה פיתרון מעניין בתוך השאיתא עצמה
Switch([name?]="phone",[phone],[name?]="city",[city])
בעצם הרעיון כאן הוא להשתמש עם סוויצ'
שזה מקבל רשימת של זוגות פרמטרים.
הראשון מהזוג זה מה לבדוק
והשני, במידה והראשון אמת, הוא מחזיר את השני ומפסיק לבדוק.אז מה שאני עושה בעצם, זה לתת את אותו שם בפרמטר, ואז הוא קורה לו רק פעם אחת.
ואז לבדוק לפי מה שהמשתמש כתב אני מציג נתונים.
בשיטה הזו אתה יכול גם לתת למשתמש שמות ידידותיים, כמו לדוגמא שיכתוב "משפחה" ואז[name?]="משפחה", [Family]
נראה לי זה עושה מדוייק את מה שרצית, ולא יקר מבחינת ביצועים.
-
@clickone אמר בעזרה בקרטריון בשאילתה באקסס:
הנה פיתרון מעניין בתוך השאיתא עצמה
Switch([name?]="phone",[phone],[name?]="city",[city])
בעצם הרעיון כאן הוא להשתמש עם סוויצ'
שזה מקבל רשימת של זוגות פרמטרים.
הראשון מהזוג זה מה לבדוק
והשני, במידה והראשון אמת, הוא מחזיר את השני ומפסיק לבדוק.אז מה שאני עושה בעצם, זה לתת את אותו שם בפרמטר, ואז הוא קורה לו רק פעם אחת.
ואז לבדוק לפי מה שהמשתמש כתב אני מציג נתונים.
בשיטה הזו אתה יכול גם לתת למשתמש שמות ידידותיים, כמו לדוגמא שיכתוב "משפחה" ואז[name?]="משפחה", [Family]
נראה לי זה עושה מדוייק את מה שרצית, ולא יקר מבחינת ביצועים.
להדביק את זה בשורת השדה או בשורת הקרטריונים?
התבלבלתי קצת... הייתי באמצע להבין את התגובה הקודמת שלך עם הקוד.
אשמח לעזרה
שוב, תודה רבה רבה על המאמץ לעזור! -
שלום
אני לא מסתדר... זה לא עובד לי לא בשורת הקרטריון לא בשם השדה, שינתי את השמות לשדות שלי.
אשמח לעזרה.
תודה -
@חייםיודלביץ
הכי טוב דוגמא.....
תפתח את השאילתא בקובץ.
תכתוב יישוב ותראה מה יצא לך
אח"כ תרענן תכתוב משפחה ותראה שהוא יביא לך את הנתונים מעמודה משפחה
0_1539099953956_דוגמא.accdbבהצלחה
-
@clickone אמר בעזרה בקרטריון בשאילתה באקסס:
@חייםיודלביץ
הכי טוב דוגמא.....
תפתח את השאילתא בקובץ.
תכתוב יישוב ותראה מה יצא לך
אח"כ תרענן תכתוב משפחה ותראה שהוא יביא לך את הנתונים מעמודה משפחה
0_1539099953956_דוגמא.accdbבהצלחה
זה בדיוק מה שחיפשתי!
תודה רבה רבה אין עליך!!
אכן עובד מצוין גם עם הפניה לטופס וגם עם חלון פרמטר למשתמש. -