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/1345-problima-me-erotima-prosartisis.html)

alex 05-09-11 10:28

Προβλημα με ερώτημα προσάρτησης
 
1 Συνημμένο(α)
Καλημέρα σε όλους τους φίλους του φορόύμ.

Αντιμετωπίζω πρόβλημα με
το ερώτημα προσάρτησης q_ΕΜΗΜΕΡΩΣΗ_ΙΣΤΟΡΙΚΟΥ_ΚΙΝΗΣ ΕΩΝ_ΠΕΛΑΤΗ_ALL.Αφού ήδη εχω προσαρτήσει ενα πελάτη μία φορά στην επόμενη προσάρτηση με το ίδιο ονομα δεν την δέχεται..Δηλαδή εάν ένας πελάτης έλθει μια φορά τον περνάει στον πίνακα t_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΝ_ΠΕΛΑΤΗ.
Το ίδιο όνομα δεν το δέχεται δεύτερη φορά.Μόνο με νέο πελάτη κάνει προσάρτηση.Τι πρέπει να κάνω ώστε να εμφανίζονται όλες οι προσαρτήσεις ;Το πρόβλημα φαίνεται να είναι σε διπλοεγγραφές.
Εάν γνωρίζει κάποιο μέλος ή ο φίλος Δημήτρης Dimagg που είχε ασχοληθεί και εχει το χρόνο να μου πει τι πρέπει να κάνω.
Ευχαριστώ εκ των προτέρων

Φιλικά/Αλέξανδρος

Tasos 05-09-11 11:20

Καλημέρα Αλέξανδρε!

Προσπαθείς να προσαρτήσεις δεδομένα στον πίνακα t_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΝ_ΠΕΛΑΤΗ όπου συμπεριλαμβάνεται και το πεδίο ID.

Δεν γίνεται το πεδίο ID να πάρει την ίδια τιμή 2 φορές όσο αυτό έχει την ιδιότητα "Πρωτεύον κλειδί".

Ή λοιπόν αφαιρείς το πρωτεύον κλειδί από το πεδίο ID του πίνακα (δεν το συνιστώ)
ή τροποποιείς το ερώτημα προσάρτησης έτσι που να μην συμπεριλαμβάνεται το πεδίο ID
(
σε προβολή επεξεργασίας του ερωτήματος εισάγεις όλα τα πεδία εκτός το ID στον πίνακα).

Αν επιλέξεις τη δεύτερη περίπτωση, θα πρέπει στον πίνακα
t_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΝ_ΠΕΛΑΤΗ
να μετατρέψεις το πεδίο ID από αριθμό σε αυτόματη αρίθμηση.

Καλή συνέχεια!

Τάσος

alex 05-09-11 12:59

Καλησπέρα Τάσο

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

Φιλικά/Αλέξανδρος

dimmag 05-09-11 15:07

Γειά σας
Αλέξανδρε το ID του πίνακα t_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΝ_ΠΕΛΑΤΗ είναι το ID του πίνακα TblRoomsLet (στον οποίο δεν έχεις καλά το λειδί γιατί δυο τα κλειδιά και το ένα αυτόματη αρίθμηση θέλει τσεκάρισμα ο σχεδιασμός) και έχεις στο ερώτημα ΚινήσειςΠελάτηQry
Αφού ο πίνακας t_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΝ_ΠΕΛΑΤΗ είναι απλά αντίγραφο του ερωτήματος ΚινήσειςΠελάτηQry
Στο διαταυτα τώρα
στο ερώτημα q_ΕΜΗΜΕΡΩΣΗ_ΙΣΤΟΡΙΚΟΥ_ΚΙΝΗΣ ΕΩΝ_ΠΕΛΑΤΗ_ALL διορθωσέ το σε

Κώδικας:

INSERT INTO t_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΝ_ΠΕΛΑΤΗ
SELECT ΚινήσειςΠελάτηQry.*
FROM t_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΝ_ΠΕΛΑΤΗ RIGHT JOIN ΚινήσειςΠελάτηQry ON t_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΝ_ΠΕΛΑΤΗ.ID = ΚινήσειςΠελάτηQry.ID
WHERE (((t_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΝ_ΠΕΛΑΤΗ.ID) Is Null));

δηλαδή να σου εισάγει τα ID του ΚινήσειςΠελάτηQry που παίρνει από τον πίνακα TblRoomsLet και δεν έχουν μπει στον πίνακα t_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΝ_ΠΕΛΑΤΗ

Φιλικά Δημήτρης

dimmag 05-09-11 16:27

1 Συνημμένο(α)
Αλέξανδρε θέλεις και δύο ερωτήματα UPDATE επίσης για τυχόν αλλαγές που γίνονται

Δες συνημμένο

Φιλικά Δημήτρης

alex 05-09-11 18:50

Δημήτρη καλησπέρα
Τα έκανα έβαλα τον κώδικα αυτό που μου έδωσες και δουλεύουν όλα σωστά .Αρα δεν το πειράζω το κλειδί απο τον πίνακα tblRoomsLet. που αναφέρεις στο προηγούμενο μηνυμά σου εφόσον δεν ενοχλεί.Να σε ρωτήσω κάτι άλλο. Πως μπορώ να ενημερώσω τον πίνακα t_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΝ_ΠΕΛΑΤΗ με το ποσό Πληρωμών και το ποσό παροχών που παραμένει πάντα κενο τι προτείνεις να κάνω;
Ή μάλλον πώς μπορώ να μεταφέρω τα δεδομένα απο τον πίνακα ΤblRoomsLet στο πίνακα t_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΝ_ΠΕΛΑΤΗ .;
Βασικά τον πίνακα TblRoomsLet τον ενημερώνω με κώδικα απο την φόρμα Ταμείο ημέρας.

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

