Εμφάνιση ενός μόνο μηνύματος
  #7  
Παλιά 04-07-12, 13:00
Το avatar του χρήστη Tasos
Tasos Ο χρήστης Tasos δεν είναι συνδεδεμένος
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Καλησπέρα!
Ο παρακάτω κώδικας κάνει ακριβώς το ζητούμενο αλλά έχει προσαρμοστεί στη φόρμα "Order Details" του πρότυπου Northwind Database (αγγλικό) που υπάρχει στην έκδοση Access 2007 - 2010.

H φόρμα "Order Details" περιέχει την υποφόρμα "Order Details Extended" στην οποία ανήκει ο παρακάτω κώδικας:

Κώδικας:
Private Sub Form_BeforeUpdate(Cancel As Integer)
    Dim cnt As Long, LngProductID As Long, LngOrderID As Long, LngQty As Long
    If Me.NewRecord Then
        LngQty = Me.Quantity + 0
        LngProductID = Me.Product_ID + 0
        LngOrderID = Me.[Order ID] + 0
        If LngQty > 0 And LngProductID > 0 Then
            cnt = Nz(DSum("[Quantity]", "[Order Details Extended]", _
                          "[Product ID] =" & LngProductID & " AND [Order ID]= " & LngOrderID))
            If cnt = 0 Then Exit Sub
        Else
            Cancel = True
            If LngProductID = 0 Then Me.Product_ID.SetFocus
            If LngQty = 0 Then Me.Quantity.SetFocus
            Exit Sub
        End If
        Cancel = True
        Me.Undo
        CurrentDb.Execute _
                "UPDATE [Order Details Extended] SET [Quantity]=" & cnt + LngQty & _
                "  WHERE [Product ID] =" & LngProductID & " AND [Order ID]= " & LngOrderID

        'Με το παρακάτω κομμάτι ενημερώνει και το πεδίο [Extended Price] με τη
        'συνάρτηση LngQty * GetListPrice(LngProductID)
        '
        ' Δεν θα λειτουργήσει στη συγκεκριμένη βάση δεδομένων. Δείτε το μόνο σαν παράδειγμα.
        '
        '        CurrentDb.Execute _
        '                "UPDATE [Order Details Extended] SET [Quantity]=" & cnt + 1 & _
        '                ", [Extended Price] =" & LngQty * GetListPrice(LngProductID) & _
        '                "  WHERE [Product ID] =" & LngProductID & " AND [Order ID]= " & LngOrderID

        Me.Refresh
    End If
End Sub
Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 05-07-12 στις 10:05. Αιτία: Βελτιστοποίηση κώδικα
Απάντηση με παράθεση