
09-12-10, 09:38
|
| Όνομα: Ανδρέας Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007 Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική | | Εγγραφή: 06-12-2010 Περιοχή: Θεσσαλονίκη
Μηνύματα: 17
| |
Καλημέρα Αλέξανδρε,
Για να ενεργοποιήσεις τον ήχο, προτείνω να το μεθοδεύσεις ως εξής: - Το αρχείο του ήχου θα πρέπει να βρίσκεται στον ίδιο φάκελο, όπου βρίσκεται και η βάση δεδομένων.
- Απενεργοποίησε πρώτα ΟΛΑ τα περιεχόμενα του cmdPrint_Click()
- Απενεργοποίησε τα περιεχόμενα του CmdClose_Click από την αρχή μέχρι το DoCmd.Close, αλλά χωρίς το ίδιο.
- Πάρε από το cmdPrint_MouseDown() την εντολή PlaySound "TestSound.wav" και τοποθέτησέ τη ως πρώτη εντολή μέσα στο cmdPrint_Click()
- Αποθήκευσε τις αλλαγές και άνοιξέ τη κανονικά.
- Με τις αλλαγές που θα έχεις κάνει δε θα εκτυπώνει, ούτε θα διαγράφει κατά το κλείσιμο.
- Σιγουρέψου, ότι όσες φορές πατάς εκτύπωση ακούγεται ο ήχος. Σε εμένα δούλεψε.
- Αν δουλεύει σωστά, ενεργοποίησε και πάλι τα περιεχόμενα στο cmdPrint_Click() και στο CmdClose_Click()
- Σβήσε το cmdPrint_MouseDown (άδειο δε το χρειάζεσαι)
- Έτοιμο.
Γιατί αυτές οι αλλαγές. Το PlaySound δεν είναι μέθοδος ούτε του Access ούτε του VBA, αλλά μέθοδος της φόρμας.
Το PlaySound δημιουργεί ένα Interoperability-layer (δυστηχώς δε γνωρίζω την αντίστοιχη ελληνική φράση) μεταξύ COM-Component (Access) και Windows Application Interface (WinAPI). για να καλέσει στη συνέχεια μια τη μέθοδο WinAPI."sndPlaySoundA" .
Το πρόβλημα; Πιστεύω πως ενώ το Access τα καταφέρνει με το MouseDown και το Click, το sndPlaySoundA μάλλον μπερδεύεται.
Click σημαίνει MouseDown + MouseUp. Συνήθως σε WinAPI-calls, για να αποφεύγονται αυτά χρησιμοποιούμε ή το Click ή το MouseDown και MouseUp. Σε COM-εφαρμογές (Access) η σειρά των γεγονότων είνα MouseDown-MouseUp-Click, οπότε δεν υπάρχει πρόβλημα.
Καλές δουλειές
Ανδρέας
|