אקסס 2003 מול אקסס 2010

nitzos1

New member
מסכים איתך בנוגע לשימוש בשרת

כל מה שהשרת נותן חייבים לקחת
זה המפתח ליעילות אמיתית
אני מנהל את בסיס הנתונים אך ורק דרך השרת
הממשק של ADP היה עלוב ולא שימושי בעליל
אני ישרתי מערכת ADP ובאמת שעד היום (ונשאר לו לחיות רק שנה נוספת) אני נהנה בתחזוקתו
בגלל שאני נהנה בעבודה ב- SQL עצמו

תיקון לגבי צמידי השרתים
אקסס 2003/XP עובד יופי עם SQL 2008 - בדוק
כמו כן אקסס 2010 עובד יופי עם SQL 2000 - גם זה בדוק
 

avriro

New member
אוקי אבל לא

מסכים איתך לעניין של גרסאות אקסס מול SQL .
יש לי אקסס 2003 בפורמט ADP שעובד מול SQL 2008 ולא זיהיתי בעיה קריטית בעניין, כך שאני לא יודע מהיכן אתה אומר זאת.
המערכת שלי מנהלת רשת של סופרמרקטים בכל הארץ,יש כ 80 חנויות שונות שבכל חנות יש שרת BACK_OFFICE עם שרת SQL SERVER 2005 או 2008.
על כל שרת כזה יש אקסס 2003 בפורמט ADP .
המערכת גם מנהלת את מרכז הרשת.
ותאמין לי עובד בלי בעיות אקסס מול SQL.
 

כלליים

New member
אמרתי זאת על סמך נסיוני הצר

ב2010, ומהודעות השגיאה שקבלתי הנחתי שכך זה גם בגרסאות קודמות.
מסתבר שטעיתי.
 

כלליים

New member
ובענין הביצועים

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

נניח שיש לי טבלה מקושרת עם 200 אלף שורות, ואני פותח את הטבלה.
אקסס, עושה זאת כך: הוא שולף את המפתח הראשי [SELECTpk FROM MyTable], למאגר מקומי, ואחר כך מייבא שורה שורה לטבלה זמנית. בטבלאות גדולות, זה דבר איטי מאד מאד..
ADO לעומת זאת, בכלל לא מייבא רשומות, אלא עובד בכל פעם מול רשומה אחת.
גם ADP לא מייבא, כי הוא רץ ישירות על השרת בלי תיווך של אקסס.

ולכן, הפתרון הוא:
א. לעבוד כמו בדוט נט, עם חלוקת עבודה בין השרת והלקוח.
את כל השאילתות, התצוגות והפרוצדורות, יש להגדיר בצד השרת.
האקסס צריך להתרכז אך ורק בהצגת הנתונים ולא בעיבודם. אין לכתוב באקסס אפילו select אחד!

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

nitzos1

New member
מחזק את דבריך

כל מה שאמרת נכון גם ב-ADP גם ב-ODBC
כמוך אני ממליץ של באקסס לא יכתב המילה Select
אצלי זה עובד מ-1994

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

avriro

New member
אחלה מסכים איתך אבל

אם שומרים הכל בצד השרת(שאילתות,תצוגות ופרוצדרות) איך תוכל לדבאג?

אני נוהג לכתוב הכל (שאילתות,תצוגות ופרוצדרות) בקוד VBA כולל פקודת ה Execute לשרת.
אם יש באג אני בודק עם כלי הדיבוג של VB.
יכול להיות שזה לא טוב כי בשיטה שלך זה בעצם נכתב בצד הלקוח.

אני מניח שיש גם לשרת SQL SERVER כלי דיבוג אבל אני לא משתמש איתו.
 

כלליים

New member
דיבוג

א. אפשר לדבג בצד שרת.
ב. אם מתחוללת שגיאה בשרת, האקסס ידווח לך גם מהי השגיאה. בדיוק כמו בExecute.
ג. בדרך כלל השגיאות בצד שרת פשוטות יותר: הפרת מפתח וכו'.
 

avriro

New member
לא מדוייק

נכון מקבלים הודעת שגיאה מהשרת ובדרך כלל היא כללית מאוד אבל בדיבוג של VB את מסוגל להגיע גם לשורה בקוד שבה התרחשה השגיאה וללכוד אותה.
בשרת SQL לא תוכל.
 

nitzos1

New member
בצד השרת

בצד השרת לא חסרים כלים לד-באגינג

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

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

בברכה
שמוליק ב
 

כלליים

New member
שווה לך לכתוב בשביל זה

משפטי SQL בצד לקוח?
אולי בVBA חשוב לעשות דיבוג, כי אתה כותב את השאילתה בעיניים קשורות.
אבל אם כותבים אותה בSSMS, אתה מנפה את כל השגיאות ברגע אחד!
חוץ ממה שאתה מקבל השלמה אוטומטית לשמות האובייקטים, אתה מריץ את השאילתה, ובתוך שניה אתה יודע בדיוק האם יש שגיאה, ובאיזו שורה היא.

לכתוב שאילתות בVBA, זו שריפת זמן מוחלטת.
בתמונה המצורפת, אפשר לראות את ההבדל בשאילתה פשוטה מאד.
 

avriro

New member
אני מכיר את

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

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

לכן אין אמת אחת.
 

nitzos1

New member
אני די משוכנע באמת של כליים

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

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