![]() |
Προσάρτηση σε Πίνακα 1 Συνημμένο(α) Καλησπέρα σε όλη την παρέα, προσπαθώ να φτιάξω μία βάση παρακολούθησης εργασιών. Έχω λοιπόν τον πελάτη, ο οποίος μας αναθέτει ένα έργο. Μέχρι εκεί καλώς. Το κάθε ένα όμως από τα έργα έχει τουλάχιστον 50 εργασίες για την ολοκλήρωση του και θέλω να αποφύγω την καταγραφή ξανά και ξανά των εργασιών αυτών. Καμία ιδέα για το πώς θα καταφέρω να ενώσω και τους 3 πίνακες????? Ευχαριστώ εκ των προτέρων, Μάρω |
1 Συνημμένο(α) Μάρω ρίξε μια ματιά στο συννημένο |
Γιάννη καλησπέρα, ευχαριστώ για την άμεση απάντηση. Αυτό που με παιδεύει είναι πιο πολύπλοκο. Αν πρόσεξες το κάθε έργο έχει τα δικά του βήματα εργασιών. Το ΑΕΠΟ 66 βήματα και το ΠΠΔ 33 βήματα. Αυτό που θα ήθελα να ορίζω είναι ποιο έργο θέλει ο πελάτης πχ ΑΕΠΟ και να μου εμφανίζει από κάτω τα 66 βήματα του ΑΕΠΟ και μόνο, στα οποία θα σημειώνω την πρόοδο και τις σημειώσεις μου σε κάθε βήμα. Κάθε ιδέα θεμιτή. Ευχαριστώ, Μάρω |
Απλό...θα έχεις στην καρτέλα πελάτη 1 Combobox και θα επιλέγεις ΑΕΠΠΟ - ΠΠΔ Οπότε η υποφόρμα θα φιλτράρεται με βάση αυτό (όλα τα βήματα θα έχουν επιπλέον σήμανση που ανήκουν) |
Στο παράδειγμα που έχω ανεβάσει αυτό έχω κάνει αλλά δεν λειτουργεί. Ότι εργασία βάζω στον έναν πελάτη μπαίνει και στον άλλον αυτόματα. Μπορείς να ρίξεις μια ματιά στο αρχείο που έχω ανεβάσει και να μου πεις που κάνω λάθος??? Ευχαριστώ, Μάρω |
Στο δικό μου αν το δοκίμασες κάθε εγγραφή πελάτη συνοδεύεται απο μοναδικές εγγραφές εργασιών (είναι συνδεδεμένες). Δες το ξανά και τα ξανασυζητάμε. |
1 Συνημμένο(α) Καλημέρα, Δεν έχω καταφέρει να σε κάνω να καταλάβεις τι θέλω και σίγουρα δεν είναι αυτό που μου προτείνεις. Σου παραθέτω ξανά το μήνυμα μου Παράθεση:
Να σημειώσω ότι πρόκειται για 15 έργα με περίπου 50 εργασίες το καθένα άρα 750 τουλάχιστον εγγραφές. Η κάθε μία από αυτές τις εγγραφές θα πρέπει να είναι ξεχωριστή για τον κάθε πελάτη αφού δίπλα από τις εργασίες θέλω και τις αντίστοιχες σημειώσεις του. Ιδανικά, βλέπε την φόρμα μου πελάτες σε μια υποφόρμα βάζω το έργο πχ ΑΕΠΟ σε άλλη υποφόρμα εμφανίζονται τα οι 66 εργασίες που αφορούν μόνο το ΑΕΠΟ με δυνατότητα σημειώσεων σε κάθε εργασία. Άρα λοιπόν η γραμμή μου ίσως θα πρέπει να είναι έτσι (ανεβάζω συνημμένο) Όλες οι ιδέες ευπρόσδεκτες Ευχαριστώ, Μάρω |
Για να το ξεκαθαρίσουμε. Τα βήματα που θα γίνουν είναι στάνταρτ για κάθε περίπτωση..δλδ αν ο πελάτης θα είναι ΑΕΠΟ π.χ 50 βήματα,εάν είναι ΠΠΔ θα είναι 33. Εάν είναι έτσι πολύ απλά όταν επιλεγείς ότι ο πελάτης Α είναι ΑΕΠΟ θα δημιουργείς 50 εγγραφές με ξένο κλειδί τον ΚΔ του πελάτη και εάν ΠΠΔ θα δημιουργεις παρόμοια 33 εγγραφές. Στην καρτέλα του πελάτη θα υπάρχει σαν υποφορμα μια continuous subform ,θα κάνεις link και αυτό ειναι όλο |
Σημείωση : ξαναδιαβάζω αν είναι 750 εγγραφές θα χρειαστείς να έχεις 2 υποφορμα η μία με 15 εγγραφές και η άλλη με 50. Και οι 2 continuous τις οποίες θα συνδέεις με fake master field |
1 Συνημμένο(α) Καλησπέρα, ανεβάζω την βάση με το επιθυμητό αποτέλεσμα το οποίο προκύπτει μετά από 1 ερώτημα προσάρτησης και 1 ερώτημα ενημέρωσης. Φοβάμαι βέβαια ότι έχω πάει μέσω "Τρικάλων" :dft011: . Οποιαδήποτε διόρθωση θεμιτή. Ευχαριστώ, Μάρω |
Καλημέρα σε όλους, Παράθεση:
Ευχαριστώ, Μάρω |
1 Συνημμένο(α) Υποθέτω ότι ψάχνεις για κάτι σαν και αυτό Σε κάθε ΕΡΓΟ του κάθε πελάτη δημιουργούνται βήματα αποκλειστικά για το κάθε έργο Απο εκεί και πέρα το παραμετροποιείς όπως θες. |
Καλησπέρα, Επιτέλους καταφέραμε να "συννενοηθούμε". :friends: Αν και το είδα λίγο βιαστικά, φαίνεται τέλειο! Ελπίζω να καταφέρω να το προσαρμόσω στην βάση μου. Σε ευχαριστώ για άλλη μία φορά για τον χρόνο σου. Φιλικά, Μάρω |
Καλησπέρα, επανέρχομαι .... άλλωστε έχω δηλώσει ότι είμαι σε νηπιακή φάση ακόμη :021::021::021: πώς μπορώ να προσαρμόσω τον κώδικα σου Γιάννη Private Sub TaskID_AfterUpdate() Dim strSQL As String strSQL = vbNullString strSQL = "INSERT INTO ClientTaskSteps ( ClientTaskID, TaskID )" _ & "SELECT " & Me.ID & " as ClientTaskID,[1 ΕΡΓΟ ΛΙΣΤΑ ΕΝΕΡΓΕΙΩΝ].idaepo " _ & " FROM [1 ΕΡΓΟ ΛΙΣΤΑ ΕΝΕΡΓΕΙΩΝ] " _ & " WHERE ((([1 ΕΡΓΟ ΛΙΣΤΑ ΕΝΕΡΓΕΙΩΝ].IdErgon)=" & Me.TaskID & "));" DoCmd.RunSQL (strSQL) End Sub ώστε να μου εμφανίζει στον πίνακα ClientTaskSteps και τον ClientID για να μου είναι εύκολο να βλέπω τα βήματα εργασιών με βάση τον πελάτη. Ευχαριστώ, Μάρω |
Κανονικά δεν το χρειάζεται καθώς παραβιάζεις τους κανόνες της κανονικοποίησης. |
Παράθεση:
Dim strSQL As String strSQL = vbNullString strSQL = "INSERT INTO ClientTaskSteps ( ClientTaskID, TaskID,idaep,Project,ClientID )" _ & "SELECT " & Me.ID & " as ClientTaskID,[1 ΕΡΓΟ ΛΙΣΤΑ ΕΝΕΡΓΕΙΩΝ].idaepo,[1 ΕΡΓΟ ΛΙΣΤΑ ΕΝΕΡΓΕΙΩΝ].idaep,[1 ΕΡΓΟ ΛΙΣΤΑ ΕΝΕΡΓΕΙΩΝ].Project,[ClientTasks].ClientID " _ & " FROM [1 ΕΡΓΟ ΛΙΣΤΑ ΕΝΕΡΓΕΙΩΝ] " _ & " WHERE ((([1 ΕΡΓΟ ΛΙΣΤΑ ΕΝΕΡΓΕΙΩΝ].IdErgon)=" & Me.TaskID & "));" DoCmd.RunSQL (strSQL) End Sub Το έκανα έτσι και δουλεύει ... είναι σωστό όμως???? Ευχαριστώ, Μάρω |
"Σωστό" ας πούμε ότι είναι αλλά είναι "πλεονεξία" Το ClientID είναι συνδεδεμένο με το το ClientTaskID οπότε απλώς δεν χρειάζεται. Φυσικά θα δουλέψει αλλά ουσιαστικά "παρακάμπτεις" την φιλοσοφία ότι το έργο σου είναι "κλειδωμένο" στον Πελάτη και τα βήματα είναι κλειδωμένα στο έργο Το ClientID Μπορείς να το πάρεις απο Query TaskStep <--> ClientTask <--> Client Δες πως έχω κάνει το Linking των Subforms |
Να 'σαι καλά :handshake: |
1 Συνημμένο(α) Καλησπέρα, μία τελευταία ερώτηση !!! Έστω ότι στην φόρμα ClientTasks έχω προσθέσει το πεδίο StepTransfer γίνεται μετά το μήνυμα της προσάρτησης με το ΝΑΙ και αφού μου μεταφέρει τα βήματα στην ClientTaskSteps το StepTransfer να παίρνει την τιμή ok αλλιώς να παραμένει κενό??? Παράθεση:
Ευχαριστώ, Μάρω |
Καντο Boolean .. |
run time error type mismatch Τι κάνω λάθος??? Private Sub CmdTransferTaskSteps_Click() Dim intCount As Integer intCount = DCount("[TaskID]", "[1QryUpdateProjectsCount]") If Me.StepTransfer = "ok" Then MsgBox "Τα βήματα εργασίων έχουν ήδη προστεθεί στον πίνακα!", vbOKOnly, "Σφάλμα" Exit Sub Else Dim strSQL As Boolean strSQL = True Beep Dim LResponse As Integer LResponse = MsgBox("Πρόκειται να προσθέσετε " & intCount & " στοιχεία στον πίνακα!", vbOKCancel, "Προσάρτηση") If LResponse = vbOK Then strSQL = "INSERT INTO TblTaskStepsByClient ( ClientTaskID, TaskID,NoProject,Project,ClientID )" _ & "SELECT " & Me.ID & " as ClientTaskID,[TblTasksSteps].IdTaskStep,[TblTasksSteps].NoProject,[TblTasksSteps].Project, clientid" _ & " FROM [TblTasksSteps] " _ & " WHERE ((([TblTasksSteps].TaskID)=" & Me.TaskID & "));" DoCmd.RunSQL (strSQL) Me.StepTransfer = "ok" Else 'Exit Sub End If End If CmdTransferTaskSteps_Exit: Exit Sub CmdTransferTaskSteps_Err: MsgBox Error$ Resume CmdTransferTaskSteps_Exit End Sub |
Δεν στο εξήγησα καλά To "Boolean" πήγαινε στον πίνακα και στην σχεδίαση του..όπου απλώς πρέπει να προσθέσεις το πεδίο (StepTransfer) ως Boolean. Απο εκεί και πέρα το StrSQL είναι και θα είναι πάντα String. Αρχίζεις και προσθέτεις πλεονάζουσα πεδία...αν και είναι 1 σενάριο που δουλεύει σε επίπεδο δομής δεν είναι σωστό. https://docs.microsoft.com/en-us/off...on-description |
Δεν το κατάλαβα ποτέ. Είπαμε είμαι σε νηπιακή φάση όσον αφορά την vba. Σε ευχαριστώ όπως και να έχει για τον χρόνο σου. Φιλικά, |
| Η ώρα είναι 17:15. |
Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.