Jump to content
  • הצטרפו למשפחה

    היי, היי אתה (או את) שם!

    אנחנו יודעים, נחמד להיות אנונימי, ולמי בכלל יש כוח להירשם או להיות עכשיו "החדשים האלה".

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

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

שאלה ב C# ו SQL


Alon_A
dir="rtl" style="text-align:right;"> שימו לב! השרשור הזה בן 5466 ימים, שזה ממש ממש הרבה ולכן הוא ננעל.

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

פוסטים מומלצים

פורסם

שלום לכולם, אני מנסה לקבל נתוני בסיס נתונים בתנאי שהתאריך בהם מאוחר מתאריך מסויים.

 

השאילתה שלי היא ב ADO.NET ב C#:

 

sql = "SELECT * FROM RMA_Package WHERE start_date >= '" + frDate + "' AND customer = '" + customer + "' ";

 

frDate הוא מסוג DateTime

 

אני מקבל EXCEPTION של conversion faild when converting date from string

 

מישהו יודע למה ?

 

תודה.

SAY MY NAME | www.alonadler.com

פורסם

מה שכתבת הוא וואחד פרצת אבטחה אחולשקשוקה,

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

 

המרת התאריך ל-DateTime שמתאים ל-SQL:

 

SqlParameter prmDate = new SqlParameter("@prmDate", SqlDbType.DateTime);

prmDate.Value= frDate;

 

פרמטר ל-int:

SqlParameter prmCust = new SqlParameter("@customer", SqlDbType.Int);

prmCust.Value = customer;

 

השאילתה:

 

sql = "SELECT * FROM RMA_Package WHERE start_date >= @prmDate AND customer = @customer";

 

הוספת הפרמטרים לשאילתה (אני מניח ש-sql זה sqlCommand)

 

sql.Parameters.Add(prmCust);

sql.Parameters.Add(prmDate);

 

ואת השאר אתה מכיר.

אוכל את הכובע שהגיש לי avergel ומודה קבל עם ועדה שלפעמים מחשבים של אסוס מחזיקים מעמד אפילו מעל לשנה שלמה - אם נזכרים לעדכן את ה-bios.

פורסם

1. מה שהנס אמר נכון, תעשה מה שהוא אומר.

2. השגיאה ספציפית מתרחשת כנראה עקב זאת שהדטה בייס מצפה לקבל תאריך בפורמט אמריקאי (mm-dd-yyyy) ולא פורמט אירופאי dd-mm-yyyy.

שמעון תמיד היה חזק בלחיצות, עוד כשהיתה לו המאה שש ראלי היה עושה רכבות מטבריה לת"א.
- רזמל על שמעון פרס :-D
פורסם

תודה על התשובות, אני אשתמש ב ADD PARAMETERS (ברוב המקרים אני משתמש בצורה הזו).

 

השאלה מדוע מתרחשת השגיאה, כדי להכניס את התאריכים מלכתחילה לבסיס הנתונים אני משתמש בקונטרול DATE TIME PICKER, הוא באמת מכניס תאריך בצורה אמריקאית ולא עושה שום בעיות ושום חריגות בשאילתה של הכנסת הנתונים (שם אני באמת משתמש ב ADD PARAMETERS). כדי לקבוע את תאריך החיפוש אני גם משתמש ב DATE TIME PICKER, מדוע הוא לא מצליח להתאים בינהם ? איך אני פותר את זה ?

 

שוב תודה...

SAY MY NAME | www.alonadler.com

פורסם

תאימות של סוגי תאריכים זו צרה צרורה עולמית - מה שיעבוד במחשב שלך

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

השיטה היחידה (בערך) שעובדת בכל מקום היא להמיר כל תאריך שהוא בעת שמירה ועיבוד ל-UTC

