Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Πρόβλημα με access - ενημέρωση πινάκων (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/2927-problima-me-access-enimerosi-pinakon.html)

tolkap 14-01-14 22:52

Πρόβλημα με access - ενημέρωση πινάκων
 
καλησπέρα παιδιά!

Καλησπερα σε όλα τα παιδιά του forum.

χρειάζομαι μια βοήθεια γιατί κυριολεκτικά έχει πάρει φωτιά ο κώλος μου.

Έχω 2 πίνακες. Ο πρώτος (πίνακας1) έχει τα στοιχεία ασθενών ενός νοσοκομείου και έχει πρωτεύον κλειδί το ΑΜΚΑ τους.
Ο δεύτερος πίνακας (πίνακας 2) έχει το ΑΜΚΑ σαν πρωτεύον κλειδί και κάποια οικονομικά στοιχεία του πελάτη (χρεώσεις,πιστώσεις κλπ).

το πρόβλημα μου είναι το εξής. Θέλω όταν περνάω μια εγγραφή στον πίνακα 1 να δημιουργείται και μια εγγραφή στον πίνακα 2 με το ΑΜΚΑ του ασθενή ώστε να μην καταχωρώ τις εγγραφές 2 φορές. Οι 2 πίνακες έχουν σχέση ένα προς ένα.

Υπάρχει κάποια λύση σε microsoft access interface για απο sql δύσκολα τα πράγματα.


χίλια ευχαριστώ προκαταβολικά

sarafis 15-01-14 00:53

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

tolkap 15-01-14 01:00

Ευχαριστω παρα πολυ για την απαντηση σου...θα την τσεκαρω.τελευταια ερωτηση...οταν θελω να αθροισω 3 στηλες απο 3 διαφορετικους πινακες και να βρω ενα συνολικο αθροισμα,αυτο γινεται με εντολες access ή θελει κωδικα sql?γνωριζεις πως μπορει να γινει;

sarafis 15-01-14 01:32

Οι πίνακες έχουν κάποιο κοινό πεδίο? (πχ ΑΜΚΑ)
Αν ναί γίνεται με ένα απλό ερώτημα. Προσθέτεις όλους τους πίνακες, δημιουργείς τις σχέσεις μεταξύ των και κάνεις το άθροισμα. πχ. Άθροισμα:tbl1.poso+tbl2.poso+tbl3.poso.

tolkap 15-01-14 08:57

βασικά είναι 2 οι απορίες μου και ζητάω προκαταβολικά συγνώμη που σε πρήζω,

Απορία 1. Έχουμε 3 πίνακες ΑΣΘΕΝΕΙΣ(αμκα,όνομα,επίθετο) ΙΑΝΟΥΑΡΙΟΣ(αμκα, πίστωση,χρεωση,υπολοιπο) ΦΕΒΡΟΥΑΡΙΟΣ (αμκα, πίστωση,χρεωση,υπολοιπο). σε αυτούς πρωτεύων κλειδί είναι το αμκα και οι σχέσεις είναι 1 προς 1. θέλω να βρίσκω π.χ. τις συγκεντρωτικές χρεώσεις των 2 μηνών με βάση ένα αμκα πελάτη...δηάδή πόση συνολική χρέωση έχει ο πελάτης με αμκα 2121212121 για τους 2 μήνες.

Απορία 2. Σε ένα πίνακα Α(χρέωση1, χρέωση 2, χρέωση 3, Συνολική χρέωση) θέλω μόλις συμπληρώνω τις τιμές στα 3 πρώτα πεδία να συμπληρώνεται αυτόματα το άθροισμα τους στο πεδίο Συνολική χρέωση.

Αυτά και πάλι ευχαριστώ για το χρόνο σου!! :)

sarafis 15-01-14 12:48

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

tolkap 15-01-14 13:36

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

sarafis 15-01-14 13:50

