none
Eror DBF file External table is not in the expected format

    שאלה

  • אני צריכה לשלוף נתונים מקובץ DBF מסוים ,הכנתי קוד לבצע זאת ,הקוד עובד לי עם מסמכים שהכנתי, אבל לא עובד לי עם המסמך המסוים שממנו  התכנה אמורה לשלוף מידע.

    המסמך עצמו לא בעייתי ,כיוון שקבלתי אותו מחברת פיתוח אחרת שעובדת איתו כל הזמן .

    התכנה נופלת לי בשליפת הנתונים בשורת הקוד :

      myadapter.Fill(trpActvInfo)

    השגיאה :External table is not in the expected format

    להלן הקוד :

        Dim trpActvInfo As DataTable = New DataTable
            Dim sFileFolder As String = Nothing
            sFileFolder = "C:\Users\ANS_Acc\Documents"
    
            Dim sConnectionStringOLEDB As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sFileFolder & ";Extended Properties=dBASE IV;User ID=Admin;Password=;"
            'Dim sConnectionStringOLEDB As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sFileFolder & ";Extended Properties=dBASE IV;User ID=Admin;Password=;"
    
            Dim mycon As New OleDbConnection(sConnectionStringOLEDB)
            mycon.Open()
            Dim strquery As String = "Select * from  MEMIRIM1.DBF"
            Dim mycommand As New OleDbCommand(strquery, mycon)
            Try
                'Dim reader As OleDbDataReader = mycommand.ExecuteReader
                Dim myadapter As New OleDbDataAdapter(mycommand)
                myadapter.Fill(trpActvInfo)
                mycon.Close()
                Return trpActvInfo
            Catch ex As Exception
                MessageBox.Show(ex.ToString)
            Finally
                mycon.Close()
            End Try

    יש לי במחשב אופיס  2016 ,32 ביט .וונדוס 2010 

    חיפשתי רבות פתרון לבעיה רוב הפתרונות שמצאתי היו עבור קבצי xls/x אשמח לעזרתכם הדחופה ....

    תודה רבה !!!

    יום שני 20 נובמבר 2017 09:18

תשובות

  • תודה רבה על העזרה 

    להלן הפתרון שגיליתי :קובץ ה DBF יכול להיות מיוצר באמצעות כל מיני  תוכנות לדוג' foxpro ,access ועוד 

    הקובץ שלי כפי הנראה יוצר באמצעות foxpro  וע"כ אי אפשר להתחבר אליו בדרך הרגילה צריך לשנות את הקונקשין ,בנוסך קובץ שיוצר באמצעות foxpro אמור להכיל 2 קבצים DBF ,FPT ולי היה רק DBF ,לאחר שהיה לי את שני הקבצים התכנה עבדה תקין להלן הקוד :

      Public Function GetYourData(direct As String, file As String) As DataTable
            Dim YourResultSet As New DataTable()
            Dim yourConnectionHandler As New OleDbConnection("Provider=VFPOLEDB.1;Data Source=C:\Users\ANS_Acc\Documents\")
            yourConnectionHandler.Open()
            If yourConnectionHandler.State = ConnectionState.Open Then
                Dim mySQL As String = "select * from MEMIRIM1.DBF"
                Dim MyQuery As New OleDbCommand(mySQL, yourConnectionHandler)
                Dim DA As New OleDbDataAdapter(MyQuery)
                DA.Fill(YourResultSet)
                yourConnectionHandler.Close()
            End If
            Return YourResultSet
        End Function

    • סומן כתשובה על-ידי MALCA123456 יום שלישי 21 נובמבר 2017 07:14
    יום שלישי 21 נובמבר 2017 06:54

כל התגובות

  • אהלן,

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

    1. את מצליחה לפתוח את הקובץ באפליקציה אחרת?

    2. את בטוחה שהחברה שספקה לך את הקובץ פותחת את הקובץ המסויים הזה?

    * אם הם עובדים עם הקוהץ את תמיד יכולה לשאול אותם דרך אגב ולהקש קטע קוד לדוגמה.

    ** יש מספר תוכנות שעובדות עם קבצים בעלי שם dBaseו הם לא זהים בפורמט שלהם! זה לא שם של תקן (standard).

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

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


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]

    יום שני 20 נובמבר 2017 23:48
    מנחה דיון
  • כדאי לחפש עזרה בפורום העוסק ב dBase באופן ספציפי בעיקר אם הבעיה קשורה לתוכן הקובץ


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]

    יום שני 20 נובמבר 2017 23:49
    מנחה דיון
  • תודה רבה על העזרה 

    להלן הפתרון שגיליתי :קובץ ה DBF יכול להיות מיוצר באמצעות כל מיני  תוכנות לדוג' foxpro ,access ועוד 

    הקובץ שלי כפי הנראה יוצר באמצעות foxpro  וע"כ אי אפשר להתחבר אליו בדרך הרגילה צריך לשנות את הקונקשין ,בנוסך קובץ שיוצר באמצעות foxpro אמור להכיל 2 קבצים DBF ,FPT ולי היה רק DBF ,לאחר שהיה לי את שני הקבצים התכנה עבדה תקין להלן הקוד :

      Public Function GetYourData(direct As String, file As String) As DataTable
            Dim YourResultSet As New DataTable()
            Dim yourConnectionHandler As New OleDbConnection("Provider=VFPOLEDB.1;Data Source=C:\Users\ANS_Acc\Documents\")
            yourConnectionHandler.Open()
            If yourConnectionHandler.State = ConnectionState.Open Then
                Dim mySQL As String = "select * from MEMIRIM1.DBF"
                Dim MyQuery As New OleDbCommand(mySQL, yourConnectionHandler)
                Dim DA As New OleDbDataAdapter(MyQuery)
                DA.Fill(YourResultSet)
                yourConnectionHandler.Close()
            End If
            Return YourResultSet
        End Function

    • סומן כתשובה על-ידי MALCA123456 יום שלישי 21 נובמבר 2017 07:14
    יום שלישי 21 נובמבר 2017 06:54
  • תודה על העדכון :-)

    זה דרך אגב בדיוק מה שכתבתי לנעלה כאפשרות ניחוש ראשונה:

    ** יש מספר תוכנות שעובדות עם קבצים בעלי שם dBaseו הם לא זהים בפורמט שלהם! זה לא שם של תקן (standard).

    גם תוכנת ה SQL Server יכולה לעבוד עם קבצים בשם כזה ועוד הרבה תוכנות אחרות :-)


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]

    יום רביעי 22 נובמבר 2017 17:04
    מנחה דיון