Πώς να ανοίξετε ένα αρχείο DBF: οι απλούστερες λύσεις. Πώς να συνδέσετε ένα αρχείο DBF στην Access μέσω προγραμματισμού; Μεταφόρτωση σε αρχείο DBF

Σήμερα, μάλλον, κανείς δεν χρειάζεται να πει ότι αρκετά συχνά πολλοί χρήστες συναντούν αρχεία με την επέκταση .dbf. Το πιο λυπηρό είναι ότι στο λειτουργικό σύστημα Windows, ακόμα κι αν είναι εγκατεστημένο το Microsoft Office, κανένα πρόγραμμα δεν σχετίζεται με αυτόν τον τύπο αρχείου. Το έχουμε, τώρα θα προσπαθήσουμε να το καταλάβουμε. Ταυτόχρονα, ας δούμε πώς μπορείτε να ορίσετε μια συσχέτιση επέκτασης για επακόλουθη αυτόματη αναγνώριση δεδομένων και άνοιγμα του επιθυμητού αρχείου.

Μορφή DBF: περιγραφή

Στην πραγματικότητα, από την ίδια τη συντομογραφία που εφαρμόζεται στην επέκταση ενός αρχείου αυτού του τύπου, μπορεί κανείς ήδη να συμπεράνει ότι πρόκειται για βάση δεδομένων. Είναι κάπως συγκεκριμένο, αφού τέτοια αρχεία έχουν συνήθως την επέκταση

Σε αυτή την περίπτωση, έχουμε ένα άλλο, το οποίο όμως, παρά την ιδιαιτερότητά του, αναγνωρίζεται από πολλά προγράμματα που υποστηρίζουν την εργασία με πληροφορίες αυτού του τύπου. Αυτό μπορεί να είναι το ίδιο Excel ή Access, που αποτελούν μέρος του κύριου πακέτου του Microsoft Office, ή οποιεσδήποτε άλλες εφαρμογές γραφείου από τρίτους προγραμματιστές.

Πώς να ανοίξετε το DBF στην τυπική έκδοση

Μάλιστα, αν ξαφνικά συναντήσετε ένα αρχείο αυτού του τύπου (το εικονίδιο δεν χρησιμοποιείται σε αυτό ούτε στον Explorer), μην πανικοβληθείτε. Μπορεί να ανοίξει πολύ απλά χρησιμοποιώντας το Excel, καθώς σε αυτό αποθηκεύεται ολόκληρη η λογική δομή και, λαμβάνοντας υπόψη το ίδιο, τη δυνατότητα χρήσης ενός τυπικού συστήματος αναζήτησης.

Δεδομένου ότι κανένα πρόγραμμα δεν συσχετίζεται με το ίδιο το αρχείο στην τυπική έκδοση, υπάρχουν δύο τρόποι για να προχωρήσετε. Συνιστάται, για παράδειγμα, να εκκινήσετε απλώς το Excel ή την Access και στη συνέχεια να χρησιμοποιήσετε το τυπικό μενού ανοίγματος αρχείων ή τον συνδυασμό πλήκτρων Ctrl + O. Ωστόσο, στο μενού που εμφανίζεται στο πεδίο τύπου αρχείου, θα πρέπει να καθορίσετε "Όλα τα αρχεία" (και όχι η "native" μορφή), μετά γιατί επιλέξτε το αρχείο που αναζητάτε. Να είστε σίγουροι: οποιοδήποτε πρόγραμμα υπολογιστικών φύλλων θα αναγνωρίσει αυτόν τον τύπο δεδομένων χωρίς κανένα πρόβλημα.

Όπως είναι ήδη σαφές, το πρόβλημα του πώς να ανοίξετε ένα αρχείο DBF στην περίπτωσή μας έγκειται μόνο στη χρήση μιας τυπικής εφαρμογής γραφείου σε μη αυτόματη λειτουργία. Όπως είναι ήδη σαφές, αυτή η μέθοδος δεν είναι πάντα βολική και απαιτεί συγκεκριμένο χρόνο.

Σχετικά προγράμματα

Τώρα ας δούμε το ίδιο το αρχείο DBF. Πώς μπορώ να το ανοίξω χωρίς να χρησιμοποιήσω τυπικά προγράμματα σουίτας γραφείου; Ναι, από τα ίδια βοηθητικά προγράμματα που περιλαμβάνονται σε παρόμοια προϊόντα λογισμικού.

