Καλησπέρα
Δημήτρη, αφού κοίταξα τα σχετικά αρχεία θα πρότεινα:
1) Το ερώτημα 00_01_qryItemsForEANS να διαμορφωθεί ως εξής:
Κώδικας:
SELECT Val(Left([Item Nr],7)) AS ArtikelNr, Val(Right([Item Nr],4)) AS KolliInhalt, ITEMS.[Item Nr], ITEMS.DescrGR, ITEMS.listdescr
FROM ITEMS
WHERE (((ITEMS.listdescr) Not Like "Ausgelistet EM*"));
Χρησιμοποιεί απλούστερους τύπους και βάζοντας εδώ τα κριτήρια επιστρέφει λιγότερες εγγραφές.
2) Τα ερωτήματα 00_02_qryEANSForItems και 00_03_qryEANS δε χρειάζονται.
3) το ερώτημα 00_04_qryEANS να αλλάξει στο:
Κώδικας:
SELECT DISTINCT [00_01_qryItemsForEANS].ArtikelNr, EANS.EANCODE, EANS.EANCODEBESCHR
FROM EANS INNER JOIN 00_01_qryItemsForEANS ON EANS.ARTIKELNR = [00_01_qryItemsForEANS].[Item Nr]
ORDER BY [00_01_qryItemsForEANS].ArtikelNr, EANS.EANCODE;
Με τα παραπάνω ελπίζω να βελτιωθεί η ταχύτητα εκτέλεσης του τελικού ερωτήματος.
Σχετικά με τη μπάρα προόδου θα πρότεινα να την καταργήσεις.
Κάθε φορά που ενημερώνεται καταναλώνει χρόνο.
Εξάλλου υπάρχουν και περιπτώσεις που είναι δύσκολο να ενημερώσουμε τη μπάρα (πχ όταν γίνεται η εισαγωγή των δεδομένων, όταν ξαναγράφονται τα στοιχεία)
Θα μπορούσες να γράψεις σε κάποιο κελί «ότι γίνονται υπολογισμοί» και όταν ολοκληρωθούν να γράψεις ότι ολοκληρώθηκαν ή να το σβήσεις και να εμφανίσεις μήνυμα.
Ο χρόνος μπορεί να υπολογιστεί με τη συνάρτηση Timer, που δείχνει σε δευτερόλεπτα το χρόνο που πέρασε από την αρχή της μέρας ( πχ Dim x as Single -> x=Timer -> MsgBox " Ολοκληρώθηκε σε " & RounD(Timer-x, 2) & " δευτερόλεπτα").
Τα κολλήματα συμβαίνουν και σε μένα.
Φαίνεται ότι όταν αργεί να ολοκληρωθεί η εκτέλεση του κώδικα το σύστημα πιστεύει ότι το πρόγραμμα δεν ανταποκρίνεται κα βγάζει σχετικό μήνυμα.
Ένας ακόμα λόγος για την κατάργηση της μπάρας.
Φιλικά/Γιώργος