Μην σε προβληματίζει ο αριθμός των εγγραφών. Το σημαντικό είναι η σωστή σχεδίαση της βάσης. Έχω βάση με πάνω από 500.000 εγγραφές σε ένα πίνακα. Ως προς τα αθροίσματα η κατάσταση δεν είναι τόσο απλή όπως στο excel αλλά υπάρχουν πολλές λύσεις πολλές εκ των οποίων έχουν αναφερθεί σε διάφορα θέματα του Forum. Κυρίως ομαδοποιήσεις και μερικά αθροίσματα μπορείς να κάνεις πολύ εύκολα με τις Εκθέσεις.
Ξεκίνα την σχεδίαση της βάσης σου, πέρασε κάποια παραδειγματικά δεδομένα και σε κάθε απορία σου ανέβασε συνημμένα ένα παράδειγμα με συγκεκριμένη ερώτηση-ερωτήσεις ώστε να βοηθηθείς και παράλληλα να αποκτήσεις επιπλέον γνώσεις στην σχεδίαση βάσεων δεδομένων.

tolkap 15-01-14 13:54

χίλια ευχαριστώ για τη βοήθεια ειλικρινά.θα ετοιμάσω ένα παράδειγμα και θα το ανεβάσω. :dft009:

Tasos 15-01-14 14:43

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

Επιτρέψτε μου να ανεβάσω και εγώ ένα σχετικό παράδειγμα στο μεταξύ.

Το επισυναπτόμενο έχει έναν πίνακα για τους ασθενείς και έναν για τα ποσά.

Δείτε του πίνακες για να ξέρετε τι θα πληκτρολογήσετε κατά την εκκίνηση του ερωτήματος "Sumary".

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

Τάσος

tolkap 15-01-14 18:22

1 Συνημμένο(α)
Sarafis ανεβαζω ένα παραδειγματάκι σχετικά με το πρόβλημα της αυτόματης άθροισης πεδίων σε ένα πίνακα.

Tasos επειδή αυτή τη στιγμή είμαι σε pc με access 2003 δεν μπορώ να ανοίξω το αρχείο. :(

Tasos 15-01-14 18:43

1 Συνημμένο(α)
Καλησπέρα!

Αποστόλη, δες το συνημμένο σε *.mdb.

Τάσος

tolkap 15-01-14 19:05

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

το τελευταίο άλυτο πρόβλημα που έχω όμως (και για μένα το πιο δύσκολο) είναι το προηγούμενο που ανέβασα...αυτό με την αυτόματη άθροιση.έχεις καμία ιδέα?

sarafis 15-01-14 20:50

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

Tasos 15-01-14 21:14

Αποστόλη, θα πρέπει να μπεις στον VBE me ALT + F11, να επιλέξεις Tools >References και να αφαιρέσεις τυχόν τσεκαρισμένα στοιχεία που περιέχουν τη λέξη "MISSING".

Δεν κοίταξα ακόμα το αρχείο σου αλλά δες πρώτα το αρχείο του Στέλιου.

Τάσος

tolkap 16-01-14 01:04

Τασο αυριο θα φτιαξω το ερωτημα μου με το μπουσουλαπου μου εδωσες και αν εχω καποιο θεματακι σου λεω. :)

Στελιο θα το δω το αρχειο αυριο γιατι τωρα μπαινω απο κιν.παντως ειναι αδικο να γινεται τοσο ευκολα συο excel ενα αθροισμα πεδιων και να μξγι εται στην access

sarafis 16-01-14 01:50

1 Συνημμένο(α)
Αποστόλη
Στην Access είναι λίγα τα πράγματα που δεν γίνονται.
Προσπάθησα να σου εξηγήσω πως ε΄ναι η σωστή σχδίαση μιας σχεσιακής βάσης δεδομένων. Τώρα αν θές μόνο ένα πίνακα δες το ερώτημα στην συνημμένη βάση.
Το άθροισμα των πεδίων που θές υπολογίζεται με απλές πράξεις. Η τιμή δεν καταχωρείται στον πίνακα, μπορεί να γίνει και αυτό αλλά δεν έχει νόημα να καταχωρείς υπολογιζόμενα πεδία σε πίνακες, είναι σπατάλη χώρου.
Ελπίζω να σε κάλυψα.

tolkap 16-01-14 16:51