Για παράδειγμα, θα μπορούσε να είναι το ίδιο Open Office, Lotus κ.λπ. Κατ' αρχήν, δεν υπάρχει μεγάλη διαφορά εδώ, αφού το μόνο που έχει σημασία είναι ότι το πρόγραμμα που χρησιμοποιείται είναι ικανό να λειτουργεί με ηλεκτρονικά δεδομένα σε πίνακα. Η ανάγνωση της μορφής DBF γίνεται ακριβώς το ίδιο σε όλες τις περιπτώσεις. Παρεμπιπτόντως, αυτό δεν εξαρτάται από τον προγραμματιστή της σουίτας γραφείου, καθώς όλοι έχουν υποστήριξη για αυτόν τον τύπο δεδομένων, συμπεριλαμβανομένων ακόμη και πλατφορμών όπως η Oracle.

Αλλαγή προεπιλογών ανοίγματος

Τώρα ας δούμε πώς να ανοίξετε αρχεία DBF ώστε να χρησιμοποιείται η αυτόματη λειτουργία. Στην απλούστερη περίπτωση, αυτό γίνεται από το υπομενού που καλείται κάνοντας δεξί κλικ στο αρχείο στο συνηθισμένο "Explorer", όπου επιλέγεται η εντολή "Άνοιγμα με...".

Για μια μεμονωμένη περίπτωση, χρησιμοποιείται μία από τις εφαρμογές που αναφέρονται. Για να μην επαναλάβετε το μυαλό σας σχετικά με το πώς να ανοίξετε αρχεία DBF, μπορείτε απλώς να καθορίσετε την επιλεγμένη εφαρμογή και, στη συνέχεια, να επιλέξετε το πλαίσιο δίπλα στη γραμμή "Χρήση για όλα τα αρχεία αυτού του τύπου" στο κάτω μέρος. Το ίδιο Excel στο μέλλον (αν επιλεγεί ως προεπιλεγμένο πρόγραμμα) θα ανοίξει ένα αρχείο αυτού του τύπου με ένα κανονικό διπλό κλικ.

Είναι αυτονόητο ότι αντί για Excel, μπορείτε να επιλέξετε Access ή άλλα προγράμματα που μπορούν να αναγνωρίσουν και να ανοίξουν αυτόν τον τύπο δεδομένων. Δεν είναι αυτό το θέμα. Το κύριο πράγμα είναι να ρυθμίσετε το αυτόματο άνοιγμα της βάσης δεδομένων. Λοιπόν, το τι θα εργαστείτε από άποψη λογισμικού εξαρτάται από κάθε μεμονωμένο χρήστη του συστήματος υπολογιστή.

Ποιο είναι το αποτέλεσμα;

Συνοψίζοντας, αξίζει να πούμε ότι η καλύτερη επιλογή κατά το άνοιγμα αρχείων αυτού του τύπου είναι, φυσικά, η σουίτα γραφείου της Microsoft Corporation, καθώς είναι η πιο διαδεδομένη σε όλο τον κόσμο. Είναι αλήθεια ότι δεν υπάρχει τίποτα κακό με το γεγονός ότι ένας χρήστης που δεν χρησιμοποιεί προϊόντα της Microsoft θα ανοίξει δεδομένα αυτού του τύπου σε οποιαδήποτε άλλη εφαρμογή.

Όπως είναι ήδη σαφές από όλα τα παραπάνω, οι επεξεργαστές πινάκων υπάρχουν σχεδόν σε όλα τα πακέτα που είναι γνωστά σήμερα. Μπορεί να διαφέρουν μεταξύ τους μόνο στα ονόματά τους, και σίγουρα όχι στο λειτουργικό τους σύνολο, το οποίο κατά κανόνα είναι το ίδιο παντού, με σπάνιες εξαιρέσεις.

Μεταξύ άλλων, ανάλογα, μπορείτε να χρησιμοποιήσετε πολλά εργαλεία ανάπτυξης χρησιμοποιώντας έναν αρκετά μεγάλο αριθμό γλωσσών προγραμματισμού. Στην ίδια πλατφόρμα που υποστηρίζει τη δημιουργία και τη βελτιστοποίηση διακομιστών SQL, τέτοια αρχεία ανοίγουν, όπως λένε, αμέσως. Όταν ανοίξουν, θα έχουν μια μάλλον συγκεκριμένη εμφάνιση, κάτι που είναι κάπως ασυνήθιστο για τον μέσο χρήστη. Ωστόσο, οι περισσότεροι χρήστες είναι απίθανο να χρησιμοποιήσουν τέτοια εργαλεία επαγγελματικής ανάπτυξης και θα περιοριστούν μόνο σε ένα τυπικό σύνολο λογισμικού.

Ίσως αυτός ο κώδικας από μπορεί να βοηθήσει:

Η συνάρτηση VB που θα χρειαστεί να βάλετε στην MS Access είναι αρκετά απλή και βασικά καλεί τη μέθοδο TransferDatabase, μεταβιβάζοντάς την το DSN (δείχνοντας τη βάση δεδομένων προέλευσης), το όνομα του πίνακα προέλευσης και το όνομα του πίνακα προορισμού. ο κώδικας μοιάζει με αυτό:

