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/5855-prosartisi-se-pinaka.html)

mdragon 13-04-21 20:12

Προσάρτηση σε Πίνακα
 
1 Συνημμένο(α)
Καλησπέρα σε όλη την παρέα,
προσπαθώ να φτιάξω μία βάση παρακολούθησης εργασιών.
Έχω λοιπόν τον πελάτη, ο οποίος μας αναθέτει ένα έργο.
Μέχρι εκεί καλώς.
Το κάθε ένα όμως από τα έργα έχει τουλάχιστον 50 εργασίες για την ολοκλήρωση του και θέλω να αποφύγω την καταγραφή ξανά και ξανά των εργασιών αυτών.
Καμία ιδέα για το πώς θα καταφέρω να ενώσω και τους 3 πίνακες?????




Ευχαριστώ εκ των προτέρων,
Μάρω

tsgiannis 14-04-21 12:32

1 Συνημμένο(α)
Μάρω ρίξε μια ματιά στο συννημένο

mdragon 14-04-21 13:55

Γιάννη καλησπέρα,
ευχαριστώ για την άμεση απάντηση.
Αυτό που με παιδεύει είναι πιο πολύπλοκο.
Αν πρόσεξες το κάθε έργο έχει τα δικά του βήματα εργασιών.
Το ΑΕΠΟ 66 βήματα και το ΠΠΔ 33 βήματα.
Αυτό που θα ήθελα να ορίζω είναι ποιο έργο θέλει ο πελάτης
πχ ΑΕΠΟ και να μου εμφανίζει από κάτω τα 66 βήματα του ΑΕΠΟ και μόνο,
στα οποία θα σημειώνω την πρόοδο και τις σημειώσεις μου σε κάθε βήμα.
Κάθε ιδέα θεμιτή.



Ευχαριστώ,
Μάρω

tsgiannis 14-04-21 21:19

Απλό...θα έχεις στην καρτέλα πελάτη 1 Combobox και θα επιλέγεις ΑΕΠΠΟ - ΠΠΔ
Οπότε η υποφόρμα θα φιλτράρεται με βάση αυτό (όλα τα βήματα θα έχουν επιπλέον σήμανση που ανήκουν)

mdragon 14-04-21 23:17

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



Ευχαριστώ,
Μάρω

tsgiannis 15-04-21 07:44

Στο δικό μου αν το δοκίμασες κάθε εγγραφή πελάτη συνοδεύεται απο μοναδικές εγγραφές εργασιών (είναι συνδεδεμένες).
Δες το ξανά και τα ξανασυζητάμε.

mdragon 15-04-21 11:01

1 Συνημμένο(α)
Καλημέρα,
Δεν έχω καταφέρει να σε κάνω να καταλάβεις τι θέλω και σίγουρα δεν είναι αυτό που μου προτείνεις. Σου παραθέτω ξανά το μήνυμα μου

Παράθεση:

Αρχική Δημοσίευση από mdragon (Μήνυμα 32517)
το κάθε έργο έχει τα δικά του βήματα εργασιών.
Το ΑΕΠΟ 66 βήματα και το ΠΠΔ 33 βήματα.
Αυτό που θα ήθελα να ορίζω είναι ποιο έργο θέλει ο πελάτης
πχ ΑΕΠΟ και να μου εμφανίζει από κάτω τα 66 βήματα του ΑΕΠΟ και μόνο,
στα οποία θα σημειώνω την πρόοδο και τις σημειώσεις μου σε κάθε βήμα.

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

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

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

Άρα λοιπόν η γραμμή μου ίσως θα πρέπει να είναι έτσι
(ανεβάζω συνημμένο)

Όλες οι ιδέες ευπρόσδεκτες



Ευχαριστώ,
Μάρω

tsgiannis 15-04-21 16:59

Για να το ξεκαθαρίσουμε.
Τα βήματα που θα γίνουν είναι στάνταρτ για κάθε περίπτωση..δλδ αν ο πελάτης θα είναι ΑΕΠΟ π.χ 50 βήματα,εάν είναι ΠΠΔ θα είναι 33.
Εάν είναι έτσι πολύ απλά όταν επιλεγείς ότι ο πελάτης Α είναι ΑΕΠΟ θα δημιουργείς 50 εγγραφές με ξένο κλειδί τον ΚΔ του πελάτη και εάν ΠΠΔ θα δημιουργεις παρόμοια 33 εγγραφές.
Στην καρτέλα του πελάτη θα υπάρχει σαν υποφορμα μια continuous subform ,θα κάνεις link και αυτό ειναι όλο

tsgiannis 15-04-21 17:03

Σημείωση : ξαναδιαβάζω αν είναι 750 εγγραφές θα χρειαστείς να έχεις 2 υποφορμα η μία με 15 εγγραφές και η άλλη με 50.
Και οι 2 continuous τις οποίες θα συνδέεις με fake master field

mdragon 16-04-21 00:25

