
15-07-20, 09:33
|
 | Διαχειριστής Όνομα: Τάσος Φιλοξενιδης Έκδοση λογισμικού Office: Ms-Office 365 Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική | | Εγγραφή: 21-10-2009
Μηνύματα: 2.035
| |
Καλημέρα! Στο παράδειγμα υπάρχει ήδη κώδικας VBA που κάνει ακριβώς αυτή τη δουλειά δηλαδή προσθέτει τόσες κενές γραμμές στον πίνακα temp ώστε να είναι στο σύνολο 14 ανά σελίδα στην έκθεση. Κώδικας: Option Compare Database
Option Explicit
Private Const AllowedRecs = 14
Sub CreateReport()
Dim ModX As Integer
Dim i As Integer
Dim RecCount As Long
Dim CostPos As Long
Dim db As DAO.Database
Dim rsBase As DAO.Recordset
Set db = CurrentDb
db.Execute "DELETE * FROM temp" ', dbFailOnError
' Εδώ μπορούν να δοθούν περισσότερα κριτήρια πχ. ημερομηνία
' ώστε να εισαχθούν μόνο οι εγγραφές που πραγματικά πρέπει να εκτυπωθούν.
db.Execute "INSERT INTO temp SELECT ΤΙΜΟΛΟΓΙΑ1.* FROM ΤΙΜΟΛΟΓΙΑ1" ' WHERE ....
Set rsBase = db.OpenRecordset("SELECT DISTINCT ΤΙΜΟΛΟΓΙΑ1.[ΘΕΣΗ ΚΟΣΤΟΥΣ]FROM ΤΙΜΟΛΟΓΙΑ1")
If rsBase.RecordCount Then
While Not rsBase.EOF
CostPos = rsBase![ΘΕΣΗ ΚΟΣΤΟΥΣ]
RecCount = DCount("*", "temp", "[ΘΕΣΗ ΚΟΣΤΟΥΣ] = " & CostPos)
ModX = AllowedRecs - (RecCount Mod AllowedRecs)
If ModX <> AllowedRecs Then
For i = 1 To ModX
db.Execute "INSERT INTO temp ( [ΘΕΣΗ ΚΟΣΤΟΥΣ] ) Values (" & CostPos & ")"
Next
End If
rsBase.MoveNext
Wend
End If
rsBase.Close
Set rsBase = Nothing
Set db = Nothing
End Sub
Θα χρειαστεί λοιπόν να τρέχεις τον κώδικα με ένα κουμπί για να φτάνεις στο ζητούμενο.
Ίσως χρειαστεί να τροποποιηθεί ο κώδικας ώστε να φορτώνονται μόνο τα δεδομένα προς εκτύπωση που θα έχεις ορίσει από μια φόρμα χρησιμοποιώντας πεδία Ημερομηνία από - έως ή κάποιο άλλο είδος φιλτραρίσματος.
Αυτή είναι και η μοναδική λύση.
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών
Τελευταία επεξεργασία από το χρήστη Tasos : 15-07-20 στις 21:10.
|