SweetChild Δημοσ. 30 Σεπτεμβρίου 2008 Δημοσ. 30 Σεπτεμβρίου 2008 Εχω μια εργασια που τεινει να φτασει στο φιναλε. Απλα εχω 2 μικροπροβληματακια με το κομματι της xml. Το προγραμμα μου (σε c++ visual builder) καταχωρει δεδομενα απο βιντεο τα οποια διαλεγει ο χρηστης, τα αποθηκευει σε βαση δεδομενων (access) και τα εξαγει σε xml αρχειο. Ειχα βαλει μια εντολη που τα εξηγαγε σε xml, αλλα δεν τα εβγαζε κανονικα. Σε τετοια μορφη ωστε να μπορω να κανω και εισαγωγη απο xml (προς τη βαση). Υπαρχει καποιος που να μπορει να με βοηθησει σε αυτο?... Εχω ψαξει αμετρητες ωρες στο ιντερνετ και δεν βρηκα στοιχεια που να βοηθουν. Στην ουσια ζηταω μια εντολη (στην c++) που να εξαγει την βαση στο xml. (Μεσα απο την Access αυτο γινεται πανευκολα. Αλλα φανταζομαι η c++ δεν μπορει να ανοιξει την βαση και να ζητησει Αρχειο-> Εξαγωγή απ αυτην.) Και αν υπαρχει καποια αντιστοιχη εντολη που να κανει το αντιθετο. Να εισαγει απο την xml... Απαντησεις μεσα σε 10 μερες γιατι μετα παραδιδωωωωωω... Pleeeaaase helppp...
isim Δημοσ. 30 Σεπτεμβρίου 2008 Δημοσ. 30 Σεπτεμβρίου 2008 Αν δουλευεις σε .NET τοτε το datatable εχει μια μεθοδο που σου δινει την δυνατοτητα να κανεις dump to schema της βασης μαζι με τα δεδομενα σε xml στον δισκο. Απλα τωρα δεν θυμαμαι ποια ειναι. Αλλιως θα πρεπει να φτιαξεις εσυ το xml αρχειο...Δες πως φτιαχνει το xml η access και καντο με τον ιδιο τροπο
ΠάρηςΓ Δημοσ. 30 Σεπτεμβρίου 2008 Δημοσ. 30 Σεπτεμβρίου 2008 Τι προβλημα ειχε αυτο που ειχες κανει ; Γιατι δεν τα εκανε μετα εισαγωγη;Απαντησε σε αυτο ακριβως.
SweetChild Δημοσ. 30 Σεπτεμβρίου 2008 Μέλος Δημοσ. 30 Σεπτεμβρίου 2008 Isim: Δουλευω σε Visual c++ της Builder. Δεν ειναι .NET Οποτε κατι τετοιο απ οσο ειδα δεν κανει. Ή τουλαχιστον δεν το ξερω... (στην ουσια αυτο ζηταω) Μονη μου μπορω να φτιαξω το xml αρχειο απο την βαση. Απλα το σωστο ειναι να το κανει το προγραμμα μου. Πάρη: ειχα γραψει την εξης εντολη ADOTable1->SaveToFile("C:/DataToXml.xml",pfXML); όπου ADOTable1 ειναι ενα ερωτημα που εφτιαξα στην βαση και απλα το εκτελει. Αλλα (αν ξερεις ακριβως απο xml) δεν μου βγαζει καν επανω τι version ειναι, τι encording χρησιμοποιω... και τα λοιπα.. Και φυσικα αυτο δεν με βοηθαει και στην εισαγωγη απο xml. Γιατι οπως την κανω απο την βαση μεσα (πανευκολο) δεν αναγνωριζει τους πινακες και τα δεδομενα τους.
ΠάρηςΓ Δημοσ. 30 Σεπτεμβρίου 2008 Δημοσ. 30 Σεπτεμβρίου 2008 Ισως υπάρχει καποια δυνατότητα αλλά δεν χρησιμοποιεις το Νετ να μπορει καποιος να βοηθησει.Εννοεις πως δεν βγάζει αυτα; <?xml version="1.0" encoding="ISO-8859-1"?> Απο οτι ειδα η εξοδος ADOTable1->SaveToFile("C:/DataToXml.xml",pfXML); δεν ειναι συμβατή με αλλα προγραμματα. Αλλα ειναι συμβατη με το προγραμμα σου.Αν δοκίμαζες την LoadFromFile που ειναι συμβατή; Και να τη φορτωνεις στην αcess μεσω του προγραμματος σου.Κατευθειαν ισως μονο αν εγραφες το δικο σου αρχειο δηλαδή να εκανες κωδικα να τα εξαγει οπως θες
SweetChild Δημοσ. 30 Σεπτεμβρίου 2008 Μέλος Δημοσ. 30 Σεπτεμβρίου 2008 Μπααα... τετοιο πραγμα δεν παιζει... Να φτιαξω κωδικα να το βγαζει. Γιατι εκτος του οτι θελει ποοοολυ καιρο, δεν εχω και την γνωση. Ειναι συμβατη με το προγραμμα μου αλλα δεν εξαγει οπως θελω. Δεν ξερω αν υπαρχει παρομοια εντολη ή με αλλο format της XML ωστε να το βγαζει σωστα (οπως εδειξες κι εσυ). Το LoadFromFile που να το χρησιμοποιησω ακριβως? Στο να φορτωσω δεδομενα απο την xml στην βαση? Αυτο το δοκιμασα αλλα δεν γινεται. Γιατι η διαδικασια ειναι περιπλοκη. Πρεπει να φιλτραρει ολα τα δεδομενα των πινακων και τις καταχωρησεις τους και να δημιουργησει ιδια βαση με ιδια δεδομενα. Πραγμα που δεν γινεται με μια εντολη. Εκτος κι αν εννοεις να το δοκιμασω για να κανω LoadFromFile απο την Access και να μετατρεψω σε xml. Δεν το γνωριζω καθολου αυτο...
Directx Δημοσ. 30 Σεπτεμβρίου 2008 Δημοσ. 30 Σεπτεμβρίου 2008 [..]σε c++ visual builder[..] Δουλεύεις σε C++ Builder. Υ.Γ. Φαίνεται ότι το ADO 2.5+ υποστηρίζει το Export & Import ενός Table από & σε XML, ακολουθεί κώδικας σε VB: http://www.freevbcode.com/ShowCode.Asp?ID=1204 Από ότι βλέπω μπορείς να προσπελάσεις το ADO engine σχεδόν απευθείας με την βοήθεια του ADOTable->Recordset αν βρω κάτι πιο συγκεκριμένο θα σου πω. Ακόμα καλύτερα υπάρχει κώδικας σε Delphi που αποθηκεύει & φορτώνει ADO -> XML, εδώ: http://www.delphi3000.com/articles/article_3416.asp?SK= Δεν έχω ασχοληθεί με αυτό το ζήτημα στον C++ Builder ώστε να γίνω πιο αναλυτικός, καθώς τις DB ανάγκες μου, τις καλύπτω με την SQLite.
ΠάρηςΓ Δημοσ. 30 Σεπτεμβρίου 2008 Δημοσ. 30 Σεπτεμβρίου 2008 Εννοω οτι αποθηκευεις το αρχειο με την SaveToFile και το διαβάσεις με την LoadFromFile και τα βαζεις στο access.Kαπως ετσι ADOTable1->LoadFromFile('blah.xml'); Παραπάνω δεν μπορω να σε βοηθησω δεν εχω αλλες γνωσεις για αυτο το συστημα.Ψαξε για xml translator απο ado xml κατι ισως βοηθησει
SweetChild Δημοσ. 1 Οκτωβρίου 2008 Μέλος Δημοσ. 1 Οκτωβρίου 2008 Direct θα τα ριξω μια ματια ολα αυτα... Εχω και ενα βιβλιο που ισως με βοηθησει. Πάρη καταλαβα τι λες. Το ειχα δοκιμασει αλλα δεν... Κι αυτο που εκανα παλι σωστο δεν ειναι. Χθες εφαγα 4 ωρες να ψαχνω για το xml translator και γενικα για την συνδεση αυτων. Αλλα δεν υπαρχουν βοηθηματα που να εξηγουν εστω τα απλα. Βασικα το θεμα ειναι οτι δεν γνωριζω αν υπαρχει λυση (εντολη) απο την c++ να γινει αυτο ή αν ψαχνω τζαμπα τοσο καιρο. Δηλαδη αν υποστηριζει τετοια εξαγωγη η γλωσσα αυτη.
Directx Δημοσ. 1 Οκτωβρίου 2008 Δημοσ. 1 Οκτωβρίου 2008 Έπαιξα λίγο με τις εντολές TADOTable->SaveToFile("filename", 1); & TADOTable->LoadFromFile("filename"); -ο αριθμός 1 δηλώνει ότι θέλουμε PersistantXML (ουσιαστικά είναι το XML flag του ADO). Πρόσεξε τώρα.. Το SaveToFile δημιουργεί πράγματι ένα XML αρχείο. Το LoadToFile επίσης φορτώνει αυτό το αρχείο, δεν χτυπά, δεν επιστρέφει κάποια εξαίρεση, οπότε όλα καλά. Που είναι το πρόβλημα; Όταν δοκιμάζεις να εξετάσεις την Β.Δ. που είναι αποθηκευμένη στον δίσκο, μετά την LoadToFile είναι κενή (για παράδειγμα) ενώ εμείς έχουμε φορτώσει από το XML backup της πχ 3 records, που είναι λοιπόν αυτά τα Records; .. Τι συμβαίνει; Λοιπόν από το documentation μαθαίνουμε ότι η LoadToFile κλείνει την τρέχουσα Β.Δ. και ανοίγει εκείνη της XML. Συνεπώς όταν δοκίμασα να δω αν όντος το LoadToFile φόρτωσε πραγματικά τα 3 record που δημιούργησα πειραματικά για το XML, είδα ότι υπήρχαν (τουλάχιστον αριθμητικά -3-) με την βοήθεια της ADOTable1->RecordCount στο TADOTable! *** Συνεπώς το Save & Load δουλεύουν, μόνο που το Load από XML θα πρέπει να γίνει μάλλον σε ένα ανεξάρτητο TADOTable και ύστερα θα πρέπει να κάνεις υποθέτω .. αντιγραφή των περιεχόμενων του στο TADOTable της φυσικής Β.Δ. που χρησιμοποιείς. *** Μπορεί να κάνω λάθος βέβαια ....
SweetChild Δημοσ. 1 Οκτωβρίου 2008 Μέλος Δημοσ. 1 Οκτωβρίου 2008 Βασικα ενα θεματακι ειναι οτι το ADOTable1 ειναι στην ουσια ερωτημα. Δημιουργησα ενα απο την βαση , το οποιο εμφανιζει ολα τα δεδομενα απο ολους τους πινακες (τρεις). Αυτο ειναι ευκολο στο να εξαγεις.. γιατι στην ουσια διαβαζει το ερωτημα (το οποιο βγαζει ολα τα δεδομενα) και το τρεχει/εμφανιζει στην xml. Το να το εισαγεις ομως... δεν αντιλαμβανομαι πως γινεται. Γιατι πρεπει να δημιουργησει απο το τιποτα 3 πινακες με ιδια πεδια. Δλδ το TADOTable->LoadFromFile("filename"); δεν πρεπει να ναι τοσο απλο οσο ακουγεται... Τωρα δεν ξερω αν ειναι εφικτο να υπαρχει εντολη που να διαβαζει ολο το xml και να μπορει να ξεχωρισει τους πινακες και να τους δημιουργει. Ή αν τελικα πρεπει να γινουν 3 ερωτηματα για την εξαγωγη και 3 για την εισαγωγη. Ενα για καθε πινακα..
ΠάρηςΓ Δημοσ. 1 Οκτωβρίου 2008 Δημοσ. 1 Οκτωβρίου 2008 Δηλαδή είναι ενα View αν δε κάνω λάθος; Αν θες κανε ποστ κομματι του κωδικα να σε βοηθησουμε αν μπορουμε
SweetChild Δημοσ. 1 Οκτωβρίου 2008 Μέλος Δημοσ. 1 Οκτωβρίου 2008 Οκ... Θα το κανω αυριο την ιδια ωριτσα γιατι τωρα νοιωθω τον Μορφέα να μου κλεινει το ματι...
Directx Δημοσ. 1 Οκτωβρίου 2008 Δημοσ. 1 Οκτωβρίου 2008 Βασικα ενα θεματακι ειναι οτι το ADOTable1 ειναι στην ουσια ερωτημα. Δημιουργησα ενα απο την βαση , το οποιο εμφανιζει ολα τα δεδομενα απο ολους τους πινακες (τρεις). Αυτο ειναι ευκολο στο να εξαγεις.. γιατι στην ουσια διαβαζει το ερωτημα (το οποιο βγαζει ολα τα δεδομενα) και το τρεχει/εμφανιζει στην xml. Το να το εισαγεις ομως... δεν αντιλαμβανομαι πως γινεται. Γιατι πρεπει να δημιουργησει απο το τιποτα 3 πινακες με ιδια πεδια. Δλδ το TADOTable->LoadFromFile("filename"); δεν πρεπει να ναι τοσο απλο οσο ακουγεται... Τωρα δεν ξερω αν ειναι εφικτο να υπαρχει εντολη που να διαβαζει ολο το xml και να μπορει να ξεχωρισει τους πινακες και να τους δημιουργει. Ή αν τελικα πρεπει να γινουν 3 ερωτηματα για την εξαγωγη και 3 για την εισαγωγη. Ενα για καθε πινακα.. Το μόνο που μπορώ να σου πω είναι ότι σύμφωνα με το documentation το TADOTable->LoadFromFile: "LoadFromFile closes the dataset component before loading the recordset from the file specified in FileName." Ύστερα και λογικά να το δεις, κάνεις LoadFromFile προς το TADOTable, δεν σημαίνει ότι κάνεις Import κάτι, απλά ανοίγεις, ανακατευθύνει το TADOTable σε αυτό το αρχείο. Συνεπώς ( ???? ) θα πρέπει να προβείς σε κάποια μορφή αντικατάστασης batchupdate, cloning κτλ. από τα περιεχόμενα αυτού του TADOTable στα TADOTable που χρησιμοποιείς. Τώρα αν μπορεί να γίνει πιο εύκολα (αυτόματα δίχως περισσότερο κώδικα) δεν γνωρίζω.
SweetChild Δημοσ. 2 Οκτωβρίου 2008 Μέλος Δημοσ. 2 Οκτωβρίου 2008 Κοιταξα καποια πραγματα απο αυτα που μου υπεδειξες. Βρηκα και κατι αλλες χρησιμες σελιδες. Προσπαθω να το κανω με ADODataSet. Η εισαγωγη του με παιδευει λιγο. Θελει να γραψω οπωσδηποτε ερωτημα δημιουργιας πινακων. Αλλα εγω ηθελα να δεχεται τους ιδιους ακριβως. Οντως το LoadFromFile σκετο δεν κανει τπτ.. λογικα χρειαζεται κι αλλος κωδικας. Θα ψαξω λιγο ακομα κι αν δεν γινεται τιποτα παλι θα σας επικαλεστω μπας και βγαλουμε ακρη...
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.