הטופס או הדוח מאוגד שגרה מאוחסנת או פונקציה אינה חלה על תנאי ה-WHERE

עבוד בכל מקום מכל מכשיר באמצעות Microsoft 365

שדרג ל-Microsoft 365 כדי לעבוד בכל מקום באמצעות התכונות והעדכונים האחרונים.

שדרג עכשיו

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


מאמר זה חל רק על פרוייקט Microsoft Access (. adp).


מאפייני הבעיה

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

פתרון

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

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

שים לב: אם לבצע את השלבים בדוגמה זו, תשנה את פרוייקט Access דוגמת NorthwindCS.adp. מומלץ לגבות את הקובץ NorthwindCS.adp, בצע את הפעולות הבאות על עותק של הפרוייקט.

  1. פתח את הפרוייקט דוגמת NorthwindCS.adp.

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

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

  3. פתח את הטופס בתצוגת עיצוב.

  4. מחיקת אובייקט טופס משנה הנקרא Table.Products מהטופס הראשי ולאחר מכן להוסיף לחצן פקודה לטופס. אם הפעלת האשף, לחץ על ביטול.

  5. הגדר את המאפיינים הבאים עבור לחצן הפקודה:
    Name: cmdFilterProducts
    Caption: Filter Products
    On Click: [Event Procedure]

  6. הגדר את המאפיין בעת לחיצה של לחצן הפקודה הבא לשגרת האירוע:

    Private Sub cmdFilterProducts_Click()
    DoCmd.OpenForm "Products", acNormal, , , acFormEdit, acWindowNormal
    End Sub
  7. בתפריט קובץ , לחץ על סגור וחזור אל Microsoft Access.

  8. בתפריט קובץ , לחץ על שמורולאחר מכן שמור את הטופס כ- Categories1.

    הערה בסרגל הכלים של Access מהירה , לחץ על שמור.

  9. בחלון מסד הנתונים, לחץ על שאילתותולאחר מכן לחץ על חדש.

    הערה אם אתה משתמש ב- Access 2007, לחץ על אשף שאילתת בקבוצה אחר בכרטיסיה צור .

  10. בתיבת הדו-שיח שאילתה חדשה , לחץ על צור שגרה מאוחסנתולאחר מכן לחץ על אישור.

  11. הקלד או הדבק את המשפט הבא של Transact-SQL, ולאחר מכן לסגור ולשמור הפרוצדורה עם שם ברירת המחדל של spProducts:

    CREATE PROCEDURE spProducts
    @CatID int
    AS
    SELECT * FROM Products WHERE CategoryID = @CatID
    RETURN
  12. פתח את הטופס Products בתצוגת עיצוב ולאחר מכן שנה את המאפיין מקור רשומה מתוך מוצרים כדי spProducts.

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

    @CatID int = טפסים! [Categories1]! [CategoryID]

  14. סגור ולא לשמור את הטופס Products ולאחר מכן פתח את הטופס Categories1.

  15. דפדף אל CategoryName Confectionsולאחר מכן לחץ על לחצן המסנן מוצרים . הערה טופס מוצרים נפתח ומציג רק את המוצרים כאשר קטגוריה הוא שווה ל- Confections.

מצב

אופן פעולה זה הוא מכוון.

מידע נוסף

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

שים לב: אם לבצע את השלבים בדוגמה זו, תשנה את פרוייקט Access דוגמת NorthwindCS.adp. מומלץ לגבות את הקובץ NorthwindCS.adp, בצע את הפעולות הבאות על עותק של הפרוייקט.

שלבים לשחזור ההתנהגות ב- 2003 גישה

  1. בצע את השלבים 1 עד 5 בסעיף 'פתרון הבעיה' במאמר זה.

  2. הגדר את המאפיין בעת לחיצה של לחצן הפקודה הבא לשגרת האירוע:

    Private Sub cmdFilterProducts_Click()
    DoCmd.OpenForm "Products", acNormal, , "[CategoryID] = " & Me!CategoryID, acFormEdit, acWindowNormal
    End Sub
  3. בתפריט קובץ , לחץ על סגור וחזור אל Microsoft Access.

  4. בתפריט קובץ , לחץ על שמורולאחר מכן שמור את הטופס בשם Categories1.

  5. פתח את הטופס בתצוגת טופס.

  6. דפדף אל CategoryName Confectionsולאחר מכן לחץ על לחצן המסנן מוצרים . הערה טופס מוצרים נפתח ומציג רק את המוצרים כאשר הקטגוריה הוא שווה ל- Confections.

  7. סגור את המוצרים והן Categories1 טפסים.

  8. בחלון מסד הנתונים, לחץ על שאילתותולאחר מכן לחץ על חדש. לחץ על צור שגרה מאוחסנתולאחר מכן לחץ על אישור.

  9. הקלד או הדבק את המשפט הבא של Transact-SQL, ולאחר מכן לסגור ולשמור הפרוצדורה עם שם ברירת המחדל של spProducts:

    CREATE PROCEDURE spProducts
    AS
    SELECT * FROM Products
    RETURN
  10. פתח את הטופס Products בתצוגת עיצוב ולאחר מכן שנה את המאפיין RecordSource של מוצרים כדי spProducts.

  11. סגור ולא לשמור את הטופס Products ולאחר מכן פתח את הטופס Categories1.

  12. דפדף אל CategoryName Confectionsולאחר מכן לחץ על לחצן המסנן מוצרים . שים הטופס Products נפתח ומציג כל המוצרים במקום רק את המוצרים בקטגוריה Confections.

זקוק לעזרה נוספת?

הרחב את הכישורים שלך
סייר בהדרכה
קבל תכונות חדשות לפני כולם
הצטרף למשתתפי Microsoft insider

האם מידע זה היה שימושי?

תודה על המשוב!

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

×