שלח תשובה

זירת השאלות

267
צפיות
26
תשובות

בעייה ביצירת SP באקסס

,‏ 19 באפריל, 2004

ניסיתי ליצור SP באקסס של שינוי מידע (UPDATE) משום מה את הפקודה של CREATE PROCEDURE האקקס לא מקבל וחושב שאני מנסה ליצור טבלה

CREATE PROCEDURE edit
(
@id int,
@phone int,
@password Char(10),
@cellPhone int,
@city Char(20),
@bornDate dateTime
)AS
UPDATE navatim
SET navatim.phone=@phone, navatim.cellPhone=@cellPhone, navatim.city=@city, bornDate=@bornDate
WHERE navatim.id=@id


וזה כותב לי
Syntax error in CREATE TABLE statement

האם עשיתי משהו לא נכון?

תגיות:

26 תשובות

  1. אקסס לא תומך בסינטקס הזה ישירות
    תיצור לך דף עם textarea וחיבור ל-DB שפשוט יריץ את מה שאתה כותב לו לתוך הדיבי, וכך תיצור את ה-SP שלך.

    אגב – רצוי מאוד שלא להשתמש ב-@ ב-SP של אקסס.
    הוא מציין משתנה מקומי ב-tsql, אבל באקסס הוא עלול לגרום לך להרבה מאוד בעיות.

  2. ניר טייב הגיב:

    ועוד שאלה…
    הבנתי שכדי לעבור ל-MSSQK רצוי לשלוט ב-TSQL
    אבל האם מספיק לדעת להשתמש ב-views וב-SP כדי לעבור
    או שעדיף שאני אלמד עוד…

  3. ניר טייב הגיב:

    אקסס זה חרא… כדי ליצור SP
    הוא משנה את הסינטקס לגמרי
    כך ה-SP התקבל אצלי באקסס:

    PARAMETERS [id] Long, phone Long, [pwd] Text ( 255 ), cellPhone Long, city Text ( 255 ), bornDate DateTime;

    UPDATE navatim SET navatim.phone = @phone, navatim.cellPhone = @cellPhone, navatim.city = @city, navatim.bornDate = @bornDate, navatim.[password] = @pwd
    WHERE (((navatim.ID)=[@id]));

    לדעתי אתם צריכים להוסיף ל-FAQ שכדי יצור SP באקסס צריך להכין textArea ולכניס לתוכה את השאילתא בלי שימוש בסימן הכרוכית (@) כי אכן אי אפשר ליצור SP באקסס עם זה. זה גורם ל-SYNTAX ERROR בפסוקית ה-Parametrs…

  4. ניר טייב הגיב:

    בעייה בקריאה ל-SP
    יצרתי SP כזה

    CREATE PROCEDUR spChangeDetailsSelect(
    id int
    )
    AS
    SELECT navatim.Fname, navatim.Lname, navatim.phone, navatim.password, navatim.cellPhone, navatim.city, navatim.bornDate
    FROM navatim
    WHERE navatim.ID=[@id];

    וכך אני קורא ל-SP

    var x=1
    query = "Execute spChangeDetailsSelect @id="+x;

    משום מה אני מקבל את השגיאה הבאה (שפעם ראשונה שאני נתקל בה!)

    Parameter [@id] has no default value

    מה אני אמור לעשות ?

  5. ניר טייב הגיב:

    שאלה על ריבוי משתנים ב-SP
    יש מס’ משתנים שאליהם אני רוצה להכניס מידע
    מה המפריד בפקודת ה-execute המפריד בין המשתנים (@ID…)???

  6. ניר טייב הגיב:

    וזו השאילתא


    Execute edit @id=1, @phone=89703399, @cellPhone=52554090, @bornDate=#20/04/1990#, @password=dolphin1, @city=מודיעין;

    בתודה ניר

  7. אוריקס הגיב:

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

  8. ניר טייב הגיב:

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

    Parameter id has no default value.

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

    EXECUTE edit @phone=89703399 @cellPhone=52554090 @bornDate=null @pwd=’dolphin1′ @city=’מודיעין’ @id=1;
    Parameter id has no default value.

  9. ניר טייב הגיב:

    תודה לכולם
    איזה שרשור מוצף מקורי משלי

  10. ניר טייב הגיב:

    ואוריקס צריך גרש (לפחות באקסס זה כך

  11. ניר טייב הגיב:

    שאלה חדשה VIEWS
    הסתכלתי בקבצי העזרה של אקסס (המלצה לכל משתמשים אקסס )
    על הפקודה Create View (לא נתמך באקסס ישירות)
    וגיליתי שהפקודה הזו תואמת לפקודה – Create Procedure
    Create View משמשת רק להצגה נתונים האם רצוי להשתמש בא או ב-Create Procedures ליצית אפשרות שליפה חזקה יותר לטבלה ?

    זה התחביר ע"פ אקסס

    CREATE VIEW view [(field1[, field2[, …]])] AS selectstatement

    CREATE PROCEDURE procedure
    [param1 datatype[, param2 datatype[, …]] AS sqlstatement

  12. אוריקס הגיב:

    אז זהו –
    ש View לא משמש רק להצגת נתונים, אלא לעוד דברים.

    להלן ההבדלים בין Views ל SP:
    כשאתה צריך שאילתת SELECT פשוטה, תריץ אותה מהתוכנית עצמה.
    אם השאילתה נפוצה בתוכנית, עדיף להשתמש בSP או VIEW.

    Views – שאילתת SELECT מסוימת המחזירה תוצאה.
    SP – מספר שאילתות (selects, updates, inserts, הכרזת משתנים), SP גם מקבל פרמטרים המשפיעים על השאילתות.

    בגדול, שניהם מקומפלים ושומרים הגדרות לוגיות של משפטי SQL.

    * אם אתה צריך את השאילתה במקומות רבים כטבלה, אז תבחר בVIEW.

    * אם אתה צריך את התוצאה של השאילתה כדו"ח קריסטל/אפליקציה אז תבחר בSP.

    * אם אתה צריך שאילתות SQL מסוימות [יותר מאחת], ובסופו של דבר אתה צריך לקבל/לפלוט פרמטרים אז אתה צריך ליצור SP.

    * רמת האבטחה של View גבוהה יותר.

    * ניתן לעדכן View כמו שמעדכנים טבלה רגילה.

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

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

    * ב SP המסד מבצע את השאילתות מול עצמו ולא מטייל הלוך וחזור לשרת.

    וצריך לזכור תמיד שView היא טבלה ו SP היא שאילתא…

  13. ניר טייב הגיב:

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

    ומה זה דו"ח קריסטל ?

    —————————————-

    במה מתבטאת רמת האבטחה של view מ-SP ?

    —————————–

    בתודה ניר

  14. 90% ממה שכתבת כאן
    לא תקף לגבי אקסס.
    צריך לזכור ש-SP באקסס הן הדבר הכי פרימיטיבי שיש, שהחלט אפשר לומר שהם כמעט אותו דבר כמו views.

  15. אוריקס הגיב:

    קודם כל
    לא אני כתבתי הכל. דבר שני – לא אמרתי שזה תקף באקסס.

    ד"א – צריך לבדוק את העניין של View באקסס – איך הוא מטפל בהם, האם הם סתם משפטי SQL כמו SP וכו’…

    אולי את יודעת

  16. ניר טייב הגיב:

    אקסס לא תומך במשפט ה-Create View
    בדוק בקבצי העזרה… אבל מי יודע אולי אפשר עם textArea כמו עם SP

    בכל מקרה זה עדיין לא מובן לי מה כתבת שם ?

  17. ניר טייב הגיב:

    בדיקת ה-regExp
    בניתי לי regExp עכשיו איך אני מתפעל אותו על מחרוזת מסוימת
    זה ה-regExp

    var regExpDate = /d{2}/d{2}/d{4}/
    ////// regExp for date

    (regExp לבדיקת מחרוזת תאריך תקינה… אני בניתי )

  18. ניר טייב הגיב:

    משתמשים בשיטה test של אובייקט זה


    regExpDate.test(str)

שלח תשובה