(זמן אוניברסלי, של גריניץ') ורק בשנייה האחרונה, למשל בעת ההצגה,

להמיר את התאריך לפורמט מקומי.

 

תחקור קצת את הקלאס dateTime, יש אפשרות לספק פורמטים שונים של תאריכים

בעזרת IFormatProvider, לא התעמקתי בזה עדיין.

אוכל את הכובע שהגיש לי avergel ומודה קבל עם ועדה שלפעמים מחשבים של אסוס מחזיקים מעמד אפילו מעל לשנה שלמה - אם נזכרים לעדכן את ה-bios.

פורסם

למדתי את זה כ-5 שנים (תיכון ואז הנדסאי), ואני יודע שאיני עוזר בשרשור אך אני כלכך שונא את המקצוע הזה!!! לא הייתי מאמין ועדיין לא מאמין שפתחתם שרשור על C ו-SQL :lol:

ולכן אתן לו בכל הכבוד את הזכות להרצות לי על מחזיקי כוסות וגגות שמש, לא יותר מזה.

ZOOM-ZOOM

פורסם

גם אני שונא SQL, אבל לפחות יש התקדמות בהבנת הבעיה.

 

כשאני שולח מחרוזת "17/1/2008" הוא זורק חריגה, כשאני שולח "1/17/2008" הוא מחזיר תוצאות בסדר. זה מוזר כי בבסיס הנתונים זה נשמר כ 17/1/2008.

 

ה DATE TIME PICKER נותן לי תאריך בפורמט הלא מתאים. ניסיתי כל מני דרכים להפוך לצורה שצריך, כגון:

 

String.Format("{0:MM/dd/yyyy}", dt);

 

וגם זה:

 

System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-GB");

DateTime dtProjectStartDate = Convert.ToDateTime(txtProjectSDate.Text);

 

אבל זה לא עובד. הימים תמיד נשארים בהתחלה.

 

איך הופכים את התאריך... HELP !! :)

SAY MY NAME | www.alonadler.com

פורסם

ה-windows שלך הוא בעברית, במקרה?

 

בדוק את זה:

http://msdn.microsoft.com/en-us/library/h2ef6zxz.aspx

 

עריכה:

שאלה טפשית, יכול להיות שאני לא מבין:

אתה מנסה להכניס ל-DB איזו מחרוזת, ולתת לו לטפל בה?

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

(או מקסימום, המרה ל-dateTime מהסוג ש-SQL תומך בו).

אוכל את הכובע שהגיש לי avergel ומודה קבל עם ועדה שלפעמים מחשבים של אסוס מחזיקים מעמד אפילו מעל לשנה שלמה - אם נזכרים לעדכן את ה-bios.

פורסם

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

 

חרשתי את כל גוגל.

SAY MY NAME | www.alonadler.com

פורסם

טכניקת החרישה שלך דורשת שיפור.

 

SomeDateTimeObject.ToString("MM/dd/yyyy")

 

איך זה ?

שמעון תמיד היה חזק בלחיצות, עוד כשהיתה לו המאה שש ראלי היה עושה רכבות מטבריה לת"א.
- רזמל על שמעון פרס :-D
פורסם

אופר, מעולה, עובד ותיקן את הבעיה, עבודה עם ADD PARAMETERS גם תיקנה את הבעיה, אבל ספציפי לשאילתה הזאת אני מעדיף עם המחרוזת.

 

תודה לכולם על העזרה !! אתם :viking::viking::viking::mm_yeah:

 

ואני חשבתי שאני :king: בגוגל... טוב, תמיד יש לאן להתקדם...

SAY MY NAME | www.alonadler.com

פורסם

אם כבר, מתכנתים אמיתיים סופרים את הנאנו-שניות מאז ינואר 1601.

:evil:

שמעון תמיד היה חזק בלחיצות, עוד כשהיתה לו המאה שש ראלי היה עושה רכבות מטבריה לת"א.
- רזמל על שמעון פרס :-D
פורסם

בזמנו הסתובב אצלנו משפט שאמר: A good coder codes, a great coder reuses.

 

ואני אומר: A great coder reuses, a smart coder hires someone in India to do the job for him.

“.You will never reach your destination if you stop and throw stones at every dog that barks"

 

Winston S. Churchill -

×
×
  • תוכן חדש...