תוכן NJorl - HWzone פורומים
עבור לתוכן
  • צור חשבון

NJorl

משתמש רשום
  • מספר הודעות

    698
  • הצטרפות

  • ביקר לאחרונה

    אף פעם

הודעות שנפתחו על-ידי NJorl

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

    אבל אף מכם לא שם לב שהתרגיל היא למעשה שאלת מיון פשוטה סטנדרטית ביותר במסווה של שאלה כאילו יותר מורכבת

    תחשבו שיש לכם מערך ובו איברים 1 , 2 ו-3 , כל מספר מייצג צבע

    יש ב-וויקיפדיה מספר אלגוריתם למיון

    במקרה הספציפי של דגל הולנד יש רק יוצא מן הכלל אחד לפיו b (צבע כחול) גדול משני הקודים האחרים , בניגוד לסדר ה- ascii הרגיל

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

  2. יש הבדלים בין פונקציות לפרוצדורות ושווה לקרוא על זה עוד.

    בפונקציות אתה לא יכול לכתוב משפטי SQL שמשנים נתונים , insert, delete update

    פונקציות יכולות להחזיר רק סקאלרים

    פונקציות נועדו לשימוש בדיוק למצבים בהן נתקלת, כלומר שילוב ביטוי לוגי בתוך where של שאילתה\פרוצדורה

    פונקציות בד"כ ישמשו בשימוש פנימי בתוך ה- SQL Server כלומר פרוצדורות או שאילתות יקראו להן , אבל לא מתוך קוד חיצוני

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

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

    פרוצדורות יכולות להחזיר רשומות

    כאשר אתה צריך לחשוף פונקציה אל הקוד החיצוני , פשוט תכתוב פרוצדורה שעוטפת את הפונקציה.

  3. יכול להיות שאני אמצא דרך לעשות INNER JOIN. הבעיה היא שזה קצת יותר מסובך מ- 3 טבלאות. בכל מקרה, השאלה היא האם אני יכול להשתמש בPROCEDURES בתוך SELECT. הבנתי שהן יותר יעילות מפונקציות.

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

    הפרוצדורות הן בד"כ הממשק שלך לקוד החיצוני , הקוד החיצוני מדבר רק עם פרוצדורות, ועד כמה שידוע לי אתה לא קורא לפונקציות SQL מבחוץ, כלומר אתה כן יכול אם אתה כותב SQL בקוד שזה אתה כבר יודע מאוד לא מומלץ, בקוד כתוב היטב אתה תעדיף להשתמש ב- DataAdapters ואלו מפעילים פרוצדורות.

    פרוצדורות יכולות להחזיר רשומות או סקאלרים

    פונקציות שימושיות לניהול הפנימי בתוך ה- sql server כמו בדוגמא שדיברנו עליה כאן , אותן אפשר לשבץ בתוך select או where של פרוצדורה.

    בתוך פונקציות אסורות הפקודות שמשנות נתונים delete, insert , update

    פונקציות חייבות להחזיר איזשהו ערך ורק סקאלרי

  4. המממ, אני חושב שמה שיכול לפתור לך את הבעיה זה השימוש ב- SQL Functions

    ההצהרה הכללית דומה מאוד ל- Stored Procedures


    create function fn_test1
    (
    @user_id varchar(50)
    )
    return int
    as
    begin
    -- put your t-sql code here
    end

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

    דרך אחרת לגמרי ואני חושב הרבה יותר טרוויאלית ופשוטה:

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

    אם אתה חיתוך בין שלושת הטבלאות כל משתמש יקבל את הרשומות שהוא רשאי לצפות בהן

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

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

    שני inner join - ים וזה הכל.

  5. נתחיל מה- Stored Procedures:

    אלה יכולים להחזיר Results Set כלומר טבלה או Scalar כלומר מספר יחיד בד"כ שלם

    אני עדיין לא הבנתי מה בדיוק אתה מנסה לעשות

    מה הפרוצדורה myProc עושה ?

    אל תשכח גם שהתחביר של where צריך להיות מורכב בסופו של דבר מ-אופרנטור דו צדדי שמשני צידיו יש אופרנדים

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

    where 1

    ועם זה המכונה לא יודעת מה לעשות

    אם זה עוזר במשהו אולי אתה יכול לעשות זאת בשלבים , משהו כזה ?


    DECLARE @return_value int

    EXEC @return_value = myProc @user
    select * from table where something = @return_value

  6. אני לא רואה שום בעיה לבנות כמעט כל אתר באמצעות tables זה די נוח ושומר על סדר האלמטנים בפנים

    העקרון הוא לעבוד עם טבלאות מקוננות פשוט בתוך אלמנט td אתה פותח אלמנט table חדש

    גם המאפיינים של rowspan, colspan משמשים למרוח אלמנט על פני כל השורה או כל הטור

    האתר entry לא בנוי עם frames (אפשר לראות בקוד) גם לחיצה על כל לינק בתפריט מרעננת את כל הדף

    מה שנהוג היום להשתמש במקום frames זה ajax

  7. אותי מרתיח שת'רד לכאורה לא חשוב , גורר אחריו גל של תגובות של ה- "מומחים"

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

    ואלו שמשרתים באיזו יחידה סודית שחייבים אבל פשוט חייבים לספר לחבר'ה מה הם עושים שם

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

    אבל האגו שלהם לא נרגע עד שעוד מישהו ידע מה הם עושים בצה"ל ולכן רצים לספר לחבר'ה.

    חטא היוהרה והשחצנות , על זה אני מתריע.

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

    וזה לא רק מה חיילים כותבים בפורומים על השירות שלהם בסופי שבוע,

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

    העובדה היא שיש ספק, וכאשר יש ספק , ברירת המחדל צריכה להיות לשתוק!

    תרבות ה- "לספר לחבר'ה" היא תוצאת כישלונה המוחלט של דוברת צה"ל תא"ל מירי רגב

    אשר הנהיגה בשנים האחרונות גישה של מקסימום פתיחות צה"ל לתקשורת

    בשבילה צה"ל הוא חברה מסחרית לכל דבר והיא היחצנית שלה

    והמשימה שלה היא "למתג" את צה"ל (כמה שאני שונא את המילה הזו, "למתג")

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

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

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

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

    לכן גם אם מידע מסויים פורסם במקור זר כלשהו ברשת,

    אנחנו לא צריכים להוסיף עוד מידע שבאמצעותו אפשר לאמת ולהצליב עובדות.

    שנות ה-60 ועד ה-80 הן השנים שישראל ידעה לשחק פוקר כמו שצריך

    הכוח שבשתיקה ובעמימות הוא מה שהרתיע מאז ומתמיד את אוייבינו

    היום אנחנו לא מסוגלים לשמור על סוד יותר משעה.

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

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

    תריץ את שאילתת העדכון שלך בהתחלה עם עדכון של שדה אחד אחה"כ שתיים וכו'

    עד שתתקל בשגיאת הריצה ואז תוכל להבין בדיוק באיזו נקודה התקלה מופיעה

  9. זה תקין, לכאורה

    sqlCmd = "UPDATE users SET firstname='" & firstname & "',lestname='" & lestname & "',age='" & age & "',sex='" & sex
    sqlCmd = sqlCmd & "',password='" & password & "',street='" & street & "',homenumber='" & homenumber& "',city='" & city
    sqlCmd = sqlCmd & "',more='" & more & "' WHERE username='" & username & "'"

    התוצאה של שרשור כל המחרוזת היא לא תקינה עבור התחביר של access זה מה שהמנוע של access מנסה להגיד לך בהודעת השגיאה שלו

  10. את פקודת ה- Execute שים ב- הערה כלומר לא לביצוע

    לפניה שים את משפט ה- write של משפט ה- update

    חשוב שתריץ בדיוק על אותו מקרה שבו היתה השגיאה, כמו שאמרתי קודם יכול להיות שהשגיאה תופיע רק במקרים מסויימים.

    שום עדכון לא אמור להתבצע וגם לא שגיאה, אתה אמור רק לראות את משפט ה- update הסופי כפי שאתה שולח ל- access


    Response.Write(sqlCmd)
    'con.Execute(sqlCmd)

  11. משפט ה- update שלך פגיע להתקפות משתמשים מתוחכמים

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

    יכול להיות שה- update עובד לפעמים ולא יעבוד במקרים מסויימים

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

    ואז כל משפט ה- update שלך משתבש

    לפני פקודת ה- execute תכניס response.write של משפט ה- update כפי ש- access מנסה לפענח

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

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

    לכן המלחמה האחרונה העלתה במידה מסויימת את ההרתעה ישראל

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

×
  • צור חדש...