Καλησπέρα
Γιώργο, ο κώδικάς σου τρέχει και μάλλον πιστεύεις ότι σε καλύπτει πλήρως, οπότε δεν έχει νόημα η περαιτέρω συζήτηση.
Γράφω το κείμενο αυτό, επειδή, κατά τη γνώμη μου, το φόρουμ θα πρέπει να συμβάλλει στη χρήση από τα μέλη του των καλύτερων τεχνικών.
Έτσι θα επισημάνω κάποιες αδυναμίες:
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
Φιλικά/Γιώργος