Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Φίλτράρισμα εγγραφών Φόρμας Μέσω Πολλών ComboBox (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/1630-filtrarisma-eggrafon-formas-meso-pollon-combobox.html)

Χρήστος 10-02-12 12:06

Φιλτράρισμα Εγγραφών Φόρμας Μέσω Πολλαπλών ComboBox
 
Καλησπέρα σας,
Στη βάση-Δείγμα που ανεβάζω προσπαθώ να φιλτράρω την φόρμα μέσω των πολλαπλών ComboBox.
Θα ήθελα βοήθεια στο ComboBox Ημερομηνία από και Ημερομηνία εώς όπως επίσης και στο κουμπί ανοίγματος της Έκθεσης.

nasos23 10-02-12 16:13

Παράθεση:

Αρχική Δημοσίευση από Χρήστος (Μήνυμα 9371)
Καλησπέρα σας,
Στη βάση-Δείγμα που ανεβάζω προσπαθώ να φιλτράρω την φόρμα μέσω των πολλαπλών ComboBox.
Θα ήθελα βοήθεια στο ComboBox Ημερομηνία από και Ημερομηνία εώς όπως επίσης και στο κουμπί ανοίγματος της Έκθεσης.


Καλησπέρα στο φόρουμ
Καλησπέρα Χρήστο
Κάνε αντιγραφή τον (διορθωμένο) κώδικα στη Φόρμα Orders
και πες μας αν δουλεύει.

Φιλικά
Νάσος
Παράθεση:

' ms-office.gr Ένα καταπληκτικό forum!
Option Compare Database
Private Sub cboMonth_AfterUpdate()
If Nz(Me.cboMonth) <> 0 Then
Me.DateFrom = Null
Me.DateTo = Null
Me.cboQrt = Null
End If
End Sub
Private Sub cboQrt_AfterUpdate()
If Nz(Me.cboQrt) <> 0 Then
Me.cboMonth = Null
Me.DateFrom = Null
Me.DateTo = Null
End If
End Sub
Private Sub cboYear_AfterUpdate()
If Nz(Me.cboYear) <> 0 Then
Me.DateFrom = Null
Me.DateTo = Null
End If
End Sub


Private Sub cmdFilter_Click()
DoFilter False
End Sub

Private Sub DateFrom_AfterUpdate()
If Nz(Me.DateFrom) <> 0 Then
Me.cboMonth = Null
Me.cboQrt = Null
Me.cboYear = Null
End If
End Sub

Private Sub DateTo_AfterUpdate()
If Nz(Me.DateFrom) <> 0 Then
Me.cboMonth = Null
Me.cboQrt = Null
Me.cboYear = Null
End If
End Sub
Private Sub cmdOpenRPT_Click()
DoFilter True
End Sub
Private Sub cmdReset_Click()
Dim ctl As Access.Control
For Each ctl In Me.Section(1).Controls
If TypeOf ctl Is ComboBox Or _
TypeOf ctl Is TextBox Or _
TypeOf ctl Is CheckBox Then
ctl = Null
End If
Next
Me.OrderStatus = 3
Me.Filter = vbNullString
Me.FilterOn = False
End Sub
Private Sub Εντολή25_Click()
On Error GoTo Err_Εντολή25_Click

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "frmCenterOrderDetails"

stLinkCriteria = "[OrderID]=" & Me![OrderID]
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_Εντολή25_Click:
Exit Sub

Err_Εντολή25_Click:
MsgBox Err.Description
Resume Exit_Εντολή25_Click

End Sub
Private Sub Σύνθετο_πλαίσιο26_AfterUpdate()
' Εύρεση της εγγραφής που ταιριάζει με το στοιχείο ελέγχου
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[OrderID] = " & Str(Nz(Me![Σύνθετο πλαίσιο26], 0))
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub
Private Sub DoFilter(ShowInReport As Boolean)
Dim StrSQL As String, strAnd As String, i As Integer, strTemp

If Nz(Me.cboYear) <> 0 Then
StrSQL = "Year([OrderDate]) = " & Me.cboYear
i = 1
End If

If Nz(Me.cboMonth) <> 0 Then
If i = 0 Then
strAnd = vbNullString
i = 1
Else
strAnd = " And "
End If
StrSQL = StrSQL & strAnd & "Month([OrderDate]) = " & Me.cboMonth
End If

If Nz(Me.cboQrt) <> 0 Then
If i = 0 Then
strAnd = vbNullString
i = 1
Else
strAnd = " And "
End If
StrSQL = StrSQL & strAnd & Choose(Me.cboQrt, "Month([OrderDate]) < 4", _
"Month([OrderDate ]) > 3 AND Month([OrderDate]) < 7", _
"Month([OrderDate ]) > 6 AND Month([OrderDate ]) < 10", _
"Month([OrderDate ]) > 9")
End If

If IsDate(Me.DateFrom) And IsDate(Me.DateTo) Then
If i = 0 Then
strAnd = vbNullString
i = 1
Else
strAnd = " And "
End If
StrSQL = StrSQL & strAnd & "[OrderDate] Between #" & Format(Me.DateFrom, "yyyy-m-d") & "# AND #" & Format(Me.DateTo, "yyyy-m-d") & "#"
End If

If Nz(Me.cboCustomer) <> 0 Then
If i = 0 Then
strAnd = vbNullString
i = 1
Else
strAnd = " And "
End If
StrSQL = StrSQL & strAnd & "[CompanyName] ='" & Me.cboCustomer & "'"
End If

If Nz(Me.OrderStatus) <> 3 Then
If i = 0 Then
strAnd = vbNullString
i = 1
Else
strAnd = " And "
End If
strTemp = Choose(Me.OrderStatus, "[complet] = -1", "[Complete] = 0", vbNullString)
StrSQL = StrSQL & strAnd & strTemp
End If
If ShowInReport Then
DoCmd.OpenReport "rptOrders", acViewPreview, , StrSQL
Else
Me.Filter = StrSQL
Me.FilterOn = True
Me.OrderByOn = True
End If
End Sub

Χρήστος 10-02-12 16:52

(Στην 11 γραμμή απ' το τέλος όπου Complet-->Complete)
Δουλεύει άψογα, σ' ευχαριστώ πάρα πολύ.

nasos23 10-02-12 17:28

Παράθεση:

Αρχική Δημοσίευση από Χρήστος (Μήνυμα 9375)
(Στην 11 γραμμή απ' το τέλος όπου Complet-->Complete)
Δουλεύει άψογα, σ' ευχαριστώ πάρα πολύ.

Νά είσαι καλά
Τα προβλήματα ήταν τα εξής:
Στο κουμπί ανοίγματος της Έκθεσης.
Παράθεση:

Private Sub cmdOpenRPT_Click()
DoFilter True
End Sub
Για ComboBox Ημερομηνία από και Ημερομηνία εώς
Παράθεση:

'StrSQL = StrSQL & strAnd & "[OrderDate] Between #" & Format(Me.DateFrom, "yyyy-m-d") & "# OR #" & Format(Me.DateΤο, "yyyy-m-d") & "#"
Το πρόβλημα ήταν η απόστροφος μπροστά απ' 'StrSQL και έτσι το θεωρούσε σαν κείμενο
και το OR αντί του AND.
Το σωστό είναι:
Παράθεση:

StrSQL = StrSQL & strAnd & "[OrderDate] Between #" & Format(Me.DateFrom, "yyyy-m-d") & "# AND #" & Format(Me.DateTo, "yyyy-m-d") & "#"

nodirem 12-08-12 18:43

1 Συνημμένο(α)
Καλησπέρα παιδιά, προσπαθώ να φτιάξω μία ΒΔ για μιά βιβλιοθήκη, ψάχνοντας στο forum για διάφορα μικροπροβλήματα είδα αυτό που έκανε ο Χρήστος και προσπαθώ να το αντιγράψω παρακάτω ανεβάζω τι έχω κάνει μέχρι τώρα είναι η "Φρμ_Βιβλία" . Μπορείτε να με βοηθήσετε με τη συνέχεια;


Η ώρα είναι 01:27.

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


Search Engine Optimization by vBSEO 3.3.2