Εισαγωγή δημόσιας συνάρτησης(dsnΌνομα ως συμβολοσειρά, sourceTableName ως συμβολοσειρά, targetTableName ως συμβολοσειρά) ' αν ο πίνακας υπάρχει ήδη, διαγράψτε τον. Σε σφάλμα Μετάβαση στο CopyTable DoCmd.DeleteObject acTable, targetTableName CopyTable: DoCmd.TransferDatabase _ acImport, _ "ODBC Database", _ "ODBC;DSN=" + dsnName, _ acTable, _ sourceTableName, _ targetTableName

Και μετά ο κωδικός C#:

αντικείμενο πρόσβασηςObject = null; δοκιμάστε (accessObject = Activator.CreateInstance(Type.GetTypeFromProgID("Access.Application")); accessObject.GetType().InvokeMember("OpenCurrentDatabase", System.Reflection.BindingFlags.Default System.Reflection. , νέο αντικείμενο ( "AccessDbase.mdb" )); accessObject.GetType().InvokeMember("Run", System.Reflection.BindingFlags.Default System.Reflection.BindingFlags.InvokeMethod, null, accessObject, νέο αντικείμενο ( "Import", "DSN Name", "Source table name", "Target table name" )); accessObject.GetType().InvokeMember("CloseCurrentDatabase", System.Reflection.BindingFlags.Default System.Reflection.BindingFlags.InvokeMethod, null, accessObject, null); MessageBox.Show("Η αντιγραφή ολοκληρώθηκε."); ) catch (Exception ex) ( string message = ex.Message; ενώ (ex.InnerException != null) ( ex = ex.InnerException; message += "\r \n----\r\n" + ex.Message; ) MessageBox.Show(message); ) τελικά ( if (accessObject != null) ( System.Runtime.InteropServices.Marshal.ReleaseComObject(accessObject); AccessObject = null; ) )

Η αλλαγή του VBA για ανάγνωση acLink αντί για acImport θα πρέπει να επιτρέπει τη σύνδεση.

Επεξεργασία σχολίων

Δεν μπορώ να βοηθήσω με αυτό, αλλά εδώ είναι κάποιο VBScript που συνδέει έναν πίνακα από το ένα MDB στο άλλο.

StrLinkFile = "C:\Docs\Link.mdb" strAccessFile = "C:\Docs\LTD.mdb" "Δημιουργία συνδέσμου..." Ορισμός cn = CreateObject("ADODB.Connection") cn. Ανοίξτε το "Provider=Microsoft. Jet.OLEDB.4.0;" & _ "Πηγή δεδομένων=" & strAccessFile & ";" & _ "Persist Security Info=False" Ορισμός adoCat = CreateObject("ADOX.Catalog") Ορισμός adoCat.ActiveConnection = cn Ορισμός adoTbl = CreateObject("ADOX.Table") Ορισμός adoTbl.ParentCatalog = adoName "LinkTame" adoTbl.properties("Jet OLEDB:Link Datasource") = strLinkFile adoTbl.properties("Jet OLEDB:Link Provider String") = "MS Access" adoTbl.properties("Jet OLEDB:Remote Table Name") = "Table1" adoT .properties("Jet OLEDB:Create Link") = True "Append the table to the tables collection " adoCat.Tables.Append adoTbl

Ίσως αυτός ο κώδικας από μπορεί να βοηθήσει:

Η συνάρτηση VB που πρέπει να βάλετε στο MS Access είναι αρκετά απλή και ουσιαστικά καλεί τη μέθοδο TransferDatabase, μεταβιβάζοντάς την το DSN (δείχνοντας τη βάση δεδομένων προέλευσης), το όνομα του πίνακα προέλευσης και το όνομα του πίνακα προορισμού. ο κώδικας μοιάζει με αυτό:

Εισαγωγή δημόσιας συνάρτησης(dsnΌνομα ως συμβολοσειρά, sourceTableName ως συμβολοσειρά, targetTableName ως συμβολοσειρά) ' αν ο πίνακας υπάρχει ήδη, διαγράψτε τον. Σε σφάλμα Μετάβαση στο CopyTable DoCmd.DeleteObject acTable, targetTableName CopyTable: DoCmd.TransferDatabase _ acImport, _ "ODBC Database", _ "ODBC;DSN=" + dsnName, _ acTable, _ sourceTableName, _ targetTableName

Και μετά ο κωδικός C#:

