ירוקה באקסס...(סליחה, ארוך)

ענתש

New member
ירוקה באקסס...(סליחה, ארוך)

שלום, מציגה את עצמי - שמי ענת, בדרך כלל פעילה בפורומים אחרים פה (הנקה, להיות הורים...) וחייבת לשאול שאלה, אני אנסה לפשט את זה מאד: אני מנסה לצייר טופס שבו אני יכולה להקליד נתונים, נאמר: שם, טלפון וכתובת, ואז ללחוץ על כפתור "הוסף" ושזה יוסיף לי אתץ הנתונים כרשומה חדשה בטבלת "אנשים". איפה הבעיה ? הוספתי גם כפתור "יציאה" שבמידה ואני לוחצת עליו אני לא רוצה שתיווצר לי רשומה בטבלה. זה לא עובד - משום מה האקסס החליט שאם קישרתי לטופס את הטבלה "אנשים" אז מספיק שפתחתי את הטופס ונוספה רשומה, אם אני יוצאת מהטופס מייד אחרי שפתחתי אז נוספת פשוט רשומה ריקה. ניסיתי לתקוף את זה מכיוון אחר, מכיוון ש-VB אני יודעת (אקסס בכלל לא, זה מה שאני מנסה עכשיו...) אז ניסיתי פשוט בקוד לקבל את הנתונים בשדות שלא מקושרים (סתם שדות טקסט על טופס לא מקושר) ואז עם ארוע של לחיצה על כפתור "הוסף" לפתוח recordset שמקושר לטבלה ולהוסיף בו את הנתונים. כך הייתי עושה ב-VB כשעבדתי מול בסיסי נתונים של SQL. רק מה ? כל ה"שפה" של פתיחת connection כמו שאני מכירה מ-VB ו-SQL לא עובדת לי באקסס !!! שלושה ימים אני מנסה לפתוח CONNECTION ! וה help של האקסס עוזר לי כמו כוסות רוח למת ! בקיצור - הסברתי את הבעיה פעמיים - בדרך הפשוטה ובדרך המסובכת. אני אשמח אם ימצא פתרון לדרך הפשוטה (משהו כמו: אם את לא רוצה שתיווצר רשומה פשוט תלחצי על...) אבל גם אם מישהו יכתוב לי דוגמאת קוד לאיך פותחים CONNECTION באקסס, איך פותחים RECORDSET שמקושר לטבלה מסויימת ואיך מעדכנים אני אתן לו
במצח. תודה. ואני נשארת פה בינתיים - יכולה מאד לעזור ב-SQL, VB, ואקסל... בשאר הדברים, כמו שאתם רואים, אני צריכה עזרה בעצמי
 

tberger

New member
טופס מאוגד

כאשר עובדים עם טופס המאוגד (זו המלה המקצועית ל BOUND) לטבלה מייד כאשר מזינים ערך (ואפילו אות ראשונה) באחד מהפקדים המקושרים לשדה בטבלה נפתחת רשומה חדשה בטבלה וכאילו עשית SAVE. רשומה גם נשמרת כאשר עוברים לרשומה אחרת. כאשר לא מזינים ערך לא צריכה להפתח רשומה. אולי בקוד של הכפתור עשית משהו שגורם לרשומה להפתח. מה בדיוק מופיע ברשומה שנשמרת? אילו ערכים? לגבי CONNECTION ב VBA (גרסת הVB לאפליקציות) צריך להיות אותו דבר כמו ב VB רגיל למשל עם ADO.
 

ענתש

New member
לא עשיתי כלום בכפתורים. הלכתי

להגדרה של הטופס וב"מקור נתונים" בחרתי בטבלה מסויימת (סליחה על העברית אבל האקסס שלי בעברית ומכיוון שמעולם לא עבדתי באקסס אנגלית אין לי מושג מה שם השדה במקור...). את הכפתור של הסגירה הקמתי עם האשף, מה שכתוב בקוד שלו זה בסך הכל: FORM.CLOSE או משהו דומה (אני כבר לא בעבודה). בכל מקרה - גם אם הזנתי ערכים והתחרטתי ואני רוצה לצאת מהטופס - אני לא רוצה שישמור ! אני לא רוצה שישמור כל זמן שלא עשיתי "שמור" בכפתור. לגבי - CONNECTION זה לא עובד לי. מה צריך להופיע ב- CONNECTION STRING ? כל מה שאני לא כותבת שם הוא מודיע לי שהמשתמש לא מורשה לפתוח את בסיסהנתונים. ניסיתי להכנס עם משתמש שנקרא "מנהל" בעברית שפי מה שראיתי באבטה זה ה-SYSTEM ADMINISTRATOR... ומה בכלל ההבדל בין ה- USER והסיסמא שאני צריכה להכניס ב-CONNECTION STRING ובין ה-USER והסיסמא שהוא מבקש בהמשך ? (מבנה הפקודה הוא משהו כמו: connection.open CONNECTIONSTRING, USER, PSSWORD אבל ה-CONNECTIONSTRING כבר מכיל בתוכו USER וסיסמא, אז למה שוב ?
 

tberger

New member
זאת שאמרתי

ברגע שמכניסים נתון לתוך שדה אפילו אות אחת הרשומה נשמרה. זהו היתרון והחיסרון של שדות מאוגדים. לא צריך לדאוג לשמירה אבל זה נשמר גם אם לא רוצים ואז צריך למחוק אם לא צריכים את הרשומה. הפקודה למחיקת רשומה הנה DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70 ניתן להוסיף כפתור משהו כמו התחרט או להוסיף את השורה לפני יציאה לגבי CONNECTION STRING ראי כמה הודעות למטה שם עניתי על שאלת התחברות. כותרת התשובה "שתי אפשרויות" אם לקובץ ה MDB ו/או ל ACCESS במחשב אין סיסמא לא צריך להתעסק עם סיסמאות כלל.
 

ענתש

New member
אפשרי למחוק רשומה בלי שתקפוץ לי

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

אלון_פ

New member
תשובה1

באקסס לא צריכים להגדיר connection חדש אלא להשתמש בזה הקיים של האקסס עצמו, אם מדברים על ADO אז החיבור נעשה באמצעות האוביקט CurrentProject.activeconnection כלומר משהו כמו: rs.open sqlstring, CurrentProject.activeconnection ואם זה DAO אז פונקצית - CurrentDB() מחזירה משתנה המצביע לבסיס הנתונים הפעיל של אקסס (מה שפעם נעשה באמצעות DBENgine(0)(0)
 

אלון_פ

New member
תשובה 2

כדי "להנחות" את אקסס להפסיק לבקש אישור למחיקות, בתחילת הפרוצדורה תכתבי: Docmd.setwarning false ובסוף הפרצודרה תחזירי את זה ל- TURE
 
הדבר הכי פשוט.....

בלחצן היציאה מהטופס..... אם לא רוצים לעדכן להוסיף את הפקודה Me.Undo ורק אחר כך לטפל ביציאה מהטופס.....
 

estersh

New member
עוד...

תעשי בדרך הפשוטה כמו ששמוליק אמר לך. ואני מוסיפה לך לידע האישי (סתאאאם, זה פשוט אם תצטרכי בהמשך), את הקוד לפתיחת Recordset בפשטות באקסס.
Dim dbs As Database, rst As Recordset Set dbs = CurrentDb() Set rst = dbs.OpenRecordset("RecordsetName", dbOpenDynaset)​
בהצלחה
 

ענתש

New member
../images/Emo41.gif עוד שאלה..

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

tberger

New member
ע"י SUBFORM

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

ענתש

New member
חייבים ? זה לא מותקן לי... (כשאני

מנסה לפתוח SUBFORM הוא מודיע לי שזה לא מותקן והאם אני רוצה להתקין) יש פטנט אחר או שאני אתחיל לרדוף אחרי מי שמכר את המחשב כדי שיסדר לי התקנה של זה ? (זה מחשב של העבודה אז זה חייב להיות חוקי כמובן).
 

tberger

New member
לא חייבים

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

ענתש

New member
תודה ! השימוש בשאילתא באמת יפתור לי

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