אופיס 365 עזרה בSQL באקסס

  • הוסף לסימניות
  • #1
אז עשיתי שאילתה כך:

קוד:
SELECT [המרת תאריך].[שם פרטי], [נתוני אב].[שם משפחה], [המרת תאריך].[תאריך לידה עברי], [המרת תאריך].גיל, [המרת תאריך].[סוג קרבה]
FROM [המרת תאריך] INNER JOIN [נתוני אב] ON [המרת תאריך].מזהה = [נתוני אב].מזהה
WHERE ((([המרת תאריך].[תאריך לידה עברי])  Like "*" & [הקלד את החודש הרצוי] & "*"));

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

אשמח להסבר והבהרה

תודה מראש
 
נערך לאחרונה ב:
  • הוסף לסימניות
  • #2
אני לא בדקתי במקור שממנו לקחת את השאילתא
אבל לכאורה את המילים הקלד את החודש הרצוי צריך להקיף בגרשיים ולא בסוגריים מרובעות (שזה הפנייה לשם עמודה)
 
  • הוסף לסימניות
  • #3
איזה נתון מופיע בשדה הזה: [המרת תאריך].[תאריך לידה עברי] ?
שימו לב שבפרמטר אתם מבקשים רק החודש הרצוי.
 
  • הוסף לסימניות
  • #4
אני לא בדקתי במקור שממנו לקחת את השאילתא
אבל לכאורה את המילים הקלד את החודש הרצוי צריך להקיף בגרשיים ולא בסוגריים מרובעות (שזה הפנייה לשם עמודה)

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

איזה נתון מופיע בשדה הזה: [המרת תאריך].[תאריך לידה עברי] ?
שימו לב שבפרמטר אתם מבקשים רק החודש הרצוי.

נתון חוזר של החישוב תאריך לועזי מעמודה אחרת לעברי
אני חושב שהשגיאה תופיע בכל מקרה בו אחפש בשדה כל שהוא נתון שלא תואם את סוג הנתונים כמו טקסט בשדה מספרי
ואם כן מגיעה השאלה איזה סוג נתונים הוא זה?
 
  • הוסף לסימניות
  • #5
תוסיף גרש בודד לפני הכוכבית הראשונה ואחרי האחרונה.
אחרת הוא לא מקבל גרש, ובשדה טקסט אתה חייב לתחום אותו.
 
  • הוסף לסימניות
  • #6
תוסיף גרש בודד לפני הכוכבית הראשונה ואחרי האחרונה.
אחרת הוא לא מקבל גרש, ובשדה טקסט אתה חייב לתחום אותו.

לא הבנתי.
מי צריך גרש בשרשור?
חשוב שתדע שהשאילתה עבדה יופי על שדה טקסטואלי אחר ורק על השדה הזה היא לא עובדת.
 
  • הוסף לסימניות
  • #7
איזה סוג שדה זה [תאריך לידה עברי]? טקסט או תאריך?
 
  • הוסף לסימניות
  • #8
איזה סוג שדה זה [תאריך לידה עברי]? טקסט או תאריך?
היא היא שאלתי...
מכיוון שמדובר בשדה מבוסס על ערך מוחזר מהקוד שפורסם כאן הממיר תאריך לועזי לעברי ואיני יודע למה אקסס לא מכיר בו כטקסט באומרו כאומרו אלי כל ברצה "סוג הפרמט אינו תואם את סוג הנתונים" (משהו כזה...)
 
נערך לאחרונה ב:
  • הוסף לסימניות
  • #9
כנראה מחזיר מסוג תאריך ואתה מנסה לעשות שאילתה like של טקסט. מכירה את SQL ואבל לא באקסס.. בsql אפשר להמיר את השדה ב-where לטקסט. או לבודד את החודש מהתאריך
מקווה שמובן..
 
  • הוסף לסימניות
  • #10
...
 
נערך לאחרונה ב:
  • הוסף לסימניות
  • #11
טוב, ברור לי שזה בגלל הפונקציה במודל או משהו כזה, המרתי את העמודה לרגילה שאינה מהמודל והשאילתה עבדה יופי...

מי יכול לבדוק את העניין?

קישור למודל שפורסם
 
  • הוסף לסימניות
  • #12