αντικείμενο πρόσβασηςObject = null; δοκιμάστε (accessObject = Activator.CreateInstance(Type.GetTypeFromProgID("Access.Application")); accessObject.GetType().InvokeMember("OpenCurrentDatabase", System.Reflection.BindingFlags.Default System.Reflection. , νέο αντικείμενο ( "AccessDbase.mdb" )); accessObject.GetType().InvokeMember("Run", System.Reflection.BindingFlags.Default System.Reflection.BindingFlags.InvokeMethod, null, accessObject, νέο αντικείμενο ( "Import", "DSN Name", "Source table name", "Target table name" )); accessObject.GetType().InvokeMember("CloseCurrentDatabase", System.Reflection.BindingFlags.Default System.Reflection.BindingFlags.InvokeMethod, null, accessObject, null); MessageBox.Show("Η αντιγραφή ολοκληρώθηκε."); ) catch (Exception ex) ( string message = ex.Message; ενώ (ex.InnerException != null) ( ex = ex.InnerException; message += "\r \n----\r\n" + ex.Message; ) MessageBox.Show(message); ) τελικά ( if (accessObject != null) ( System.Runtime.InteropServices.Marshal.ReleaseComObject(accessObject); AccessObject = null; ) )

Η αλλαγή του VBA για ανάγνωση acLink αντί για acImport θα πρέπει να επιτρέπει τη σύνδεση.

Επεξεργασία σχολίων

Δεν μπορώ να βοηθήσω με το C#, αλλά εδώ είναι κάποιο VBScript που συνδέει έναν πίνακα από το ένα MDB στο άλλο.

StrLinkFile = "C:\Docs\Link.mdb" strAccessFile = "C:\Docs\LTD.mdb" "Δημιουργία συνδέσμου..." Ορισμός cn = CreateObject("ADODB.Connection") cn. Ανοίξτε το "Provider=Microsoft. Jet.OLEDB.4.0;" & _ "Πηγή δεδομένων=" & strAccessFile & ";" & _ "Persist Security Info=False" Ορισμός adoCat = CreateObject("ADOX.Catalog") Ορισμός adoCat.ActiveConnection = cn Ορισμός adoTbl = CreateObject("ADOX.Table") Ορισμός adoTbl.ParentCatalog = adoName "LinkTame" adoTbl.properties("Jet OLEDB:Link Datasource") = strLinkFile adoTbl.properties("Jet OLEDB:Link Provider String") = "MS Access" adoTbl.properties("Jet OLEDB:Remote Table Name") = "Table1" adoT .properties("Jet OLEDB:Create Link") = True "Append the table to the tables collection " adoCat.Tables.Append adoTbl

Καλημέρα σε όλους, αγαπητοί αναγνώστες του ιστολογίου. Στο σημερινό άρθρο θα μιλήσω για την πρόσβαση σε αρχεία (πίνακες) DBF με διάφορους τρόπους. Αντιμετώπισα αυτό το πρόβλημα όταν χρειάστηκε να αποκτήσω πρόσβαση σε πίνακες FoxPro DBF. Δοκίμασα μέσω του BDE, δεν λειτούργησε, μόνο σε πίνακες Paradox (dbf), στο τέλος αποφάσισα να δοκιμάσω μέσω του στοιχείου TDBF - αποδείχθηκε επίσης αποτυχία. Αποφάσισα να δοκιμάσω τη σύνδεση μέσω ADO με τον παλιό τρόπο και όλα πήγαν σαν ρολόι.

Επομένως, σε αυτό το άρθρο θα σας πω πώς μπορείτε να συνδεθείτε σε πίνακες DBF με τρεις τρόπους:

  • Χρήση BDE - αυτή η επιλογή δεν λειτούργησε για μένα για πίνακες FoxPro
  • Χρησιμοποιώντας το ADO - FoxPro τα τραπέζια άνοιξαν τέλεια
  • Χρησιμοποιώντας το στοιχείο TDBF, ανοίγει πίνακες Paradox με διαφορετικές κωδικοποιήσεις ή πηγαδάκι dBase.

Για να είμαι ειλικρινής, δεν αντέχω καθόλου το BDE, αλλά έπρεπε να δουλέψω με τέτοιους πίνακες και η πρώτη επιλογή μέσω της οποίας ήθελα να συνδεθώ σε αυτούς ήταν να χρησιμοποιήσω το BDE, κάτι που, καταρχήν, μου βγήκε. δηλαδή, κατάφερα να πάρω μια λίστα με τραπέζια, για τα οποία χάρηκα και πίστευα ότι όλα θα συνεχίσουν όπως τα περίμενα, αλλά δεν ήταν έτσι τα πράγματα. Όταν προσπάθησα να συνδεθώ σε ένα τραπέζι, έλαβα ένα σφάλμα όπως:

Προσπάθησα να το εγκαταστήσω τόσο στον ίδιο τον διαχειριστή BDE όσο και κατά τη σύνδεση, αλλά δεν λειτούργησε τίποτα. Αλλά χρησιμοποιώντας αυτή τη μέθοδο μπόρεσα να συνδεθώ τέλεια με πίνακες DBF - Paradox, για παράδειγμα dBase.

