Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   top3 (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/1601-top3.html)

jimrenoir 30-01-12 11:42

top3
 
1 Συνημμένο(α)
Καλημέρα.Είχα θέσει ένα ερώτημα οποίο είχε απαντηθεί απο το φόρουμ.
Το πρόβλημα μου είναι ότι δεν μπορώ να το εφαρμόσω σε μια καινούργιiα βάση.
Θέλω τις 3 μεγαλύτερες τιμές απο το id για κάθε ημέρα,για όσες ημέρες υπάρχουν στον πίνακα.
Αν μπορεί κάποιος να το φτιάξει?

kapetang 30-01-12 15:31

Καλησπέρα

Δημήτρη, πιστεύω ότι το παρακάτω ερώτημα θα σου λύση το πρόβλημα.

Κώδικας:

SELECT table1.*
FROM table1
WHERE (((table1.id) In (Select Top 3 ID From table1 as P Where table1.fDate=P.fDate Order By P.ID DESC)))
ORDER BY table1.fdate, table1.id DESC;

Αφού το αντιγράψεις (σχεδίαση ερωτημάτων, προβολή SQL, επικόλληση) και το ελέγξεις ενημέρωσε το φόρουμ αν σε καλύπτει.

Φιλικά/Γιώργος

jimrenoir 30-01-12 19:30

top3
 
Με καλύπη απολύτως ευχαριστώ Γιώργο.

jimrenoir 30-01-12 20:53

top3
 
Κάτι που για μένα είναι πολύ δύσκολο.Αν γίνεται να επιλέγω πόσα θέλω απο κάθε ημέρα.Δηλαδή να προστεθεί στο ερώτημα κάτι σαν [δώσε πόσα παιχνίδια θέλεις για κάθε ημέρα]
Προσπάθησα να το φτιάξω αλλά τζίφος.

kapetang 31-01-12 00:11

1 Συνημμένο(α)
Καλησπέρα/Καλημέρα

Δημήτρη, αυτό που ζητάς απαιτεί η τιμή του TOP στο ένθετο ερώτημα να ορίζεται ως παράμετρος (πχ [Δώσε τον αριθμό των παιχνιδιών]).

Στο σημείο αυτό όμως η access δεν επιτρέπει παράμετρο.

Έτσι σκέφτηκα το ερώτημα να δημιουργείται με κώδικα.

Στη φόρμα Form1, αν συμπληρώσουμε τον αριθμό των παιχνιδιών και πατήσουμε το κουμπί, θα δημιουργηθεί και θα ανοίξει το κατάλληλο ερώτημα.

Αυτό γίνεται με τον ακόλουθο κώδικα που πρόσθεσα στη φόρμα.
Κώδικας:

rivate Sub cmdOpenQry_Click()
    Dim strSQL As String, qdf As DAO.QueryDef

    If IsNumeric(Me.txtNum) Then
        strSQL = "SELECT table1.* FROM table1 WHERE (((table1.id) In (Select Top " & _
        Int(Me.txtNum) & " ID From table1 as P Where table1.fDate=P.fDate Order By P.ID DESC)))" & _
        " ORDER BY table1.fdate, table1.id DESC;"
        With CurrentDb
            On Error Resume Next
            DoCmd.Close acQuery, "ShowTopXperDay", acSaveNo
            .QueryDefs.Delete "ShowTopXperDay"
            On Error GoTo 0
            Set qdf = .CreateQueryDef("ShowTopXperDay", strSQL)
        End With
        DoCmd.OpenQuery qdf.Name
    End If

End Sub

Φιλικά/Γιώργος


Η ώρα είναι 08:48.

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


Search Engine Optimization by vBSEO 3.3.2