Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Κώδικας DLookup με κριτήριο (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/5370-kodikas-dlookup-me-kritirio.html)

γιώργοςΚ 25-10-19 18:30

Κώδικας DLookup με κριτήριο
 
Καλησπέρα,

Προσπαθώ να γράψω εναν κώδικα DLookup με κριτήριο AND αλλά δυστυχώς δεν κατάφερα να το κάνω να δουλεύει. Ο κώδικας βασικά πρέπει να ψάξει στον πίνακα Order εάν υπάρχει καταχωρημένος ο κωδικός του Supplier_id και εαν υπάρχει θέλω να μου δώσει μόνον οσα Order αφορούν τον κωδικο supplier_id που εχουν Status:4.

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

Private Sub txtOrder_Click()

Dim SubID As String
Dim OrderStatus As String
Dim OrderCode As String


If Me.Supplier_id = DLookup("Supplier_id", "ORDERS", "[Supplier_id]=" & Supplier_id AND DLookup("OrderStatus", ORDERS", "[OrderStatus]=" & 4) Then

MsgBox "Found the Supplier" & Me.Supplier_id
SubID = Me.Supplier_id
OrderCode=DLookup("OrderID", ORDERS", "[OrderStatus]=" & 4)

DoCmd.OpenForm "Orders", acNormal, , "OrderID=" & OrderCode

Else
MsgBox "Not Found the Supplier" & Me.Supplier_id

End If

End Sub

vraxnakisg 25-10-19 21:14

Kαλησπέρα Γιώργο,

Για δοκίμασε το παρακάτω:

DLookup("Supplier_id", "ORDERS", "[Supplier_id]=" & Supplier_id & " AND [OrderStatus]= 4) "

Αρκεί το Supplier_id να είναι μεταβλητή ή πεδίο.

Ευχαριστώ.

γιώργοςΚ 25-10-19 21:45

Παράθεση:

Αρχική Δημοσίευση από vraxnakisg (Μήνυμα 30279)
Kαλησπέρα Γιώργο,

Για δοκίμασε το παρακάτω:

DLookup("Supplier_id", "ORDERS", "[Supplier_id]=" & Supplier_id & " AND [OrderStatus]= 4) "

Αρκεί το Supplier_id να είναι μεταβλητή ή πεδίο.

Ευχαριστώ.

Καλησπέρα Γιώργο και ευχαριστώ,

δουλέυει ο κώδικας αλλά κτυπάει ότιαν δεν υπάρχει OrderID που να αντοιστηχεί σε αυτό που ζητάμε.

Private Sub txtOrder_Click()

Dim SubID As String
Dim OrderStatus As String
Dim OrderCode As String

OrderCode = DLookup("Supplier_id", "CONSUMABLE ORDERS", "[Supplier_id]=" & Supplier_id & " AND [OrderStatus]= 4")

If (DLookup("Supplier_id", "CONSUMABLE ORDERS", "[Supplier_id]=" & Supplier_id & " AND [OrderStatus]= 4")) Then

MsgBox "Found the Supplier" & Me.Supplier_id
DoCmd.OpenForm "Orders", acNormal, , "OrderID =" & OrderCode

Else

MsgBox "Not Found the Supplier" & Me.Supplier_id

End If

End Sub

γιώργοςΚ 25-10-19 23:10

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

Private Sub txtOrder_Click()

Dim SubID As String
Dim OrderStatus As String
Dim OrderCode As String
Dim conStr As String

' Check if the order exist
If (DLookup("Supplier_id", "CONSUMABLE ORDERS", "[Supplier_id]=" & Supplier_id & " AND [OrderStatus]= 4")) Then
conStr = 1
MsgBox "conStr" & conStr
Else
conStr = 0
MsgBox "conStr" & conStr

End If


If MsgBox("Would you like to order this product?", vbYesNo Or vbQuestion, "Order Product") = vbYes Then

If conStr = 1 Then
OrderCode = DLookup("Supplier_id", "CONSUMABLE ORDERS", "[Supplier_id]=" & Supplier_id & " AND [OrderStatus]= 4")

If Me.txtOrder = "Order Now" Then
Me.Grabb = True
Me.Order = True

'Create the order
'DoCmd.SetWarnings False
'DoCmd.OpenQuery "qryAutoOrder"
'DoCmd.SetWarnings True

'DoCmd.SetWarnings False
'DoCmd.OpenQuery "qryAutoOrderDetails"
'DoCmd.SetWarnings True
DoCmd.OpenForm "Orders", acNormal, , "OrderID =" & OrderCode
Else
If IsNull(Me.txtOrder) Or Me.txtOrder = "" Then
MsgBox "The desired stock for this item is correct", vbCritical, "Order Fail"

End If
End If

Else
If conStr = 0 Then

If Me.txtOrder = "Order Now" Then
Me.Grabb = True
Me.Order = True

'Create the order
'DoCmd.SetWarnings False
'DoCmd.OpenQuery "qryAutoOrder"
'DoCmd.SetWarnings True

'DoCmd.SetWarnings False
'DoCmd.OpenQuery "qryAutoOrderDetails"
'DoCmd.SetWarnings True
DoCmd.OpenForm "Orders", acNormal, , "OrderID =" & OrderCode
Else
If IsNull(Me.txtOrder) Or Me.txtOrder = "" Then
MsgBox "The desired stock for this item is correct", vbCritical, "Order Fail"
End If
End If


End If
End If

Else
DoCmd.CancelEvent
End If
End Sub


Η ώρα είναι 13:26.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2