Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Φόρμα ημερολογίου (τύπου Outlook - scheduler) (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/643-forma-imerologioy-tipoy-outlook-scheduler.html)

schizo 26-06-10 06:01

Φόρμα ημερολογίου (τύπου Outlook - scheduler)
 
1 Συνημμένο(α)
Γεια σας.
Μιας και, όπως αναφέρει και ο υπότιτλος του πίνακα, "Εδώ δεν υπάρχουν όρια" παρακαλώ για τις προτάσεις σας στα παρακάτω:
Προσπαθώ να φτιάξω ένα σύστημα διαχείρισης ραντεβού. Είναι σημαντικό να έχω πλήρη εικόνα των ραντεβού της εβδομάδας καθώς και τις διαθέσιμες ώρες, κάτι δηλαδή σαν την προβολή εβδομάδας στο ημερολόγιο του Outlook. Προσπάθησα να βρω έτοιμα controls αλλά δεν κατάφερα και πολλά πράγματα (αν φυσικά ξέρετε κάτι καλό -από προσωπική εμπειρία- θα σας ήμουν υπόχρεος). Οφείλω να ομολογήσω ότι δεν μπήκα στη διαδικασία να αγοράσω κάποιο commercial control (που υποθέτω ότι υπάρχει αν και δεν το έψαξα) μιας και το κάνω μόνο για διασκέδαση.
Έφτιαξα λοιπόν εξ' αρχής κάτι, το οποίο "δείχνει" να δουλεύει, είναι όμως σαφώς αργό και σίγουρα κακοφτιαγμένο. Υποθέτω πως υπάρχει κάποιος πιο αποδοτικός τρόπος παρουσίασης (π.χ. δεν ξέρω αν υπάρχει κάτι σαν array of controls ώστε να έχω μια μοναδική function και να περνάω με παραμέτρους στήλη και γραμμή -ημέρα και ώρα-) αλλά δεν ξέρω πώς να φτιάξω κάτι τέτοιο. Ένα μικρό δείγμα για το πώς να το δημιουργήσω θα ήταν αρκετό -και υπέροχο-. Προς το παρόν χρησιμοποιώ τα tags των πλαισίων κειμένου (για το κάθε ένα ξεχωριστά).
Έχω σκοπό όταν κάνω διπλό κλικ πάνω σε κάποιο κελί να ανοίγει η φόρμα frmRdv για επεξεργασία ή για προσθήκη. Έχω ξεκινήσει κάτι δοκιμαστικό στο πρώτο κελί πάνω αριστερά (αν και ο κώδικας είναι σε εμβυικό στάδιο). Και εδώ θα ήταν χρήσιμη η λογική του πίνακα ώστε να κάνω πράξεις με τις συντεταγμένες από μία κεντρική ρουτίνα.
Επόμενο θέμα είναι η διάρκεια του ραντεβού. Η κύρια σκέψη μου εδώ είναι να αλλάζω αυτόματα το ύψος του πλαισίου που έχει ραντεβού έτσι ώστε να επικαλύπτει τα από κάτω του εφ' όσον χρειάζεται. Καμμιά καλύτερη ιδέα;
Ευχαριστώ (εκ των προτέρων) για το χρόνο, την υπομονή και τις πολύτιμες ιδέες/απόψεις σας.

Tasos 26-06-10 12:37

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

Αγαπητέ φίλε/φίλη (δεν ξέρω το όνομα σου) ,

θέλω στο σημείο αυτό να σου πω το ταπεινό μου μπράβο στην προσπάθεια που κάνεις
πάνω στην Access αλλά και για την ενεργή συμμετοχή σου στο φόρουμ!

Ας ξεκινήσουμε λοιπόν

Για να ελέγξεις τα συμβάντα των 168 TextBox της φόρμας σου θα χρειαστείς ένα
Class Module (Insert > Class Module) με το όνομα: clsTextBoxes που θα περιέχει τον παρακάτω κώδικα:
Κώδικας:

Option Compare Database
Option Explicit

Private WithEvents AccTextBox As Access.TextBox

Public Property Set TheTextBox(ByVal TheTextBox As Access.TextBox)
    Set AccTextBox = TheTextBox
    AccTextBox.OnDblClick = "[Event Procedure]"
    'AccTextBox.AfterUpdate = "[Event Procedure]"
    'και όποιο άλλο συμβάν χρειαστείς

End Property

Public Property Get TheTextBox() As Access.TextBox
    Set TheTextBox = AccTextBox
End Property

'Private Sub AccTextBox_AfterUpdate()
'    'Ο κώδικας σου
'End Sub


Private Sub AccTextBox_DblClick(Cancel As Integer)
Cancel = True
DoCmd.OpenForm FormName:="frmRdv", WindowMode:=acDialog ', OpenArgs:= πχ. AccTextBox.Tag...
'Προσάρμοσε το έτσι που να ανοίγει η φόρμα με την επιθυμητή εγγραφή.

End Sub

Κατόπιν, στο Module1 ή σε κάποιο άλλο κοινό Module πέρασε μια public μεταβλητή με το όνομα "frm"

δηλ.:
Κώδικας:

Option Compare Database
Option Explicit
Public frm As Access.Form

' κώδικας ....................
'..................................

Στην κορυφή του κώδικα της φόρμας"frmPlan", δήλωσε μια μεταβλητή πίνακα (Array)
που θα αναφέρεται στο Class Module "clsTextBoxes" όπως φαίνεται παρακάτω:
Κώδικας:

Option Compare Database
Option Explicit
Dim TextBoxes(0 To 168) As New clsTextBoxes

και στο OnLoad() της φόρμας:

Κώδικας:

Private Sub Form_Load()
    Dim i%, ctl As Access.Control
    Set frm = Me.Form
    For Each ctl In Me.Section(0).Controls
        If TypeOf ctl Is Access.TextBox Then
            If ctl.Tag <> vbNullString Then
                Set TextBoxes(i).TheTextBox = ctl
                i = i + 1
            End If
        End If
    Next
    Call FillWeeklyPlan(Me)
End Sub

Αφου κάνεις τα παραπάνω, θα μπορείς με διπλό κλικ σε οποιοδήποτε πλαίσιο κείμενου στη λεπτομέρεια της φόρμας "frmPlan" να ανοίγεις τη φόρμα "frmRDV"

Ξεκίνα μ αυτά και φυσικά αν χρειαστείς κάτι εδώ είμαστε




Φιλικά

Τάσος

schizo 27-06-10 17:41

Ευχαριστώ. Μου λύνεις τα χέρια σε πολλά πράγματα. Μόλις φτιάξω κάτι καλύτερο θα το ανεβάσω.

Chris 27-06-10 20:03

Καλησπέρα φίλε/φιλή (δεν ξέρουμε και το όνομα σου)
Καλό θα ήταν να ξέρουμε σε ποιον απευθυνόμαστε.
Eίναι τακτική και ένας από τους κανόνες του φόρουμ, να γράφουμε το όνομα μας.
Θα σε παρακαλούσα λοιπόν να συμπληρώσεις το πεδίο όνομα προσφώνησης στο User Profile. Aπ΄ ότι θα είδες όλοι μας γράφουμε το όνομα μας, για να μπορούμε να μιλάμε με αυτά και όχι με τα username (προσωπικά θα δεις ότι γράφω όνομα & επίθετο χωρίς να έχω κανένα απολύτως πρόβλημα).


Η ώρα είναι 11:44.

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


Search Engine Optimization by vBSEO 3.3.2