Φιλικά/Αλέξανδρος

dimmag 05-09-11 19:43

Αλέξανδρε καλησπέρα
Βασικά η βάση σου θέλει καλύτερο σχεδιασμό θα έλεγα από την αρχή.
Στο διαταυτα τώρα
Στο ερώτημα ΚινήσειςΠελάτηQry αν στο "Εξώφλησε" αντί 0 βάλεις -1 και εκετελέσεις το ερώτημα q_ΕΜΗΜΕΡΩΣΗ_ΙΣΤΟΡΙΚΟΥ_ΚΙΝΗΣ ΕΩΝ_ΠΕΛΑΤΗ_ALL θα κάνει προσάρτηση, όσες εγγραφές υπάρχουν στον πίνακα TblRoomsLet αλλά δεν υπάρχουν στον πίνακα t_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΝ_ΠΕΛΑΤΗ, στον πίνακα t_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΝ_ΠΕΛΑΤΗ

μετά στο ερώτημα ΚινήσειςΠελάτηQry βάζεις στο "Εξώφλησε" αντί -1 το 0 και συνεχίζεις κανονικά
Διαφορετικά κάνεις ένα δευτερο ερώτημα προσάρτησης ή κάνεις το υπάρχον παραμετρικο ή με φίλτρο από τη φόρμα


Φιλικά Δημήτρης

alex 05-09-11 20:54

Kαλησπέρα Δημήτρη

Σε ευχαριστώ πάντως για τις πληροφορίες.Όντως η βάση αυτή δεν έχει καλό σχεδιασμό.Διότι καθε λίγο και λιγάκι ανανεώνεται και αλλάζει η δομή.Οκ θα τα κοιτάξω πιστεύω θα τα καταφέρω΄.
Να σαι καλά καλό βράδυ.

Φιλικά/Αλέξανδρος

alex 07-09-11 10:29

Δημήτρη καλημέρα

Τελικά με κώδικα ενημερώνω τον πίνακα T_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΝ_ΠΕΛΑΤΗ με την εξώφληση του πελάτη κανω ταμείο ημέρας και ενημερώνεται ο πίνακας t_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΝ_ΠΕΛΑΤΗ καθώς και ο πίνακας tblRoomsLet με τον παλιό κώδικα όπως ήταν.

'ΕΝΗΜΕΡΩΣΗ ΑΡΧΕΙΟΥ t_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΝ_ΠΕΛΑΤΗ με το ΠοσόΠληρωμών
Set tbl1 = db.OpenRecordset("ΠληρωμέςΠελατών")
Set tbl2 = db.OpenRecordset("t_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕ Ν_ΠΕΛΑΤΗ")
Do Until tbl1.EOF
tbl2.MoveFirst
Do Until tbl2.EOF
tbl2.Edit
tbl2![ΠοσόΠληρωμών] = tbl2![ΠοσόΠληρωμών] + tbl1![ΠοσόΠληρωμής]
tbl2.Update
tbl1.Edit
tbl1.Update
tbl2.MoveNext
Loop
tbl1.MoveNext
Loop
tbl1.Close
tbl2.Close

'ΕΝΗΜΕΡΩΣΗ ΑΡΧΕΙΟΥ t_ΙΣΤΟΡΙΚΟ_ΠΑΡΟΧΩΝ με το ΠοσόΠαροχών
Set tbl1 = db.OpenRecordset("ΠελάτεςΠαροχές query")
Set tbl2 = db.OpenRecordset("t_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕ Ν_ΠΕΛΑΤΗ")
Do Until tbl1.EOF
tbl2.MoveFirst
Do Until tbl2.EOF
tbl2.Edit
tbl2![ΠοσόΠαροχών] = tbl2![ΠοσόΠαροχών] + tbl1![Σύνολο]
tbl2.Update
tbl1.Edit
tbl1.Update
tbl2.MoveNext
Loop
tbl1.MoveNext
Loop
tbl1.Close
tbl2.Close

'ΕΝΗΜΕΡΩΣΗ ΑΡΧΕΙΟΥ (t_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΣ_ΠΕΛΑΤΗ) ΜΕ ΤΟ ΠΟΣΟ ΔΙΑΜΟΝΗΣ
Set tbl1 = db.OpenRecordset("ΠληρωμέςΠελατών")
Set tbl2 = db.OpenRecordset("t_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕ Σ_ΠΕΛΑΤΗ")
Do Until tbl1.EOF
tbl2.MoveFirst
Do Until tbl2.EOF
tbl2.Edit
tbl2![ΠοσόΔιαμονής] = tbl2![ΠοσόΠληρωμών] - tbl2![ΠοσόΠαροχών]
tbl2.Update
tbl1.Edit
tbl1.Update
tbl2.MoveNext
Loop
tbl1.MoveNext
Loop
tbl1.Close
tbl2.Close

Φιλικά/Αλέξανδρος

alex 07-09-11 10:50

1 Συνημμένο(α)
Δημήτρη καλημέρα

Επειδή φαίνεται να παρουσιαστηκε κάποιο πρόβλημα με τον κώδικα που έστειλα κατευθείαν σου ξαναστέλνω σε συνημένο τον κώδικα στη φόρμα ΤαμείοΗμέρας.
Τελικά με κώδικα ενημερώνω τον πίνακα T_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΝ_ΠΕΛΑΤΗ με την εξώφληση του πελάτη κανω ταμείο ημέρας και ενημερώνεται ο πίνακας t_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΝ_ΠΕΛΑΤΗ καθώς και ο πίνακας tblRoomsLet με τον παλιό κώδικα όπως ήταν.

Φιλικα/Αλέξανδρος


Η ώρα είναι 05:50.

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


Search Engine Optimization by vBSEO 3.3.2