Tasos σχετικά με το κώδικα sql pου μου έδωσες στο αρχείο testsum θέλω μια μικρή βοήθεια. Θα ήθελα να ζητάει έτος,αρχικο μήνα, τελικό μήνα όπως το έκανες εσυ αλλά και αμκα ώστε να μου επιστρέφει για το άτομο που ζητάω συνολική χρέωση, πίστωση και υπόλοιπο. Σου επισυνάπτω και τη βάση δεδομένων ώστε να καταλάβεις τι ζητάω και να το τροποποίησεις στα δικά μου πεδία...

σόρρυ για το πρήξιμο αλλά με αυτή τη λεπτομέρεια τελειώνω το project. :)

Υ.Γ. το αρχείο στείλτο αν θέλεις σε *.accdb
επειδη το αρχείο της βάσης ήταν μεγάλο το ανέβασα εδω
ΚΛΙΝΙΚΗ.accdb - Speedy Share - upload your files here

Tasos 16-01-14 21:35

Καλησπέρα!

Αποστόλη, άνοιξε το ερώτημα σε προβολή SQL και αντικατέστησε τον κώδικα SQL που περιέχει με τον με τον παρακάτω:
Κώδικας:

PARAMETERS [Όρισε Έτος] Short, [Όρισε αρχικό μήνα] Short, [Όρισε τελικό μήνα] Short, [Όρισε κωδικό ΑΜΚΑ] Text ( 255 );
SELECT Year([ΗΜΕΡΟΜΗΝΙΑ]) AS ΈΤΟΣ, Format(DateSerial(Year([ΗΜΕΡΟΜΗΝΙΑ]),Nz([Όρισε αρχικό μήνα],1),1),"mmmm") &
IIf(Nz([Όρισε αρχικό μήνα],1)=Nz([Όρισε τελικό μήνα],12),""," - " & Format(DateSerial(Year([ΗΜΕΡΟΜΗΝΙΑ]),
Nz([Όρισε τελικό μήνα],12),1),"mmmm")) AS ΠΕΡΙΟΔΟΣ, Πίνακας1.ΑΣΘΕΝΗΣ, Sum(Πίνακας2.ΠΟΣΟ) AS ΣΥΝΟΛΙΚΟ_ΠΟΣΟ
FROM Πίνακας1 INNER JOIN Πίνακας2 ON Πίνακας1.AMKA = Πίνακας2.[ΑΜΚΑ]
WHERE (((Month([ΗΜΕΡΟΜΗΝΙΑ])) Between Nz([Όρισε αρχικό μήνα],1) And Nz([Όρισε τελικό μήνα],12)))
GROUP BY Year([ΗΜΕΡΟΜΗΝΙΑ]), Πίνακας1.AMKA, Πίνακας1.ΑΣΘΕΝΗΣ, DatePart("yyyy",[ΗΜΕΡΟΜΗΝΙΑ])
HAVING (((Year([ΗΜΕΡΟΜΗΝΙΑ])) Between Nz([Όρισε Έτος],1900) And Nz([Όρισε Έτος],2100)) AND
((Πίνακας1.AMKA)=[Όρισε κωδικό ΑΜΚΑ]));

Φιλικά

Τάσος

tolkap 16-01-14 21:41

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

tolkap 16-01-14 22:14

τον δοκίμασα να τον βάλω στη δική μου βάση με κάποιες τροποποιήσεις αλλά δεν τρέχει...:019:
μπορείς να τον τροποποιήσεις λίγο?

Tasos 17-01-14 15:02

1 Συνημμένο(α)
Αποστόλη, θα πρέπει να συμπιέσεις τη βάση σου σε ZIP (μέγεθος μετά την συμπίεση < 200ΚΒ) και να την ανεβάσεις στο φόρουμ κανονικά.

Γιατί να εγκαταστήσει κάποιος πρόγραμμα με "υποπρογράμματα" για να δει τη βάση σου;

Σου επισυνάπτω παράδειγμα με το ερώτημα του προηγούμενου μου μηνύματος.
Άνοιξε το ερώτημα που περιέχεται σε μορφή επεξεργασίας για να δεις πως λειτουργεί.
Δες επίσης τις παραμέτρους που έχουν προσδιοριστεί (καρτέλα Σχεδίαση>Παράμετροι).

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

Φιλικά

Τάσος

tolkap 17-01-14 15:42

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

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


Η ώρα είναι 23:42.

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


Search Engine Optimization by vBSEO 3.3.2