שדות עם קריטריונים משתנים

HUBHCBH

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

יש לי שדות "שקיעה", "נץ", "פלג המנחה" וכו',
רוצה להשאיר את האפשרות לקביעת תפילות פתוחה למשתמש, כדון מנחה 20 דק' לפני השקיעה, שחרית 30 דק' לפני הנץ,

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

קריטריון לדוגמה: [שקיעת החמה]-00:20:00
האם זה הנכון? (ניסתי להכניס את השעה ל #..)
בשדה בשאילתה, איזה פונקציה אצטרך להשתמש?
Eval(Nz([קרטריון1]))

מצרף את הקובץ, בעזרת השם אשתדל לפרסמו אח"כ.
 

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

  • זמני היום לשאילתה.rar
    KB 206.9 · צפיות: 15

לוי א

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

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

  • זמני היום לשאילתה.rar
    KB 193.8 · צפיות: 17

HUBHCBH

משתמש מקצוען
אוטומציה עסקית
מעולה!

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

תודה רבה!
 

moishy

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

לוי א

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

moishy

משתמש סופר מקצוען
מנוי פרימיום
מה יאמר כבודו על זה:
קוד:
Private Sub פקודה245_Click()
    Dim db As DAO.Database
    Set db = CurrentDb
    Dim qdf As DAO.QueryDef
    Dim strSQL As String

    strSQL = "SELECT "
    If Len(Nz(Me.שם_עמודה1, "")) > 0 Then strSQL = strSQL & "Format([" & [זמן1] & "] " & [יחס1] & " #" & [כמות1] & "#, ""Medium Time"") AS [" & Me.שם_עמודה1 & "], "
    If Len(Nz(Me.שם_עמודה2, "")) > 0 Then strSQL = strSQL & "Format([" & [זמן2] & "] " & [יחס2] & " #" & [כמות2] & "#, ""Medium Time"") AS [" & Me.שם_עמודה2 & "], "
    If Len(Nz(Me.שם_עמודה3, "")) > 0 Then strSQL = strSQL & "Format([" & [זמן3] & "] " & [יחס3] & " #" & [כמות3] & "#, ""Medium Time"") AS [" & Me.שם_עמודה3 & "], "
    If Len(Nz(Me.שם_עמודה4, "")) > 0 Then strSQL = strSQL & "Format([" & [זמן4] & "] " & [יחס4] & " #" & [כמות4] & "#, ""Medium Time"") AS [" & Me.שם_עמודה4 & "] "
    If InStr(Len(strSQL) - 2, strSQL, ",") > 0 Then strSQL = Left(strSQL, Len(strSQL) - 2) & " "
    strSQL = strSQL & "FROM [זמנים לפי עיר]"
        
    If InStr(1, strSQL, "#") = 0 Then
        MsgBox "לא הוזנו נתונים לשאילתא", vbMsgBoxRight + vbMsgBoxRtlReading + vbCritical
    Else
        On Error Resume Next
        CurrentDb.QueryDefs.Delete "qryDynamicQuery"
        On Error GoTo 0
        Set qdf = db.CreateQueryDef("qryDynamicQuery", strSQL)
        DoCmd.OpenQuery "qryDynamicQuery", acViewNormal, acReadOnly
    End If
End Sub
 
נערך לאחרונה ב:

לוי א

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

moishy

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

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

הפרק היומי

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


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

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

לוח מודעות

למעלה