Εμφάνιση ενός μόνο μηνύματος
  #14  
Παλιά 09-12-10, 09:38
officeandi Ο χρήστης officeandi δεν είναι συνδεδεμένος
Όνομα: Ανδρέας
Έκδοση λογισμικού 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, οπότε δεν υπάρχει πρόβλημα.

Καλές δουλειές
Ανδρέας
Απάντηση με παράθεση