חיבור ADO לקבצי טקסט

כלליים

New member
חיבור ADO לקבצי טקסט

הוזקקתי להתחבר לקבצי טקסט באמצעות ADO. השדות בקובץ הטקסט מופרדות בטאבים. במחרוזת החיבור, יש רכיב בשם FMT שקובע את צורת ההפרדה. לפי התיעוד, לכאורא אם אני מגדיר TabDelimited, אני אמור לקבל את מה שאני צריך: הפרדה באמצעות טאבים. אבל זה לא הועיל כלל, ולאחר שיטוט וגיגול, מצאתי שצריך להוסיף קובץ בשם Schema.ini שם אני מגדיר את ההפרדה. אכן זה הועיל. שאלתי: אם כן, למה נועד הFMT?
 

pitoach

New member
קובץ ה INI קובע את ברירת המחדל של התקייה אבל

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

כלליים

New member
הנה הקוד

הוא כתוב בVBA, אבל לבטח תוכל לפענח אותו. הוא מנסה לפתוח את הקובץ DDD.TXT שבתיקית השורש של כונן D. הקובץ DDD.TXT, הוא קובץ טקסט פשוט, מופרד בטאבים בן שתי רשומות. בדקתי את הקוד שנית [באקסל ובאקסס], והתוצאות היו שכלל לא משנה מה הגדרתי בFMT, הכל נקבע לפי קובץ הסכימה. אם לא היה בתיקיה קובץ סכימה, אז ההפרדה היתה לפי פסיקים, ללא קשר למה שהגדרתי.
Public Sub CSV() Dim rsCon As Object Dim rsData As Object Const conString = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=D:\;Extended Properties=""text;HDR=YES;FMT=Delimited(,)""" Const sqlString = "SELECT * FROM DDD.TXT;" On Error GoTo SomethingWrong Set rsCon = CreateObject("ADODB.Connection") Set rsData = CreateObject("ADODB.Recordset") rsCon.Open conString rsData.Open sqlString, rsCon, 0, 1, 1 ' Clean up our Recordset object. rsData.Close Set rsData = Nothing rsCon.Close Set rsCon = Nothing Exit Sub SomethingWrong: MsgBox "The file name, Sheet name invalid of : " & sqlString, _ vbExclamation, "Error" On Error GoTo 0 End Sub​
 

pitoach

New member
הכותרת זה כמובן עבור הפרדת טאב ועבור כל הפרדה

אחרת ניתן לראות בקישור את הדרך הנכונה לרישום
 

כלליים

New member
אמור לעבוד ולא עובד

המאמר שקשרת אליו, הדריך אותי מלכתחילה, וממנו למדתי ליצור את קובץ הסכימה. אבל במאמר הזה עצמו, יש סתירה פנימית. ראה בקטע הזה http://msdn.microsoft.com/en-us/lib...inerCode_cfcf5ae4-51e5-4977-9511-eeb3a6f88323 בו מופיע במחרוזת הפרמטר FMT שמגדיר את פורמט ההפרדה. אבל מיד לאחר מכן, מובהר שאם רוצים להגדיר הפרדה באמצעות טאב, יש לשנות את הרגיסטרי
או ליצור קובץ INI. והנה טסט פשוט: הקובץ המצורף [יש לשנות את הסיומת לZIP], מכיל שני קבצים: קובץ טקסט פשוט מופרד באמצעות טאבים, וקובץ VB סקריפט פשוט, שפותח את קובץ הטקסט [הוא מחפש אותו בתיקית השורש של כונן D], ומציג בMsgBox כמה שדות יש בקובץ הטקסט. והנה, למרות שבקובץ הטקסט יש שני שדות, הקוד לא מפריד אותם! ומבחינתו הכל שדה אחד!
 

כלליים

New member
תיקון קישור

בקישור בהודעה הקודמת לא הצלחתי לקשר אל הקטע הספציפי, אבל בעיקר כוונתי להפנות אל הקטע Wait a Second; I Have a Tab-Delimited File. What Do I Do Now והקטעים שאחריו. תודה מכל הלב.
 

pitoach

New member
כתבתי בהודעה המקורית שלי לגבי הגדרות של ה OS

ובכלל סביבת ההרצה במשפט שמתחיל ב "בכל מקרה לעיתים אכן נוצרות בעיות הקשורות בהגדרות של סביבת ההרצה..." במקרים כאלה עובדים על קובץ INI כמו שרמתי או משנים את ההגדרות של סביבת העבודה
בכל זאת אני אנסה להגיע לזה ולעבור על הקובץ שצירפת והקוד ולהעלות פתרון אם אמצא פתרון יעיל/מהיר ביום שבת (מחר יש לי יום עמוס במוסך והיום כבר נגמר
) * אני בעקרון תמיד עובד עם קובץ INI מסיבות רבות ובעיקר התאמה לכל מערכת שבעתיד אצתרך אולי להעביר את האפליקציה אליה. מטרת קובץ ה INI בדיוק לעקוף את הגדרות הסביבה
 
למעלה