Επομένως, εγκαθιστούμε τα ακόλουθα στοιχεία στη φόρμα από την καρτέλα BDE:

  • TTable ή TQuery
  • Προαιρετικά, μπορείτε να TDataSource και TDbGrid

Στη συνέχεια, στην ιδιότητα DatabaseName του στοιχείου TDataBase ορίσαμε το όνομα της βάσης δεδομένων, έγραψα - MyDB, και στην ιδιότητα DriverName του ίδιου στοιχείου επέλεξα STANDART από την αναπτυσσόμενη λίστα. Ορίσαμε την ιδιότητα LoginPromt σε False, αφού δεν υπάρχει σύνδεση και κωδικός πρόσβασης στους πίνακές μας. Στην ιδιότητα Params ορίζουμε τις παραμέτρους σύνδεσης, καθόρισα μόνο τη διαδρομή προς τους πίνακές μας:

Μπορείτε επίσης να κάνετε διπλό κλικ στο στοιχείο TDataBase και να διαμορφώσετε την απαραίτητη σύνδεση και να ορίσετε την ιδιότητα Connected σε True, ως αποτέλεσμα, θα πρέπει να πραγματοποιηθεί σύνδεση με τους πίνακες, χωρίς σφάλματα. Αυτό είναι όλο, ας πάμε στο στοιχείο TTable, όπου στην ιδιότητα DatabaseName υποδεικνύουμε το όνομα της βάσης δεδομένων μας, δηλαδή MyDB. Στην ιδιότητα TableType, επιλέξτε τον τύπο πίνακα, καθόρισα ttDBase και στην ιδιότητα TableName επιλέξτε το όνομα του πίνακα και μετά ορίσαμε την ιδιότητα Active σε True. Αυτό είναι όλο, συνδέεται τέλεια για μένα και εμφανίζει το τραπέζι μια χαρά.

Αλλά αυτή η επιλογή δεν λειτούργησε για μένα με τους πίνακες FoxPro, όπως ανέφερα παραπάνω. Ως εκ τούτου, για να λύσω το πρόβλημά μου, αποφάσισα να χρησιμοποιήσω την τεχνολογία ADO. Έτσι από την καρτέλα ADO εγκατέστησα τα ακόλουθα στοιχεία:

  • TADOΣύνδεση
  • TADOQuery ή TADOTable
  • Προαιρετικά μπορείτε να εγκαταστήσετε το TDataSource και το TDBGrid

Στη συνέχεια, πρέπει απλώς να δημιουργήσουμε τη σύνδεση που κάναμε για τη βάση δεδομένων MS Access, θα διαφέρει στο ότι επιλέγουμε έναν διαφορετικό πάροχο δεδομένων, δηλαδή το Microsoft Visual FoxPro ODBC. Αυτό είναι όλο, μετά υποδεικνύουμε την κωδικοποίηση και τη διαδρομή προς τους πίνακες. Εάν πρόκειται για πίνακες FoxPro, τότε ο φάκελος πρέπει να περιέχει ένα αρχείο με μια λίστα με όλους τους πίνακες, επέκταση *.dbc. Δηλαδή, η συμβολοσειρά σύνδεσης του στοιχείου TADOCONnection θα μοιάζει κάπως έτσι:

Συνδέουμε το στοιχείο TADOConnection με το TADOTable ή το TADOQuery και εργαζόμαστε με τους πίνακες που χρειαζόμαστε.

Μια άλλη επιλογή είναι να εργαστείτε με πίνακες σε μορφή dbf χρησιμοποιώντας το στοιχείο TDBF, το οποίο χρησιμοποιώ στο έργο. Για να είμαι ειλικρινής, θέλω να το εγκαταλείψω, απλά λειτουργεί καλά με κωδικοποιήσεις. Δεν θα σας πω πώς να το δουλέψετε, αλλά θα αφήσω απλώς έναν σύνδεσμο ως παράδειγμα.

Το DBF είναι μια ευρέως χρησιμοποιούμενη μορφή αποθήκευσης δεδομένων που εμφανίστηκε στη δεκαετία του '80 του περασμένου αιώνα. Η μορφή χρησιμοποιήθηκε για πρώτη φορά στην οικογένεια DBMS dBase. Λόγω της δημοτικότητας και της ευρείας χρήσης του dBase, έχουν δημιουργηθεί πολλά προϊόντα λογισμικού που μοιάζουν με dBase, που ονομάζονται συλλογικά xBase. Παρά τη μεγάλη ηλικία της μορφής, εξακολουθεί να χρησιμοποιείται αρκετά ευρέως. Αυτό το άρθρο περιγράφει τον τρόπο εργασίας με το DBF από το 1C:Enterprise.

