Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

VB net 2010 και related tables στην ACCESS

Îåêßíçóå áðü ôï ìÝëïò DrMad. Τελευταία δημοσίευση από το μέλος Antonios Chatzipavlis στις 09-08-2013, 01:22. Υπάρχουν 8 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  05-08-2013, 04:43 73761

    VB net 2010 και related tables στην ACCESS

    Συνημμένα: 2projects.zip

    Αγαπητοί φίλοι, 

    Ζητώ τη βοήθειά σας γιατί θα  μου στρίψει!!!!

    Το ερώτημα έχει ως εξής: έχω μια βάση Access με 2 πίνακες με Master/Child  σχέση.

    Έχω φτιάξει ένα απλούστατο project το relatedDataTest (επισυνάπτεται) το οποίο και λειτουργεί μια χαρά.

    Έχοντας ένα άλλο -το ίδιο απλοϊκό- kalliergeiestest.zip project κάθε φορά που εισάγω δεδομένα μου βγάζει μήνυμα λάθους "You cannot add or change a record because a related record is required in table 'kalliergeies'." (στο Master table, δηλαδή).

    Το πρόβλημά μου είναι ότι....ως προς τη δομή των βάσεων, το relationship, τη σειρά που γίνονται τα .endedit των binding source κλπ, τα 2 αυτά projects μου φαίνονται ίδια όσο και να τα κοιτάω.... οπότε δεν μπορώ να βρω το λάθος.

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

    Μπορεί κανείς να εντοπίσει πού έχει γίνει η βλακεία?

     Ευχαριστώ θερμά εκ των προτέρων. 


    Μισώ τα ξυπνητήρια!!!!!!
    Δημοσίευση στην κατηγορία: , ,
  •  06-08-2013, 10:32 73768 σε απάντηση της 73761

    Απ: VB net 2010 και related tables στην ACCESS

    Καλημέρα,

    Ο πίνακας "kalliergeies" που έχεις μέσα στο project σου δεν έχει εγγραφές - αμα βάλεις μία και επιλέξεις αυτή, τότε η εγγραφή στον πίνακα "Eyais8hsies" σώνεται κανονικά.

      

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  06-08-2013, 11:52 73770 σε απάντηση της 73768

    Απ: VB net 2010 και related tables στην ACCESS

    Καλημέρα Γιώργο, 

    Σε ευχαριστώ για την απάντησή σου.

    Η εγγραφή στον πίνακα "Eyais8hsies" γίνεται κανονικά στις ήδη αποθηκευμένες εγγραφές στον πίνακα "kalliergeies".

    Αν κάνω νέα εγγραφή/ές στον πίνακα "kalliergeies" (που πάρει δηλαδή προσωρινό ID -1, -2, κλπ) και πατήσω μετά το "Save", στο tableadaptermanager.updateAll κολλάει.

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

    http://blogs.msdn.com/b/bethmassi/archive/2009/05/14/using-tableadapters-to-insert-related-data-into-an-ms-access-database.aspx

    αν και πραγματικά δεν μπορώ να καταλάβω γιατί κανείς θα πρέπει να παρέμβει στην class του tableadapter για να δει τις εγγραφές του να γίνονται σωστά.

    Και πάλι ευχαριστώ για το χρόνο σου 


    Μισώ τα ξυπνητήρια!!!!!!
  •  07-08-2013, 08:21 73777 σε απάντηση της 73770

    Απ: VB net 2010 και related tables στην ACCESS

    Καλημέρα,

    Η αλήθεια ήταν όταν εισήχθηκαν τα DataSets και οι TableAdapters στο ADO.NET, ήταν κάτι το διαφορετικό στο πως θα γινόταν η πρόσβαση στην βάση (βλ. έκδοση .NET Framework v1.0). Ενώ ο σχεδιασμός τους ήταν να υπάρχει disconnected σχέση με τη βάση, όλοι συνέχισαν να τα θεωρούν και να τα χρησιμοποιούν όπως τα παλαιότερα Recordsets του ADO. Με αποτέλεσμα, όλοι να σηκώνουν όλη τη βάση στη μνήμη, και όταν η βάση ήταν μικρή δεν υπήρχε πρόβλημα, αλλά όταν η βάση μεγάλωνε άρχιζαν τα προβλήματα performance και συγχρονισμού των δεδομένων.

    Το πρόβλημα που υπάρχει είναι ότι όταν γίνεται η εγγραφή μέσα στην βάση (εδώ Access) η βάση είναια αυτή που βάζει το Autonumber για το ID. Ο μηχανισμός από μόνος του δεν είναι σε θέση να πάρει την τιμή που θα δώσει η βάση, να την βάλει στην στήλη του άλλου πίνακα, για να μπορέσει να σωθεί σωστά - όταν υπάρχει η τιμή/εγγραφή στον δεύτερο πίνακα δεν υπάρχει πρόβλημα.

    Η "καλή κυρία" Bath Massi - και πραγματικά μπορείς να βρει πολλά καλά άρθρα στο blog της, και αν χρησιμοποιείς συστιματικά VB.NET θα πρέπει να έχεις το blog της συνέχεια πρόχειρο - δίνει την λύση πως να το ξεπεράσεις, ακριβώς αυτό το πρόβλημα.

    Έχω την εντύπωση, ότι αν βγουν τα Autonumbers, μέσα από την Access και ξαναφτιαχτεί το DataSet θα σου παίξει - μπορεί να έχει αρνητικά νούμερα το ID (αν δεις στην άλλη βάση που έδωσες έτσι είναι) αλλά θα παίζει...

      

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  07-08-2013, 15:55 73779 σε απάντηση της 73777

    Απ: VB net 2010 και related tables στην ACCESS

    George J. Capnias:

     Ενώ ο σχεδιασμός τους ήταν να υπάρχει disconnected σχέση με τη βάση, όλοι συνέχισαν να τα θεωρούν και να τα χρησιμοποιούν όπως τα παλαιότερα Recordsets του ADO. Με αποτέλεσμα, όλοι να σηκώνουν όλη τη βάση στη μνήμη, και όταν η βάση ήταν μικρή δεν υπήρχε πρόβλημα, αλλά όταν η βάση μεγάλωνε άρχιζαν τα προβλήματα performance και συγχρονισμού των δεδομένων.

    Θα την πω την κακία μου αλλά αυτοί οι "όλοι" .... άσε να μην πω. Ας πούμε ότι και το  ADO είχε επίσης disconnected recordsets. Μιλάμε νομίζω για ADO 2.0? Ή 2.1? Όποιος έπαιζε με disconnected recordsets τότε, δεν είχε πρόβλημα να περάσει και σε Datasets.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  07-08-2013, 21:11 73787 σε απάντηση της 73779

    Απ: VB net 2010 και related tables στην ACCESS

    Παναγιώτης Καναβός:
    Θα την πω την κακία μου αλλά αυτοί οι "όλοι" .... άσε να μην πω. Ας πούμε ότι και το  ADO είχε επίσης disconnected recordsets. Μιλάμε νομίζω για ADO 2.0? Ή 2.1? Όποιος έπαιζε με disconnected recordsets τότε, δεν είχε πρόβλημα να περάσει και σε Datasets.

    Για να σου φύγει η απορία ADO 2.1 SP2, και κάνανε persist τοπικά, όχι με XML βεβαια όπως κάνανε τα Datasets:

    Δεν διαφωνώ με την τοποθετησή σου, και εγώ θεωρώ ότι τα Datasets είναι η εξέλιξη των disconnected recordsets - απλά νομίζω για μια ακόμη φορά η Microsoft εμφάνισε μια τεχνολογία που ήταν μπροστά από την εποχή της, και όλοι αμέσως την δακτυλόδειξαν με αποτέλεσμα να θαφτεί.

    Το ίδιο δεν έγινε και το 1997 που ή Microsoft "έπαιζε" στον Internet Explorer active περιεχόμενο με JavaScript και όλοι το "δείχνανε" σαν "κενό ασφαλείας", και όταν έκανε το ίδιο το Google το 2004, όλοι έδειξαν θαυμασμό που το Google είχε επινοήσει μια καινούργια τεχνολογία! - Βλ. Wikipedia :: Ajax (Programming). Πολλοί μέχρι και σήμερα δεν νοούν να καταλάβουν ότι το AJAX δεν είναι τεχνολογία, αλλά τεχνική...

     

    George J.

     


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  09-08-2013, 00:51 73794 σε απάντηση της 73787

    Απ: VB net 2010 και related tables στην ACCESS

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

    Ως προς τις βάσεις δεδομένων, το να αποθηκεύσεις δεδομένα σε 2 related tables είναι το πιο στοιχειώδες βήμα, και θα έπρεπε ο TableManager όντως να τα "τακτοποιεί όλα" ως όφειλε με την έννοια του hierarchical update.  

    Ευχαριστώ θερμά τους προλαλήσαντες για τις χρήσιμες πληροφορίες και γνώσεις τους και να ρωτήσω κάτι το τελευταίο:

    Επειδή αυτό το πρόβλημα γενικά εμφανίζεται στον tableadapter, ανεξαρτήτως αν συνδέεται με access, sqlserverCE, mysql κλπ, εσείς όταν έχετε αυτό το απλό θέμα, 2 related tables που θέλετε να τα σώσετε μετά από προσθήκες και αλλαγές στο dataset, τι ακριβώς κάνετε;

    Φιλικά,

    Δημήτρης 


    Μισώ τα ξυπνητήρια!!!!!!
  •  09-08-2013, 01:08 73795 σε απάντηση της 73794

    Απ: VB net 2010 και related tables στην ACCESS

    Προσωπικά δεν θα χρησιμοποιούσα το Dataset και τους TableAdapters - θα χρησιμοποιούσα το EF για την πρόσβαση στην βάση.

    Μια παρατήρηση:

    • Το πρόβλημά σου, δεν έχει να κάνει με την "αδυναμία" του TableAdapter, αλλά πιο πολύ με το concept του interface που προσπαθείς να υλοποιήσεις. Έχεις ταυτόχρονα σε μια οθόνη δύο οντότητες και προσπαθείς να τις ενημερώσεις και τις δύο ταυτόχρονα. Γενικά αυτό δεν είναι μια καλή πρακτική. Θα έπρεπε στην οθόνη που έχει ο χρήστης, να έχεις μία "κύρια" οντότητα που θα μπορεί και να μεταβάλει και όλες οι άλλες που πιθανά να χρειαστούν να είναι με αναφορά/μόνο για ανάγνωση. Συγκεκριμένα, δεν θα υλοποιούσα αυτή την εισαγωγή με δύο grid, αλλά με ένα grid και μια στήλη compobox που θα έκανε αναφορά στον επόμενο πίνακα. Αν ο χρήστης έπρεπε να ενημερώσει τα δεδομένα που υπάρχουν στο combobox, θα έπρεπε να το κάνει από άλλη οθόνη.

    Με αυτό το "τρικ" θα ξεπερνούσα όλα τα "πρακτικά" προβλήματα...

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  09-08-2013, 01:22 73796 σε απάντηση της 73795

    Απ: VB net 2010 και related tables στην ACCESS

    George J. Capnias:

    Προσωπικά δεν θα χρησιμοποιούσα το Dataset και τους TableAdapters - θα χρησιμοποιούσα το EF για την πρόσβαση στην βάση.

     

    George J.

    Αρκεί να μην κάνεις select queries με αυτό


    Antonios Chatzipavlis

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems