Εμφάνιση ενός μόνο μηνύματος
  #14  
Παλιά 26-03-11, 17:15
Το avatar του χρήστη Tasos
Tasos Ο χρήστης Tasos δεν είναι συνδεδεμένος
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Αγαπητοί φίλοι, καλησπέρα κι από μένα!
Το θέμα της δυναμικής προεπιλογής τιμής ενός πεδίου έχει αποτελέσει βραχνά σε πολλούς
ειδικά όταν εφαρμόζεται σε συνεχείς φόρμες.

Η λύση του Δημήτρη είναι σωστή σαν σκεπτικό.
Παράλληλα είναι η μόνη λύση που δεν χρειάζεται VBA.
Η λύση με VBA θα μπορούσε να είναι όπως φαίνεται παρακάτω.

Φιλικά
Τάσος

Option Compare Database
Option Explicit

Private Const Data_Error As Long = 2169
Private LatestValue As String, tmpValue As String

Private Sub Form_BeforeUpdate(Cancel As Integer)
If Me.text1 = LatestValue Then
Me.Undo
Cancel = True
On Error Resume Next
DoCmd.GoToRecord acDataForm, Me.Name, acLast
End If
End Sub

Private Sub Form_Current()
If Me.NewRecord Then Me.text1 = GetLatestValue
End Sub

Private Sub Form_Error(DataErr As Integer, Response As Integer)

' Η Access προσπαθεί να αποθηκεύσει τη νέα εγγραφή κατά το κλείσιμο η
' οποία ακυρώνεται από την Form_BeforeUpdate() και προκαλεί το σφάλμα 2169

If DataErr = Data_Error Then

Me.Undo
Response = acDataErrContinue
End If
End Sub

Private Sub Form_Load()
GetLatestValue
End Sub

Function GetLatestValue() As String
tmpValue = Nz(DLast("[Text1]", "tbl"), "???-???")
tmpValue = Left(tmpValue, Len(tmpValue) - Abs(Len(tmpValue) > 3) * 3)
If tmpValue <> LatestValue Then
LatestValue = tmpValue
End If
GetLatestValue = LatestValue
End Function
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση