Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   [ Φόρμες ] Επιλογή αναφοράς ανάλογα τιμής πεδίου (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/591-epilogi-anaforas-analoga-timis-pedioy.html)

serviceman 14-05-10 08:40

Επιλογή αναφοράς ανάλογα τιμής πεδίου
 
1 Συνημμένο(α)
Καλημέρα,

συγχαρητήρια για το φορουμ .

Εργάζομαι σε μια δημόσια υπηρεσία και στην προσπάθεια να αυτοματοποιήσω μια διαδικασία έκανα μια μικρή βασούλα με έναν πίνακα και 2 αναφορές.
Η πρώτη αναφορά εμφανίζετα πατώντας το κουμπί 3 βεβαίωσηΑ ενώ η δεύτερη πατώντας το κουμπί 4 βεβαίωσηΒ .

Θα θελα να αυτοματοποιήσω την διαδικασία μέσω ελέγχου του πεδίου ποσό2 με την ένδειξη 2.
Δηλαδή εάν στο πεδίο ποσό 2 υπάρχει ποσό τότε να τρέχει με το πάτημα κουμπιού η δευτερη αναφορά εάν ειναι μηδέν με το πάτημα του ίδιου κουμπιού να τρέχει η πρώτη αναφορά.

Επισυνάπτω εικόνα, τα στοιχεία είναι ψευτικα.

Με εκτίμηση

Σταύρος

Meteora 14-05-10 12:00

Καλημέρα.

Σταύρο, μπορείς να έχεις μια λύση μέσα απο :
Κώδικας:


If isNull([πεδιοχ]) or [πεδιοχ]= "" then
  εκτύπωση 1ης αναφοράς
else
  εκτύπωση 2ης αναφοράς
 end if

...και δεν είναι η μόνη !

ΥΣ Θα κάνεις χρήση ενός κουμπιού πλέον. (αν το πεδίο ειναι κενό τότε θα εκτυπώνεται η 1η αναφορά,...)

με εκτίμηση / Νίκος Δ.

serviceman 14-05-10 12:18

Ευχαριστώ πολύ Νίκο δουλευει αψογα η λύση σου συγκεκριμμένα ο κώδικας που χρησιμοποίησα:

If IsNull(Me.poso2) Then

stDocName = "V1"
DoCmd.OpenReport stDocName, acPreview

Else

stDocName = "V2"
DoCmd.OpenReport stDocName, acPreview

End If

Meteora 15-05-10 18:06

Καλησπέρα !
Σταύρο -για δοκιμή- διέγραψε το περιεχόμενο στο πεδίο [poso2] και τρέξε τον κώδικα που έγραψες. Πες μας ποια αναφορά εμφανίζεται...
Φιλικά / Νίκος Δ

Υστερολόγιο : Μάλλον θα εμφανιστεί η V2 ! ...

serviceman 16-05-10 11:09

1 Συνημμένο(α)
Παράθεση:

Αρχική Δημοσίευση από Meteora (Μήνυμα 2715)
Καλησπέρα !
Σταύρο -για δοκιμή- διέγραψε το περιεχόμενο στο πεδίο [poso2] και τρέξε τον κώδικα που έγραψες. Πες μας ποια αναφορά εμφανίζεται...
Φιλικά / Νίκος Δ

Υστερολόγιο : Μάλλον θα εμφανιστεί η V2 ! ...

Καλημέρα Νίκο,

το μόνο πρόβλημα είναι αν βάλεις 0 στο ποσό2 τότε βγαζει την V2 αν δεν έχει τίποτα το πεδίο εμφανίζει την V1.

Στέλνω και την βασούλα!

Meteora 16-05-10 15:51

Καλημέρα...
Πρόσθεσε στην εντολή σου το τμήμα που εμφανίζεται έντονα 'μαυρισμένο', για να καλύψεις την περίπτωση του μηδέν...
Κώδικας:


If IsNull(Me.poso2) or me.poso2 = 0 Then

Φιλικά / Νίκος Δ.

serviceman 16-05-10 18:09

Παράθεση:

Αρχική Δημοσίευση από Meteora (Μήνυμα 2721)
Καλημέρα...
Πρόσθεσε στην εντολή σου το τμήμα που εμφανίζεται έντονα 'μαυρισμένο', για να καλύψεις την περίπτωση του μηδέν...
Κώδικας:


If IsNull(Me.poso2) or me.poso2 = 0 Then

Φιλικά / Νίκος Δ.

Τώρα δείχνει άψογο.

Υπάρχει δυνατότητα να εκτυπώνω στην κεφαλίδα της φόρμας τα στοιχεία (επωνυμία,διευθυνση τηλέφωνο ) από πίνακα, μια εγγραφή από ένα πίνακα στοιχεία υπηρεσίας, έτσι ώστε όταν αλλάξουν τα στοιχεία να αλλάζεις την εγγραφή και οχι την έκθεση;

Με εκτίμηση

Σταύρος

Meteora 17-05-10 12:00

Καλημέρα στην κοινότητα !
Αγαπητέ Σταύρο παρουσίασε με παράδειγμα τι θες να συμβεί, ώστε να γίνει σαφέστατο ο,τι επιδιώκεις να πετύχεις. Ήδη έχεις ανεβάσει δυο πίνακες που περιέχουν 2-3 record, αλλά δεν καταλαβαίνω τι εκφράζουν. Γράψε λοιπόν μια μικρή "ιστορία" του τι θες, πως σκέφτεσαι να επιλυθεί και έτσι τα μέλη του Forum να μπορέσουν να σε βοηθήσουν. Γράφεις για παράδειγμα
Παράθεση:

Υπάρχει δυνατότητα να εκτυπώνω στην κεφαλίδα...
αυτό παραπέμπει σε σκέψεις 'εκτύπωση φόρμας' αλλά και 'παρουσίασης επικεφαλίδας σε φόρμα'...
Διαβάζοντας παρακάτω, πάλι δεν ειναι - σε μένα - κατανοητό τι θες και δεν μπορώ να απαντήσω...
Φιλικά / Νίκος Δ.

serviceman 17-05-10 12:29

1 Συνημμένο(α)
Καλημέρα σε όλους,

έχω 2 πίνακες pinakas1, pinakas2 και 2 αναφορές V1, V2.
Αν έχω ποσό2 διαφορετικό από 0 εκτυπώνει έκθεση2 αλλιώς έκθεση1.
Ολα καλά μέχρι εδώ με την βοήθεια του Νίκου (Meteora).

Το νέο στοιχείο είναι ότι στον πίνακα2 έχω τα δεδομένα (όνομα ταμείου, διευθυνση, τηλέφωνο) του ταμείου. Θέλω στις αναφορές V1 και V2 να εμφανίζονται τα δεδομένα της μοναδικής εγγραφής του πίνακα2 στην επικεφαλίδα, έτσι ώστε όταν αλλάζουν τα στοιχεία να αλλάζω την εγγραφή και αυτή να εμφανίζετε αλλαγμένη στις εκθέσεις.

Ανεβάζω υλικό.

Με εκτίμηση
Σταύρος

Υ.Γ
Ευχαριστώ εκ των προτέρων

Meteora 17-05-10 18:28

1 Συνημμένο(α)
Καλησπέρα και απο εδώ ...
Σταύρο, ρίξε μια ματιά στο επισυναπτόμενο αρχείο και τα ...ξαναλέμε !

Αξίζει τον κόπο να δείτε την διαδικασία με την οποία περνάς παραμέτρους σε έκθεση :

ΒΗΜΑ 1ο
Φτιάχνουμε μια module και γράφουμε τα παρακάτω

Κώδικας:


Option Compare Database
Option Explicit
Public Titlos As String         

ΒΗΜΑ 2ο
Στην ίδια module,
Κώδικας:

Public Function FTitlos()
With CurrentDb.OpenRecordset("pinakas2", 4)      'το 4 αφορά κατάσταση ΜΟΝΟ για διάβασμα
        .MoveFirst
        FTitlos = !onomatameiou & "  " & !dieftinsi &"  "& !tilephono
End With
End Function

Αυτή η συνάρτηση βρίσκει το 1ο Record ενός πίνακα και διαβάζει τα περιεχόμενα τριών πεδίων, τα οποία και ενώνει. Θα μπορούσαμε σε αυτό το στάδιο να γράψουμε FTitlos= "Καλαμπάκα" ή ότι άλλο και να περαστεί έτσι όποια παράμετρος θέλουμε στην έκθεση.

ΒΗΜΑ 3ο Σε ένα πλαίσιο κειμένου κάπου στο Report, υπάρχει ως ‘Προέλευση στοιχείου ελέγχου’ το:
Κώδικας:

=FTitlos()
Αυτό ήταν !

Δείτε το στο επισυναπτόμενο αρχείο το οποίο αντικατέστησα...διότι δεν είχε καμιά λογική αυτό που είχα πριν. Τουλάχιστον τώρα, έστω και αν το περιεχόμενο δεν δώσει λύση στον φίλο μας Σταύρο, είναι βέβαιο οτι θα βοηθήσει άλλα μέλη & επισκέπτες
Φιλικά / Νίκος Δ.

serviceman 17-05-10 20:36

Νίκο thank U!

Η τελευταία λύση που έδωσες είναι perfect!!

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

Θα μελετήσω τον κώδικα VBA.


Είμαι σε ένα ταμείο ΝΠΔΔ του υπουργείου εργασίας εδώ και 2 χρόνια και προσπαθώ να αυτοματοποιήσω κάποια χαρτούρα. Ενα λιθαράκι κάθε μέρα.

Ευχαριστώ για την βοήθεια.

nisgia 21-05-10 16:44

1 Συνημμένο(α)
Παράθεση:

Αρχική Δημοσίευση από serviceman (Μήνυμα 2743)
Είμαι σε ένα ταμείο ΝΠΔΔ του υπουργείου εργασίας εδώ και 2 χρόνια και προσπαθώ να αυτοματοποιήσω κάποια χαρτούρα. Ενα λιθαράκι κάθε μέρα.

Φίλε Σταύρο, καλησπέρα!

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

Ίσως αρχικά πιο πολύ για τσιμεντόλιθος θα σου φανεί παρά για λιθαράκι
όμως για οποιαδήποτε απορία σου δημιουργηθεί κατά την εξέτασή του
θα είμαι διαθέσιμος ώστε να τη λύσω.

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

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

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

Ελπίζω να σε βοηθήσει.
Γιάννης

Tasos 21-05-10 18:03

Καλησπέρα!
Γιάννη μου, στην εγγραφή: Ταμείο …λαμόγιων! το ποσό αν και παραδειγματικό μου φάνηκε πολύ μικρό!

Κατά τ άλλα, συγχαρητήρια για την όμορφη και καθαρή δουλειά! (δεν περίμενα και κάτι άλλο από σένα...)!!

Σε υπολογιστές με μορφοποίηση (Separators) διαφορετική από ".../.../...." , η γραμμή:

strWhere = strWhere & "PaymentDate= #" & Format(dtmDate, "mm/dd/yyyy") & "#"
θα δημιουργήσει πρόβλημα.

Μπορούμε να χρησιμοποιήσουμε: "mm\/dd\/yyyy" ή "mm-dd-yyyy" για να καλύψουμε κι αυτή την περίπτωση.

Τα λέμε...

Τάσος

Dangel82 21-05-10 20:25

Καλησπέρα και απο εμένα...

Θα συμφωνήσω με τον Τάσο κι εγώ... 20 μόνο??? βάλε κάτι ακόμαααααααα!!!!
Να συμπληρώσω σχετικά με τις ημερομηνίες.

Μου είχε παρουσιαστεί (Access 2003) η περίπτωση να μην μπορώ να κάνω σωστή αναζήτηση βάση ημερομηνίας λόγω άλλου format ημερομηνίας. Έλυσα το πρόβλημά μου εισάγοντας την παρακάτω


Κώδικας:

Function SQLDate(vDate As Variant) As String
        If IsDate(vDate) Then
            SQLDate = Format$(vDate, "mm\/dd\/yyyy")
        End If
    End Function

Σημείωση: είναι mm\ /dd\ / yyy όχι mmVddVyyy απλά με φαίνεται μέσα ως V και όχι ως / ή \...

Μου είχε λύσει τεράστιο πρόβλημα στο παρελθόν!

Φιλικά Άγγελος

serviceman 22-05-10 10:38

Καλημέρα σε όλους,

ευχαριστώ για την βοήθεια όλους τους φίλους του φόρουμ η ανταπόκριση είναι πολύ άμεση. Γιάννη θα μελετήσω το υλικό σου μετά την Δευτέρα γιατί βρίσκομαι στην Θεσσαλονίκη για το Σαββατοκύριακο και ο χρόνος θα αφιερωθεί σε φίλους και οικογένεια.

Καλό Σαββατοκύριακο

Με εκτίμηση

Σταύρος

nisgia 23-05-10 00:07

Καλησπέρα φίλοι μου!

Τάσο, ένα μεγάλο ευχαριστώ για τα καλά σου λόγια και τις παρατηρήσεις!:happy:

Όντως, η τιμές ημερομηνίας μας δημιουργούν πολλά προβλήματα
και αυτό γιατί, προγραμματιστικά, κάνουμε το λάθος και τις αντιμετωπίζουμε
σαν κείμενα και όχι ως σειριακές τιμές που πραγματικά είναι.

Αν δύο ημερομηνίες που έχουν εισαχθεί στο ίδιο περιβάλλον χρήστη, δείχνουν ίδιες,
είναι σίγουρο ότι οι σειριακές τιμές τους θα είναι ίδιες.
Άλλωστε οι αριθμοί λένε πάντα την αλήθεια ενώ τα κείμενα όχι. :ohno:

Οπότε ο πιο σίγουρος τρόπος σύγκρισης δυο ημερομηνιών, είναι να συγκρίνουμε τις τιμές τους.
Συνεπώς, το λάθος που έκανα στην παραπάνω έκφραση, θα πρέπει να διορθωθεί σε:

strWhere = strWhere & "Clng(PaymentDate)= " & CLng(dtmDate)

Νομίζω πως αυτός είναι ο πιο σίγουρος τρόπος σύγκρισης ημερομηνιών (χωρίς ώρα).

Το πιο κουφό όμως που ίσως εντοπίσατε αλλά προφανώς ντρέπεστε να μου πείτε είναι:
Για ποιον λόγο να ελέγχω την ορατότητα ενός άλλου χειριστηρίου
για να αποκρύψω το πεδίο Poso2 και όχι την ορατότητα του ίδιου του πεδίου Poso2;:hammer-smilies-0002
(Ελάτε, πείτε την αλήθεια! Σας έλειψαν λίγο τα σφυροκοπήματά μου ε; :011:)

Οπότε φίλοι μου, η διαδικασία ελέγχου της ορατότητας του πεδίου Poso2 γίνεται:
Κώδικας:

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
    With Me.poso2
        .Visible = Nz(.Value, 0) > 0
    End With
End Sub

(Κάτι μου λέει πως μετά από αυτό, εκτός από τον Γιωρήκα και τον Κωστήκα,
τα ποντιακά ανέκδοτα θα μιλάνε και για το Γιαννήκα.:005:)


Όσο για τα 20δις φίλοι μου, αυτό που φαίνεται είναι πάντα η μισή αλήθεια.
Η άλλη μισή είναι πως αυτό το ποσό αντιστοιχεί μόνο ...στη δόση του Μαΐου!!! :015:


Φίλε Σταύρο, κοίτα να περάσεις εσύ καλά και όλα τα άλλα γίνονται!
Άλλωστε, όπως λέει και ο σοφός λαός: Πρώτα η διασκέδαση και μετά όλα τα άλλα! :respect:

Φιλικά,
...Γιαννήκας!:008:


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

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


Search Engine Optimization by vBSEO 3.3.2