Στο 1C:Enterprise, ένα ειδικό αντικείμενο λογισμικού, το xBase, χρησιμοποιείται για εργασία με αρχεία σε μορφή DBF (έκδοση dBase III). Η εργασία με αυτό το αντικείμενο συνήθως δεν προκαλεί δυσκολίες.

Προσοχή!

Όταν εργάζεστε με αρχεία DBF, να θυμάστε ότι το όνομα αρχείου πρέπει να πληροί τον περιορισμό 8.3.

Προσοχή!

Το αντικείμενο xBase είναι διαθέσιμο τόσο από την πλευρά του πελάτη όσο και από την πλευρά του διακομιστή. Θα πρέπει να σκεφτείτε την αλληλεπίδραση πελάτη-διακομιστή όταν επιλύετε κάθε συγκεκριμένο πρόβλημα.

Διαβάζοντας ένα αρχείο DBF

Η ανάγνωση δεδομένων από ένα αρχείο DBF πραγματοποιείται σε διάφορα διαδοχικά βήματα:

  1. Δημιουργία αντικειμένου XBase.
  2. Άνοιγμα αρχείου.
  3. Επαναλάβετε διαδοχικά όλες τις γραμμές του αρχείου και διαβάστε τις τιμές του πεδίου.
  4. Κλείσιμο του αρχείου.
DBP = Νέο XBase; DBP. OpenFile("D:\MyFile.dbf" ); // Στάδιο 2. Άνοιγμα του αρχείου Ενώ ο Κύκλος της Αλήθειας // Στάδιο 3. Περιήγηση στις γραμμές του αρχείουΑναφορά(DBF.NAME); Αν ΟΧΙ DBP. Επόμενο() Στη συνέχεια // Τοποθέτηση στην επόμενη εγγραφή Αμβλώνω; τέλος εαν; EndCycle; DBP. CloseFile(); // Στάδιο 4. Κλείσιμο του αρχείου

Μπορείτε να χρησιμοποιήσετε έναν ελαφρώς τροποποιημένο αλγόριθμο για επανάληψη στις γραμμές ενός αρχείου:

ΟΧΙ DBF ακόμα. Αναφορά βρόχου AtEnd(). (DBF.NAME); DBP. Επόμενο() EndCycle;

Μεταφόρτωση σε αρχείο DBF

Στάδια μεταφόρτωσης σε αρχείο DBF:

  1. Δημιουργία αντικειμένου XBase.
  2. Καθορισμός της κωδικοποίησης (εάν δεν καθορίζεται, θα χρησιμοποιηθεί η κωδικοποίηση ANSI).
  3. Περιγραφή πεδίων.
  4. Δημιουργία αρχείου;
  5. Βρόχος με γραμμές προσθήκης και πλήρωσης.
  6. Κλείσιμο του αρχείου.

Ας δούμε αυτή τη διαδικασία χρησιμοποιώντας ένα παράδειγμα:

DBP = Νέο XBase; // Στάδιο 1. Δημιουργήστε ένα αντικείμενο XBase DBP. Encoding = EncodingXBase. OEM; // Στάδιο 2. Καθορισμός της κωδικοποίησης DBP. Πεδία. Add("CODE" , "S" , 9 ); // Στάδιο 3. Περιγραφή του ονόματος και του τύπου του πεδίου DBP. Πεδία. Add("NAME" , "S" , 40 ); DBP. CreateFile("D:\MyFile.dbf" ); // Στάδιο 4. Δημιουργία αρχείουΕπιλογή = Κατάλογοι. Ονοματολογία. Επιλέγω(); Επιλογή αντίο. Επόμενο() Βρόχος DBP. Προσθήκη(); // Προσθήκη γραμμής DBP. ΚΩΔΙΚΟΣ = Δείγμα. Κώδικας; // Συμπληρώστε την τιμή του πεδίου DBP. ΟΝΟΜΑ = Επιλογή. Ονομα; DBP. Γράφω(); // Γράψτε τη γραμμή EndCycle; DBP. Κλείσιμο αρχείου(); // Στάδιο 6. Κλείσιμο του αρχείου

Κατά τον καθορισμό της κωδικοποίησης, χρησιμοποιείται ο τύπος κωδικοποίησης XBase, ο οποίος μπορεί να λάβει δύο τιμές:

  • ANSI– Μορφή Windows.
  • OEM– Μορφή DOS.

Η προσθήκη ενός νέου πεδίου κατά την περιγραφή μιας δομής έχει τη σύνταξη

Προσθήκη (< Имя>, < Тип>, < Длина>, < Точность>)

Οι παρακάτω τύποι είναι διαθέσιμοι:

  • "N" - αριθμός;
  • "S" - συμβολοσειρά;
  • "D" - ημερομηνία.
  • "L" - boolean;
  • "F" - παρόμοιο με το "N" - αριθμός.

