360
צפיות
צפיות
26
תשובות
תשובות
בעייה ביצירת SP באקסס
ניסיתי ליצור 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 תשובות
אקסס לא תומך בסינטקס הזה ישירות
תיצור לך דף עם textarea וחיבור ל-DB שפשוט יריץ את מה שאתה כותב לו לתוך הדיבי, וכך תיצור את ה-SP שלך.
אגב – רצוי מאוד שלא להשתמש ב-@ ב-SP של אקסס.
הוא מציין משתנה מקומי ב-tsql, אבל באקסס הוא עלול לגרום לך להרבה מאוד בעיות.
ועוד שאלה…
הבנתי שכדי לעבור ל-MSSQK רצוי לשלוט ב-TSQL
אבל האם מספיק לדעת להשתמש ב-views וב-SP כדי לעבור
או שעדיף שאני אלמד עוד…
*MSSQL
לדעתי רצוי להכניס את זה ל-FAQ
אקסס זה חרא… כדי ליצור 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…
בעייה בקריאה ל-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
מה אני אמור לעשות ?
תוקן
שאלה על ריבוי משתנים ב-SP
יש מס' משתנים שאליהם אני רוצה להכניס מידע
מה המפריד בפקודת ה-execute המפריד בין המשתנים (@ID…)???
וזו השאילתא
Execute edit @id=1, @phone=89703399, @cellPhone=52554090, @bornDate=#20/04/1990#, @password=dolphin1, @city=מודיעין;
בתודה ניר
ז"א ניסיתי פסיקים…
כלום לא מפריד, רק רווחים
אבל כמו בשאילתה רגילה אתה עדיין עוטף טיפוסי נתונים מתאימים [למשל סטרינג בגרש]
כן אבל
אם אני עושה פסיקים זה לא משנה לי נתונים אבל אין שגיאות
ואם אני עושה רווחים אז אני מקבל את השגיאה הבאה
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.
הבעיות המוצגות כאן נפתרו
תודה לכולם
איזה שרשור מוצף מקורי משלי
ואוריקס צריך גרש (לפחות באקסס זה כך
שאלה חדשה
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
אז זהו –
ש 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 היא שאילתא…
לא הבנתי את הכוונה ב
בשני דברים:
מה ז"א ניתן לעדכן VIEW ? VIEW זה לא טבלה המתקבלת מטבלה אחרת מעין הצהרת SQL במסד ?
ומה זה דו"ח קריסטל ?
—————————————-
במה מתבטאת רמת האבטחה של view מ-SP ?
—————————–
בתודה ניר
90% ממה שכתבת כאן
לא תקף לגבי אקסס.
צריך לזכור ש-SP באקסס הן הדבר הכי פרימיטיבי שיש, שהחלט אפשר לומר שהם כמעט אותו דבר כמו views.
קודם כל
לא אני כתבתי הכל. דבר שני – לא אמרתי שזה תקף באקסס.
ד"א – צריך לבדוק את העניין של View באקסס – איך הוא מטפל בהם, האם הם סתם משפטי SQL כמו SP וכו'…
אולי את יודעת
צריך גרש איפה?
אקסס לא תומך במשפט ה-Create View
בדוק בקבצי העזרה… אבל מי יודע אולי אפשר עם textArea כמו עם SP
בכל מקרה זה עדיין לא מובן לי מה כתבת שם ?
במשפט ה- Execute והתכוונתי לפסיקים

בדיקת ה-regExp
)
בניתי לי regExp עכשיו איך אני מתפעל אותו על מחרוזת מסוימת
זה ה-regExp
var regExpDate = /d{2}/d{2}/d{4}/
////// regExp for date
(regExp לבדיקת מחרוזת תאריך תקינה… אני בניתי
משתמשים בשיטה test של אובייקט זה
regExpDate.test(str)