ACCESS

yael800

New member
ACCESS

היי, VBA יש לי טבלה עם עמודה מסוג היפר לינק. איך אני יכולה, מתוך ארוע לחיצה על כפתור בטופס, לרוץ על הטבלה? ואיך אני יכולה לקחת את כל הלינקים ולשמור אותם ב C:\DEMO למשל.. אני חדשה בנושא, מתכנתת דוט נט בכלל :) המון תודה, יעל
 

גרי רשף

New member
יש שתי טכניקות

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

yael800

New member
לא, המטרנ שלי היא

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

yael800

New member
OK, שלב ראשון הצלחתי - הקוד

Private Sub SaveBtn_Click() Dim Conn As ADODB.Connection Dim Rs As ADODB.Recordset Dim strLink As String Set Rs = New ADODB.Recordset Set Conn = CurrentProject.Connection Rs.Open "links", Conn, adOpenStatic Do While Not Rs.EOF strLink = Rs![fname] MsgBox strLink Rs.MoveNext Loop Rs.Close End Sub​
עכשיו, במקום לקחת את הערך הזה (הערך של העמודה מסוג היפר לינק) ולשים בתיבת הודעה, אני רוצה להעתיק ממש את הקובץ עצמו..יש לך רעיון אולי איך אעשה זאת? תודה רבה והמשך יום מקסים, יעל
 

גרי רשף

New member
בערך כך

Open "C:\MyDir\MyFile.txt" For output As #1 Print #1 strLink Close #1​
כמובן שאם רוצים לכתוב הכל לאותו קובץ- פותחים אותו לפני הלולאה וסוגרים אחרי הלולאה. אם פיספסתי משהו (כתבתי את שלוש שורות הקוד מהזכרון)- חיפוש בגוגל יפתור את כל הבעיות..
 

yael800

New member
תודה אבל לא בטוח שהסברתי את המטרה שלי טוב

יש לי בטבלה בעמודת ההיפר לינק כל מיני סוגי קבצים (doc, txt, exe..) אני רוצה לרוץ על הטבלה ולהעתיק את כל הקבצים שיש לי בעמודה לתיקיה ספציפית על המחשב. נניח יש לי את הקבצים: myfile.doc, myproject.exe כהיפר לינק. אני רוצה ליצור עותק שלהם ולשמר כמובן את סוגם, הסיומת שלהם, לתוך תיקיה על המחשב. לפי מה שהבנתי מהדוגמא שנתת לי, אתה יוצר קובץ טקסט ומעתיק את תוכן הקובץ לקובץ טקסט?
 

yael800

New member
תודה..מוזר

אם אני רושמת:
FileCopy "C:\MyFile.doc", "C:\VbLinks\*.*"​
הוא מוציא לי הודעת שגיאה שהשם של הקובץ או מספר לא טובים. כי ניסיתי אפילו סתם להעתיק קובץ לתיקיה. או ככה גם לא טוב
FileCopy "C:\MyFile.doc", "C:\VbLinks"​
בעיה נוספת: כאשר אני מדפיסה את הערך כמחרוזת של ההיפר לינק אני מקבלת אותה פעמיים כמו בתמונה שצירפתי, כך שאני לא יודעת איך לקחת את הערך כמו שצריך, לכן ניסיתי גם עם סתם קובץ להעתיק, והשמות של הקבצים כן נכונים. גם כך אני מקבלת את אותה השגיאה.
 

גרי רשף

New member
כנראה שאסור להשתמש בכוכביות..

צריך לציין במפורש את שם קובץ היעד. לשם כך צריך לכתוב פונקציה שתדע לחלץ את שם הקובץ מתוך הנתיב המלא (למשל- להפוך את המחרוזת, לשלוף כל מה שמשמאל לתו \, ולהפוך חזרה) ולבנות את שם קובץ היעד.
 

yael800

New member
תודה אבל כניראה שזה לא הפיתרון

אין שם של קובץ יעד, זה העניין. יש לי תיקיית יעד, לא קובץ. לתוך התיקיה הזו אני רוצה להעתיק את כל הקבצים. הפונקציה הזו מקבלת נתיב לקובץ מקור ונתיב לקובץ יעד, כך שהיא לא רלוונטית לי. גם ניסיתי ללא הכוכביות, זה לא עוזר.
FileCopy "C:\MyFile.doc", "C:\VbLinks"​
 

גרי רשף

New member
זה לא עוזר כי זה שם של ספריה שקיימת

FileCopy "C:\MyFile.doc", "C:\VbLinks\MyFile.doc"​
 

yael800

New member
Split

נכון. שאלה אחרונה, איך אני מבצעת SPLIT עם SPLIT את זה:
strField = Rs![fname] '"C:\demo\myfile.doc#C:\demo\myfile.doc#" strLink = Split(strField, "#")(0) '"C:\demo\myfile.doc" ' now I want to get "myfile.doc" How??​
 

yael800

New member
ז"א

שכשאני אלך לתיקיה בה הועתקו כל הקבצים, אני אראה לדוגמא את myproject.exe כקובץ שאם אלחץ עליו אז ייפתח לי ה EXE של התוכנה..או myfile.doc ייפתח לי המסמך ב WORD
 
למעלה