Το μήκος πεδίου απαιτείται για τους τύπους πεδίων "N", "F" και "S".

Εργασία με ευρετήρια

Ένα αρχείο ευρετηρίου μπορεί να χρησιμοποιηθεί σε συνδυασμό με το αρχείο DBF, το οποίο μπορεί να περιέχει πληροφορίες για ένα ή περισσότερα ευρετήρια. Η παρουσία ευρετηρίων καθιστά δυνατή τη χρήση αναζήτησης, και όχι μόνο τη διαδοχική αναζήτηση όλων των γραμμών του αρχείου.

Όταν δημιουργείτε ένα αρχείο ευρετηρίου, πρέπει να καθορίσετε:

  • Κατάλογος δεικτών.
  • Διαδρομή για την αποθήκευση του αρχείου ευρετηρίου (στο στάδιο 4 της μεταφόρτωσης).

Παράδειγμα δημιουργίας αρχείου ευρετηρίου:

DBP . Ευρετήρια. Add("INDCODE" , "CODE" ); DBP. Δημιουργία αρχείου("D:\MyFile.dbf" , "D:\index.cdx" );

Η σύνταξη για την προσθήκη ενός νέου ευρετηρίου είναι:

Προσθήκη (< Имя>, < Выражение>, <Уникальность>, < Убывание>, < Фильтр >)

Για να χρησιμοποιήσετε ευρετήρια κατά την ανάγνωση από ένα αρχείο DBF:

  • Καθορίστε τη διαδρομή προς το αρχείο ευρετηρίου (στο στάδιο 2 της λήψης).
  • Ορίστε τον τρέχοντα δείκτη.

Παράδειγμα ανοίγματος ενός αρχείου DBF χρησιμοποιώντας ένα αρχείο ευρετηρίου:

DBP . OpenFile("D:\MyFile.dbf" , "D:\index.cdx" ); DBP. CurrentIndex = dbf. Ευρετήρια. INDCODE;

Προσοχή!

Όταν ανοίγετε ένα αρχείο DBF, η τοποθέτηση γίνεται στην πρώτη εγγραφή στο αρχείο. Η πρώτη καταχώρηση στο αρχείο δεν ταιριάζει με την πρώτη καταχώρηση στο ευρετήριο. Εξαιτίας αυτού, όταν χρησιμοποιείτε ευρετήρια, πρέπει να τοποθετείτε τον εαυτό σας στην πρώτη σειρά του ευρετηρίου προτού διασχίσετε σειρές διαδοχικά. Αυτό μπορεί να γίνει χρησιμοποιώντας τη μέθοδο First(), για παράδειγμα:

DBP. Πρώτα();

Μία από τις δύο λειτουργίες μπορεί να χρησιμοποιηθεί για την αναζήτηση:

  • Εύρημα (< Ключ>, < Режим >) ;
  • FindByKey(< Режим >) .

Ως αποτέλεσμα και των δύο συναρτήσεων, επιστρέφεται μια τιμή τύπου Boolean (είτε βρέθηκε μια εγγραφή με τις καθορισμένες συνθήκες είτε όχι). Εάν η αναζήτηση είναι επιτυχής, ο τρέχων δείκτης ορίζεται στη γραμμή που βρέθηκε. Μία από τις ακόλουθες τιμές μπορεί να χρησιμοποιηθεί ως λειτουργία αναζήτησης:

  • «>=»;
  • «>»;
  • «<=»;
  • «<«.

Ας δούμε την αναζήτηση σε ένα αρχείο DBF χρησιμοποιώντας παραδείγματα:

DBP = Νέο XBase; DBP. OpenFile("D:\MyFile.dbf" , "D:\index.cdx" ); // Κατά το άνοιγμα ενός αρχείου DBF, καθορίζεται ένα πρόσθετο αρχείο ευρετηρίου DBP. CurrentIndex = dbf. Ευρετήρια. INDCODE; // Ορίστε το τρέχον ευρετήριο // αναζήτηση χρησιμοποιώντας τη μέθοδο Εύρεση:Αν DBP. Find("000000003" , "=" ) Στη συνέχεια Report( + DBP. NAME); Else Report ("Δεν βρέθηκε"); τέλος εαν; // αναζήτηση χρησιμοποιώντας τη μέθοδο FindByKey: DBP. Κλειδί. ΚΩΔΙΚΟΣ = "000000002" ; Αν DBP. FindByKey("=" ) Στη συνέχεια Αναφορά( "Βρέθηκε. Όνομα στοιχείου: "+ DBP. ΟΝΟΜΑ); Else Report ("Δεν βρέθηκε"); τέλος εαν; DBP. Κλείσιμο αρχείου();