1 Συνημμένο(α)
Καλησπέρα,
ανεβάζω την βάση με το επιθυμητό αποτέλεσμα το οποίο προκύπτει μετά από 1 ερώτημα προσάρτησης και 1 ερώτημα ενημέρωσης.
Φοβάμαι βέβαια ότι έχω πάει μέσω "Τρικάλων" :dft011: .
Οποιαδήποτε διόρθωση θεμιτή.


Ευχαριστώ,
Μάρω

mdragon 16-04-21 10:06

Καλημέρα σε όλους,
Παράθεση:

ανεβάζω την βάση με το επιθυμητό αποτέλεσμα το οποίο προκύπτει μετά από 1 ερώτημα προσάρτησης και 1 ερώτημα ενημέρωσης.
Φοβάμαι βέβαια ότι έχω πάει μέσω "Τρικάλων" .
Οποιαδήποτε διόρθωση θεμιτή.
Αν δεν υπάρχει άλλη λύση μήπως υπάρχει η δυνατότητα το έργο και τον πελάτη να τα βλέπει απευθείας από την φόρμα και να τρέχει τα ερωτήματα προσάρτησης και ενημέρωσης???




Ευχαριστώ,
Μάρω

tsgiannis 16-04-21 12:40

1 Συνημμένο(α)
Υποθέτω ότι ψάχνεις για κάτι σαν και αυτό
Σε κάθε ΕΡΓΟ του κάθε πελάτη δημιουργούνται βήματα αποκλειστικά για το κάθε έργο
Απο εκεί και πέρα το παραμετροποιείς όπως θες.

mdragon 17-04-21 22:51

Καλησπέρα,
Επιτέλους καταφέραμε να "συννενοηθούμε". :friends:
Αν και το είδα λίγο βιαστικά, φαίνεται τέλειο!
Ελπίζω να καταφέρω να το προσαρμόσω στην βάση μου.
Σε ευχαριστώ για άλλη μία φορά για τον χρόνο σου.




Φιλικά,
Μάρω

mdragon 19-04-21 00:19

Καλησπέρα,
επανέρχομαι .... άλλωστε έχω δηλώσει ότι είμαι σε νηπιακή φάση ακόμη :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
για να μου είναι εύκολο να βλέπω τα βήματα εργασιών με βάση τον πελάτη.


Ευχαριστώ,
Μάρω

tsgiannis 19-04-21 07:42

Κανονικά δεν το χρειάζεται καθώς παραβιάζεις τους κανόνες της κανονικοποίησης.

mdragon 19-04-21 16:37

Παράθεση:

Αρχική Δημοσίευση από tsgiannis (Μήνυμα 32550)
Κανονικά δεν το χρειάζεται καθώς παραβιάζεις τους κανόνες της κανονικοποίησης.

Private Sub TaskID_AfterUpdate()
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

Το έκανα έτσι και δουλεύει ... είναι σωστό όμως????


Ευχαριστώ,
Μάρω

tsgiannis 20-04-21 10:03

"Σωστό" ας πούμε ότι είναι αλλά είναι "πλεονεξία"
Το ClientID είναι συνδεδεμένο με το το ClientTaskID οπότε απλώς δεν χρειάζεται.
Φυσικά θα δουλέψει αλλά ουσιαστικά "παρακάμπτεις" την φιλοσοφία ότι το έργο σου είναι "κλειδωμένο" στον Πελάτη και τα βήματα είναι κλειδωμένα στο έργο
Το ClientID Μπορείς να το πάρεις απο Query
TaskStep <--> ClientTask <--> Client
Δες πως έχω κάνει το Linking των Subforms

mdragon 20-04-21 15:14

Να 'σαι καλά
:handshake:

mdragon 20-04-21 16:01

1 Συνημμένο(α)
Καλησπέρα,
μία τελευταία ερώτηση !!!
Έστω ότι στην φόρμα ClientTasks έχω προσθέσει το πεδίο StepTransfer
γίνεται μετά το μήνυμα της προσάρτησης με το ΝΑΙ και αφού μου μεταφέρει τα βήματα στην ClientTaskSteps το StepTransfer να παίρνει την τιμή ok αλλιώς να παραμένει κενό???

Παράθεση:

Αρχική Δημοσίευση από mdragon (Μήνυμα 32548)
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

Επισυνάπτω φώτο



Ευχαριστώ,
Μάρω

tsgiannis 20-04-21 23:26

Καντο Boolean ..

mdragon 21-04-21 01:34

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

tsgiannis 22-04-21 07:33

Δεν στο εξήγησα καλά
To "Boolean" πήγαινε στον πίνακα και στην σχεδίαση του..όπου απλώς πρέπει να προσθέσεις το πεδίο (StepTransfer) ως Boolean.
Απο εκεί και πέρα το StrSQL είναι και θα είναι πάντα String.
Αρχίζεις και προσθέτεις πλεονάζουσα πεδία...αν και είναι 1 σενάριο που δουλεύει σε επίπεδο δομής δεν είναι σωστό.
https://docs.microsoft.com/en-us/off...on-description

mdragon 25-04-21 22:06

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



Φιλικά,


Η ώρα είναι 17:15.

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


Search Engine Optimization by vBSEO 3.3.2