IOPanel

חזור   IOPanel > דבר חופשי > תוכנה ומערכות הפעלה > תיכנות
עמוד ראשי הירשם חיפוש הודעות מהיום סמן פורומים כנקראו

תיכנות פורום בנושאי תיכנות , פיתוח אתרים , שפות תיכנות , אפליקציות סלולר וטאבלטים.

תוכנה ומערכות הפעלה : תיכנות

הכנסת ערך טלפוני לתוך DATATABLE ב-C#

שלום, אני בונה אפליקציה פשוטה מאוד שכל תפקידה בחיים זה ליצור טבלה, להכניס אליה שם וטלפון כאשר שניהם מוגדרים כשדה ...
תגובה
 
קישור חוזר הגדרות אשכול אפשרויות הצגת נושא
ישן 02-03-12, 15:26   #1 (קישור ישיר)
IO Member
 
תאריך הצטרפות: Oct 2011
הודעות: 286
ברירת מחדל הכנסת ערך טלפוני לתוך DATATABLE ב-C#

שלום,
אני בונה אפליקציה פשוטה מאוד שכל תפקידה בחיים זה ליצור טבלה, להכניס אליה שם וטלפון כאשר שניהם מוגדרים כשדה string. מספר הטלפון עשוי להכיל סימן מקף "-".
הבעיה היא שכאשר אני יוצר שורה מסויימת ואני מכניס לה שם ומספר כאשר המספר מכיל מקף למשל
"111-111" כאשר הפעולת הוספת מתבצעת לתוך ה-Datatable אני מקבל את השגיאה הבאה:

Cannot perform '=' operation on System.String and System.Int32.

והשגיאה היא מסוג EvaulateException.

בדר"כ אני מקבל טבלאות מ SQL SERVER ושם אין בעיה להכניס שדות כאלה, במקרה הזה את הטבלה יצרתי בקוד כך:

private static DataTable m_DB_DT;
public static DataTable getDB_DT
{
get
{
if (m_DB_DT == null)
{
m_DB_DT = new DataTable();
m_DB_DT.Columns.Add("Seq", typeof(int));
m_DB_DT.Columns.Add("FullName", typeof(string));
m_DB_DT.Columns.Add("PhoneNumber", typeof(string));
m_DB_DT.TableName = "PhoneBookTable";
}
return m_DB_DT;
}
}

מבדיקה שעשיתי באינטרנט האובייקט DataTable ברגע שמזהה את האופורטור "-" עושה המרה כלשהי ל int וזאת בזמן ההכנסה עצמה ככה שהמרה לפני ל-string לא עוזרת מה שגם השדה מוגדר מראש כ-string.

מהאינטרנט מצאתי את ההסבר לבעיה כך:


Integer literals [+-]?[0-9]+ are treated as System.Int32, System.Int64 or System.Double. System.Double can lose precision depending on how large the number is. For example, if the number in the literal is 2147483650, DataSet will first attempt to parse the number as an Int32. This will not succeed because the number is too large. In this case DataSet will parse the number as an Int64, which will succeed. If the literal was a number larger than the maximum value of an Int64, DataSet will parse the literal using Double.


הקוד של השמירה של המידע נראה כך:


DataRow dr = getDB_DT.NewRow();
dr["Seq"] = returnKeyNumber();
dr["FullName"] = fullName;
dr["PhoneNumber"] = Phone;
getDB_DT.Rows.Add(dr);
getDB_DT.AcceptChanges();
getDB_DT.WriteXml(m_fileDB, true);
return true;

מישהו פעם נתקל בבעיה המטומטמת הזאת ויודע איך למנוע מה-DataTable לעשות Parse ל-string שלי?
תודה מראש
ofir_bl לא מחובר   הגב עם ציטוט
ישן 02-03-12, 17:28   #2 (קישור ישיר)
IO Member
 
סמל האישי של Digital_Oracle
 
תאריך הצטרפות: May 2008
הודעות: 242
ברירת מחדל

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

Sent from my HTC Sensation XE with Beats Audio
__________________
Digital_Oracle לא מחובר   הגב עם ציטוט
ישן 04-03-12, 11:21   #3 (קישור ישיר)
IO Pro
 
סמל האישי של VanHalen
 
תאריך הצטרפות: Jun 2007
הודעות: 2,035
ברירת מחדל

ה DATATABLE לא מנסה לעשות שום דבר מעבר למה שהגדרת לו.
הוא מנסה להמיר מחרוזת לאינטג'ר, אתה צריך לשלוח את כל הקוד הרלוונטי בשביל שאפשר יהיה להבין מה פספסת.
מציע לך לדבג ולראות איפה בדיוק הוא נופל ועם איזה ערכים, זאת הדרך הכי קלה לעשות את זה.
__________________
משחק עכשיו: The Witcher II
שחקתי קודם: Dungeon Siege III, Divinity II - The Dragon Night Saga,Two Worlds II
Intel I5 3470| AC Freezer 7 | Asus P8Z77-V LX2 | Corsair XMS3 2x4GB 1600MHZ | Sapphire HD 7850 | Corsair Force 3 120GB| Topower Top 550W | TT Strike MX | LG L207WT | Microsoft Sidewinder X6 | Razer Naga
Sony Xperia Z1 Compact
Xiaomi MI-2 16GB - MIUI V5
מדריכים: תצוגת משאבי מערכת בזמן אמת תוך כדי משחק
VanHalen לא מחובר   הגב עם ציטוט
ישן 04-03-12, 11:24   #4 (קישור ישיר)
IO Member
 
תאריך הצטרפות: Oct 2011
הודעות: 286
ברירת מחדל

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


הגדרות אשכול
אפשרויות הצגת נושא

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

vB code הינו פועל
סמיילים הינו פועל
קוד [IMG] הינו פועל
קוד HTML הינו כבוי
Trackbacksהינו פועל
Pingbacks הינו פועל
Refbacks הינו פועל

נושאים דומים
אשכול מפרסם האשכול פורום תגובות הודעה אחרונה
איך אני יוצר קשר אם האתר ? אין מספר טלפוני eL!RaN סלולר וגאדג'טים 2 01-09-10 15:12
הכנסת דרייברים לווינדוס מותקן עקב שינוי לוח davieh תמיכה טכנית 8 16-06-10 22:31
שגיעה בעת הכנסת סרטון ל-Movie Maker טניה תמיכה טכנית 2 05-06-09 19:01
הכנסת מספר שרת ב-COD4?? Zander משחקים וקונסולות 5 12-03-08 21:51
הודעה שקופצת בעת הכנסת תמונה? Shay תמיכה טכנית 4 22-07-07 17:38


כל הזמנים הם GMT +3. השעה כרגע היא 4:21.





מופעל על ידי: vBulletin
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO
IOPanel.net © כל הזכויות שמורות