Διαγραφή εγγραφών σε αρχείο DBF

Η διαγραφή μιας εγγραφής γίνεται χρησιμοποιώντας τη μέθοδο Delete ():

DBP . Διαγράφω();

Αλλά όταν χρησιμοποιείτε αυτήν τη μέθοδο, η εγγραφή δεν διαγράφεται οριστικά από το αρχείο, αλλά επισημαίνεται ως διαγραμμένη. Κατά την επανάληψη σε γραμμές, οι εγγραφές που έχουν επισημανθεί για διαγραφή παραλείπονται. Εάν θέλετε να ανιχνεύσετε ολόκληρο το αρχείο, συμπεριλαμβανομένων των καταχωρίσεων που έχουν επισημανθεί για διαγραφή, πρέπει να ορίσετε την ιδιότητα σε True. DisplayDeletedΑντικείμενο xBase. Μπορείτε να μάθετε εάν μια εγγραφή έχει επισημανθεί για διαγραφή ή όχι χρησιμοποιώντας τη συνάρτηση RecordDeleted(). Για να αφαιρέσετε το σημάδι διαγραφής, χρησιμοποιήστε τη μέθοδο Restore().

DBP . DisplayDeleted = True; ΟΧΙ DBF ακόμα. Βρόχος AtEnd() Αν DBP. RecordDeleted() Στη συνέχεια DBP. Επαναφέρω(); τέλος εαν; DBP. Επόμενο() EndCycle;

Για να αφαιρέσετε απευθείας τις επισημασμένες καταχωρήσεις, χρησιμοποιήστε τη μέθοδο Shrink():

DBP . Συμπιέζω();

Εάν πρέπει να διαγράψετε απευθείας όλες τις καταχωρήσεις σε ένα αρχείο, μπορείτε να χρησιμοποιήσετε τη μέθοδο ClearFile():

DBP . Καθαρο ΑΡΧΕΙΟ();

Φόρτωση από DBF χρησιμοποιώντας ADO

Η τεχνολογία ADO μπορεί να χρησιμοποιηθεί για εργασία με αρχεία DBF. Τα προγράμματα οδήγησης ADO περιλαμβάνονται στο λειτουργικό σύστημα Windows και δεν χρειάζεται να εγκατασταθούν επιπλέον.

Ας δούμε ένα παράδειγμα κώδικα για ανάγνωση από ένα αρχείο DBF χρησιμοποιώντας τεχνολογία ADO:

ΦΑΣΑΡΙΑ = Νέο COMObject("ADODB.Connection" ); // Δημιουργία αντικειμένου COMΦΑΣΑΡΙΑ. Ανοιξε( "Provider=Microsoft.Jet.OLEDB.4.0; |Πηγή δεδομένων=""D:\""; |Extended Properties=DBASE III") DB = ADO. Execute("Επιλογή * από το MyFile" ); // αίτημα λήψης όλων των εγγραφών από το αρχείο MyFile.DBFΑντίο BD. ΕΟΦ= 0 Κύκλος //Κάντε βρόχο μέσω των εγγραφών αρχείων DBFΑναφορά(DB. Πεδία("Όνομα" ). τιμή); // Παράδειγμα πρόσβασης σε μια τιμή πεδίου DB. MoveNext(); //Μετάβαση στην επόμενη καταχώρηση EndCycle; ΦΑΣΑΡΙΑ. Κλείσε();

Το παράδειγμα που εμφανίζεται χρησιμοποιεί τη συμβολοσειρά σύνδεσης "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="D:\";Extended Properties=DBASE III". Σε αυτή τη γραμμή:

  • Πάροχος είναι το πρόγραμμα οδήγησης που χρησιμοποιείται.
  • Προέλευση δεδομένων – διαδρομή όπου βρίσκεται το αρχείο DBF. Η διαδρομή καθορίζεται με ακρίβεια στον κατάλογο. Το όνομα αρχείου χρησιμοποιείται ως όνομα πίνακα σε ερωτήματα.
  • Εκτεταμένες ιδιότητες – κατά την πρόσβαση σε αρχεία DBF, αυτή είναι μια απαιτούμενη παράμετρος. Μπορείτε να καθορίσετε τη μορφή αρχείου

Προσοχή!

Κατά την ανάγνωση χρησιμοποιώντας την καθορισμένη μέθοδο, η προεπιλεγμένη κωδικοποίηση είναι OEM. Για να αλλάξετε την κωδικοποίηση σε ANSI, πρέπει να ορίσετε την παράμετρο HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\xBase\DataCodePage σε "ANSI" στο μητρώο των Windows.



Έχετε ερωτήσεις;

Αναφέρετε ένα τυπογραφικό λάθος

Κείμενο που θα σταλεί στους συντάκτες μας: