אימות תז ב SQL SERVER
-
יש את הפונקציה הבאה לבדיקת תז :
Public Function fValidateTeudatZehut(ID As String) As Boolean ' http://halemo.net/info/idcard/index.html Dim i, sum, temp As Integer While Len(ID) < 9 ID = "0" & ID End While sum = 0 For i = 1 To 9 temp = Mid(ID, i, 1) If (i Mod 2) = 0 Then If temp >= 5 Then temp = 2 * temp - 9 Else temp = temp * 2 End If End If sum = sum + temp Next i fValidateTeudatZehut = ((sum Mod 10) = 0) End Function
מה האפשריות הטובות להשתמש בפונקציה זו או בדומה לה מתורגמת ל SQL כדי לאמת נתונים ?
בקיצור מה שמוכר מאקסס כאימות שדה ואימות רשומה איך עושים בדוטנט.
תודה לכולם.פורסם במקור בפורום CODE613 ב29/01/2014 18:43 (+02:00)
-
אני הבנתי שאתה מתכוון לשאול איך הדרך הטובה לעשות בדיקת אימות נתונים, במסד שזה אומר פונקציה ב SQL או בקוד שזה אומר פונקציה בדוטנט.
אני כבר מנחש שארכיטקט סובר שזה צריך להיות פונקציה בsql. לי אין דעה בנושא.
פורסם במקור בפורום CODE613 ב29/01/2014 19:44 (+02:00)
-
השאלה איך עושים את זה ב SQL?
וגם באופן כללי איך אתם נוהגים לטפל בנושא של אימות נתונים בשדה וכן אימות רשומה כלומר שאין סתירה בין שדות וכדומה.
בקוד או ב SQL, מה ההמלצות? מדוע בחרתם את הדרך שבחרתם? פשוט לספר על הנסיון שלכם.פורסם במקור בפורום CODE613 ב29/01/2014 21:10 (+02:00)
-
[size=150:39a3bi3s]דבר ראשון[/size:39a3bi3s], חשוב לך לדעת שזה לא יחסוך ממך את הבדיקה בצד לקוח, כלומר בקוד התוכנה.
אם לא תעשה זאת, תקבל שגיאה. גם אם תטפל בשגיאה, התגובה תהיה לא יעילה ואף איטית בהתאם לתקשורת עם המסד.
אני אבין אם מידע זה יגרום לך לשקול שוב האם לעשות את הבדיקה גם ברמת המסד.[size=150:39a3bi3s]דבר שני[/size:39a3bi3s], תלמד איך עושים פונקציה בSQL, זו פעולה חד פעמית לכל סוג פונקציה:
http://msdn.microsoft.com/en-us/library/ms186755.aspx
דוגמה בסיסית ופשוטה: http://stackoverflow.com/a/14550528/1271037כמובן שזה כולל הכרת השפה TSQL, שנחשבת פשוטה וקלה. עם יש לך שאלה ספציפית (לולאה, משתנים, תנאים) פתח אשכול לכל שאלה.
[size=150:39a3bi3s]דבר שלישי [/size:39a3bi3s] תלמד איך עושים בSQL SERVER כלל אימות, כלומר "אילוץ" - Constraint, מסוג בדיקה שזה CHECK.
קישור מתוקןתמצות שתי הדברים האחרונים:
http://connectsql.blogspot.co.il/2011/01/sql-server-function-based-check.htmlפורסם במקור בפורום CODE613 ב30/01/2014 13:58 (+02:00)
-
תודה רבה על הפירוט וההשקעה!
@דוד ל.ט.
דבר שלישי תלמד איך עושים בSQL SERVER כלל אימות, כלומר "אילוץ" - Constraint, מסוג בדיקה שזה CHECK.
http://technet.microsoft.com/en-us/libr ... (v=sql.105).aspxהקישור לא נפתח.
פורסם במקור בפורום CODE613 ב31/01/2014 00:10 (+02:00)
-
תודה רבה על הפירוט וההשקעה!
@דוד ל.ט.
דבר שלישי תלמד איך עושים בSQL SERVER כלל אימות, כלומר "אילוץ" - Constraint, מסוג בדיקה שזה CHECK.http://technet.microsoft.com/en-us/libr ... (v=sql.105).aspx
הקישור לא נפתח.
תוקן.
פורסם במקור בפורום CODE613 ב02/02/2014 11:05 (+02:00)
-
נא לשים לב גם למה שאתה צריך.
כי פונקציה בSQL לא תעזור לך צריך לעורר אותה באיזה שהוא מקום. הויה אומר או הטריגר בעת עדכון השדה או בCHECK (ב-CHECK אי אפשר להכניס פונקציה צריך לכתוב אותה ישירות ובתנאי שהיא אינה מכילה הפניות מבחוץ לשדות הטבלה).
החסרון שלא יהיה לך משוב ללקוח בזמן ריצה, אתה תקבל שגיאת SQL ותצטרך לקלוט את זה בCODE ולנסות לפענח בזמן ריצה, כמו שכתב לך דוד ל.ט
הרעיון לעשות זאת בצד שרת הוא רק לגבי חיפוש וחיתוך נתונים, אבל כאן למה שSQL יהיה יותר טוב מ-NET להפך קוד NET הרבה יותר מהיר וגם יותר גמיש, ובכל מקום מיקרוסופט מכריזים על זה שמבחינת ביצועים של חישוב הNET הרבה יותר מהיר.
זה מאד תלוי איך שבנית את הפרוייקט,
יש עוד סיבה לחשב דברים בשרת זה רק אם השאלה להוריד טבלה עם כמה עמודות ולעשות להם חיבור בקוד או להוריד עמודה אחת ולחשב אותה בשרת, אז אכן עדיף בשרת לפעמים, אבל כאן זה לא יעזור לך כלום, ולהפך, ושוב מאד תלוי בקוד שלך.
לפי איך שזה נראה אצלך אתה צריך ליצור אובייקט שמכיל כל מיני סוגי בדיקות אימות נתונים ולהחיל אותו על הTEXTBOX בירושה וכדו', והכניס לו במאפיין כל פעם בהתאם לצורך לאיזה סוג בדיקה הוא שייך בטופס הנוכחי.פורסם במקור בפורום CODE613 ב03/02/2014 08:46 (+02:00)