
07-12-10, 14:41
|
| Όνομα: Ανδρέας Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007 Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική | | Εγγραφή: 06-12-2010 Περιοχή: Θεσσαλονίκη
Μηνύματα: 17
| |
Γεια σου alex,
Για να απαντήσω στο πρόβλημά σου , δημιούργησα αντίγραφο του DB3.mdb και το ονόμασα
DB3_Edit.mdb για τυχόν αλλαγές που θα έκανα στο debugging.
Το αρχείο DB3_Edit.mdb το άνοιξα με το MS Office 2007 EN.
Η φόρμα που δημιουργούσε σε μένα το πρόβλημα ήταν «ΤαμείοΗμέρας» όταν πάτησα τα κουμπιά «Εκτύπωση» και «Κλείσιμο».
Στον κώδικα που δραστηριοποιείται όταν πατάω «Εκτύπωση» (event handler), άλλαξα τη σειρά από
Dim db As Database, tbl1 As Recordset, tbl2 As Recordset
σε
Dim db As Database, tbl1 As DAO.Recordset, tbl2 As DAO.Recordset.
Φαίνεται πως με “recordset” το MS Access καταλαβαίνει ADODB.Recordset και εκεί δεν υπάρχει το recordset.Edit.
Η διαφορά μεταξύ Data Access Objects (DAO) και Active Data Objects είναι ότι το DAO χρησιμοποιεί το Object Database Connectivity (ODBC), πιο παλιό, ειδικό για βάσεις δεδομένων και πιο σταθερό, ενώ το ADO χρησιμοποιεί το OLEDB το οποίο έχει σχέση με το Component Object Model (COM), και είναι πιο σύγχρονο , δηλαδή όχι μόνο για βάσεις δεδομένων.
Στη συνέχεια μετέθεσα τον κώδικα του Form_Unload στο CmdClose_Click, ακριβώς πριν από το DoCmd.Close. To Private Sub Form_Unload το έσβησα. Ο λόγος που το έσβησα είναι ότι μάλλον δε έχει νόημα να χρησιμποιείς recordsets όταν η φόρμα έχει κλείσει. Μπορεί να τη βλέπεις στο γραφικό περιβάλλον (UI), αλλά αυτή έχει κλείσει. Αυτό δεν ισχύει όταν προσπαθήσεις το ίδιο με το που πατάς το κουμπί «Κλείσιμο», διότι η φόρμα είναι ανοιχτή και σε ενεργό κατάσταση.
Για το χρήστη το αποτέλεσμα είναι το ίδιο, διότι δεν αλλάζει η συμπεριφορά στη φόρμα.
Το δοκίμασα και η φόρμα δουλεύει όπως θα έπρεπε.
Αν συνεχίσουν να υπάρχουν προβλήματα, μη διστάσεις να ρωτήσεις!
|