מחיקת קבצים מצורפים באקסס
-
איך אני יכול למחוק הרבה קבצים מצורפים באקסס?
מחקתי את הקבצים מ FileData (עדכנתי בשאילתה ל NULL)
אז הקובץ באמת לא נמצא, והמשקל של האקסס ירד, אבל בטבלה עצמה, כתוב עדין שיש את הקבצים, שמנסים לפתוח הוא כותב שגיאה..
ניסתי גם בשתי השדות הנוספים לעדכן ל NULL, אבל הוא לא נותן...תודה רבה
פורסם במקור בפורום CODE613 ב06/05/2016 01:14 (+03:00)
-
קודם כל צריך לדעת שהאקסס משתמש בעצם בטבלה נוספת עבור כל שורה בטבלה ששם מאוחסנים הקבצים ולכן המחיקה שלך לא התבצעה על כל הקבצים אלא כנראה מחקה את הקישור לטבלה הנסתרת לכן צריך להשתמש בקוד הבא שמקורו בקובץ העזרה של האקסס 2013:
Function RemoveFiles(strTable As String, strField As String, Optional strFile As String, Optional strFilter As String) As Long 'הקוד מוחק קבצים מצורפים בטבלאות 'הארגומנטים של הקוד זה שם הטבלה, שם השדה ,פילטר אופציונאלי לבחירת רשומות מסוימות ,ואופציה נוספת לבחירת חלק משם הקובץ למחיקה 'הפונקציה מחזירה את מספר הקבצים שנמחקו Dim dbs As DAO.Database Dim rst As DAO.Recordset2 Dim rsA As DAO.Recordset2 Dim fld As DAO.Field2 'חיבור לקובץ דטה בייס [הנוכחי] Set dbs = CurrentDb 'אם נבחר מסנן פתיחה של הטבלה עם המסנן אם לא פתיחה רגילה If Len(strFilter) > 0 Then Set rst = dbs.OpenRecordset("SELECT * FROM " & strTable & " WHERE " & strFilter) Else Set rst = dbs.OpenRecordset(strTable) End If 'בחירת השדה שמכיל קבצים מצורפים Set fld = rst(strField) 'עד כאן ההגדרות לבחירת הטבלה והשדה הנכון מכאן מתחיל המחיקה בפועל 'הלולאה רצה כל עוד לא הגענו לסוף הרשימה Do While Not rst.EOF 'בחירת הערך של השדה הנוכחי 'כלומר פתיחת הטבלה הנסתרת שמכילה את הקבצים המצורפים ברשומה הנוכחית Set rsA = fld.Value 'מעבר על כל הקבצים המצורפים Do While Not rsA.EOF 'אם נבחר מסנן לקבצים הסר את הקובץ שמכיל את הטקסט שנבחר 'וספור את הקבצים שנמחקו If Len(strFile) > 0 Then If rsA("FileName") Like strFile Then rsA.Delete RemoveFiles = RemoveFiles + 1 End If Else 'אם לא נבחר מסנן מחיקה של כל הקבצים rsA.Delete RemoveFiles = RemoveFiles + 1 End If rsA.MoveNext Loop 'סגירת הטבלה של הקבצים ששיכים לרשומה הנוכחית rsA.Close Set rsA = Nothing 'מעבר לרשומה הבאה בטבלה הראשית rst.MoveNext Loop rst.Close dbs.Close Set fld = Nothing Set rst = Nothing Set dbs = Nothing End Function
פורסם במקור בפורום CODE613 ב09/05/2016 11:19 (+03:00)