Εμφάνιση ενός μόνο μηνύματος
  #10  
Παλιά 07-10-14, 13:50
kapetang Ο χρήστης kapetang δεν είναι συνδεδεμένος
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα

Γιώργο, ο κώδικάς σου τρέχει και μάλλον πιστεύεις ότι σε καλύπτει πλήρως, οπότε δεν έχει νόημα η περαιτέρω συζήτηση.

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

Έτσι θα επισημάνω κάποιες αδυναμίες:

1) Η πρόταση δήλωσης βρίσκεται μέσα σε μπλοκ If με αποτέλεσμα, η μεταβλητή rs, άλλοτε να δηλώνεται και άλλοτε όχι.

2) Είναι φλύαρος (επαναλαμβάνει εντολές). Για παράδειγμα.
  • Αντί μιας εντολής ορισμού της μεταβλητής rs έχει 2.
  • Αντί ενός ελέγχου του πλήθους των εγγραφών του rs έχει 2.
Σημειώνεται ότι αν το rs δεν έχει εγγραφές δεν μπορεί να ενημερωθεί κανένα από τα πεδία SVN1 και SVN2, οπότε ο έλεγχος αυτός θα πρέπει να προηγηθεί όλων των άλλων.

3) Δεν ελέγχεται αν το rs έχει τουλάχιστον 2 εγγραφές. Αν έχει λιγότερες από 2 το πεδίο SVN2 δεν μπορεί να ενημερωθεί.

Τώρα που έγινε πλήρως κατανοητό το ζητούμενο, θα μπορούσε να χρησιμοποιηθεί ο παρακάτω κώδικας.
Κώδικας:
Private Sub cmdAddPc_Click()

    Dim rs As DAO.Recordset

    Set rs = CurrentDb.OpenRecordset("SELECT TOP 2 SVNnumber FROM tblLogSVN")
    rs.MoveLast
    If rs.RecordCount Then
        If Nz(Me.SVN1, "") = "" Then
            rs.MoveFirst
            Me.SVN1 = rs!SVNnumber
            Me.Pc1 = True
        ElseIf Nz(Me.SVN2, "") = "" And rs.RecordCount > 1 Then
            rs.MoveLast
            Me.SVN2 = rs!SVNnumber
            Me.Pc2 = True
        Else
            'Εδώ αντιμετωπίζεται η περίπτωση που έχουν προστεθεί 2 Pc
            'Αν δε χρειάζεται το τμήμα Else μπορεί να διαγραφεί.
            MsgBox "Δε μπορούν να προστεθούν άλλα Pc. Η εφαρμογή θα κλείσει"
            Application.Quit
        End If
    End If
End Sub
Φιλικά/Γιώργος