לקחתי אותה מתוך הידע... (המועט)
בצורה כמו שאני כתבתי בעת הרצת השאילתה המערכת מבקשת ערך שיוכנס באזור הסוגריים המרובעות בשאילתה (חלון ובו המלל "הקלד את החודש הרצוי" ותיבת טקסט למילוי) ברגע שאני ממלא לדוגמא "חשון" נעשה כאילו כתבתי בשאילתה:
קוד:
 Like "*חשון*"));
ובעצם שולף מהשדה כל רשומה ובה מופיע "חשון" בכל מקום בשדה (למשל במקרה דנן החודש מופיע כך: כ"א בחשון תשע"ח).
באמת שלא הבנתי למה לשים בגרשיים (ד.א. על עמודה אחרת זה עבד)



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

מקווה שעזרתי במשהו, בהצלחה
 
  • הוסף לסימניות
  • #13
לא המשכתי להסביר לו, כי הוא טוען שהבעיה לא בזה.
אבל אם כבר הועלה הנושא שוב.
בציטוט שהבאת עם הלייק, אין גרשיים על הטקסט שאתה רוצה לסנן, התוצאה צריכה להיות כזו:
קוד:
 Like "'*חשון*'"));

מעניין אם ככה יעבוד, תנסה ותעדכן.


ואין צורך בתווי char, הוא יודע לקרוא גרשיים.
 
  • הוסף לסימניות
  • #14
מתחיל להסתחרר...

נרד לפרטים הקטנים:

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

וכן הלאה...

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

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

חשוב לי להבהיר שוב כי על עמודות טקסט אחרות השאילה פועלת.

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

בעת נסיון למיון את העמודה בטבלת השאילתה אני מקבל את אותה שגיאה...
מיון.pngשגיאה.png
 
נערך לאחרונה ב:
  • הוסף לסימניות
  • #15
פתחתי את הקבצים של הפונקציה, הפונקציה מחזירה ערך מסוג Date-תאריך. לכן אי אפשר למיין מא' עד ת' וכו' כי זה לא עובד על תאריך אלא רק על טקסט.
1. או שהיוצר ישנה את הפונקציה להחזיר טקסט ולא תאריך
2. או שתמיר את הערך שמתקבל מהפונקציה- לטקסט משו כמו:
קוד:
SELECT ConvertToDate(DateToHeb([תאריך לועזי])) AS [תאריך עברי]
FROM tblTest;
 
  • הוסף לסימניות
  • #16
פתחתי את הקבצים של הפונקציה, הפונקציה מחזירה ערך מסוג Date-תאריך. לכן אי אפשר למיין מא' עד ת' וכו' כי זה לא עובד על תאריך אלא רק על טקסט.

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

אז זה אכן מה שחששתי, תודה.
 
  • הוסף לסימניות
  • #19
נכון, טעות. צריך להיות ToString או Cast(<date> as varchar) או משו כזה..

ניסיתי את ה ToString כך:
קוד:
SELECT [ימי הולדת].מזהה, [ימי הולדת].[סוג קרבה], [ימי הולדת].[שם פרטי], [ימי הולדת].[תאריך לידה לועזי], ConvertToString(DateToHeb([תאריך לידה לועזי])) AS [תאריך לידה עברי], DateDiff("yyyy",[תאריך לידה לועזי],Date())&" שנים" AS גיל
FROM [ימי הולדת];

זה לא עובד
מה עוד הצעת? לא הבנתי.
 
  • הוסף לסימניות
  • #20
בSQL זה:
קוד:
SELECT CAST(DateToHeb([תאריך עברי]) as nvarchar(50))) AS [תאריך עברי]

או
קוד:
SELECT Convert(nvarchar(50, DateToHeb([תאריך לועזי]) ,106) AS [תאריך עברי]

כש-106 מסמל את הפורמט שהתאריך יראה בתור טקסט.

אבל- אין לי מושג אם זה נכון גם לSQL באקסס או שיש קיצור דרך\פונקציות אחרות..
 

פרוגבוט

תוכן שיווקי
פרסומת

הצטרפות לניוזלטר

איזה כיף שהצטרפתם לניוזלטר שלנו!

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

לוח מודעות

הפרק היומי

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


תהילים פרק כה

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