Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Διόρθωση έκφρασης σε ερώτημα

Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια!

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 11-09-11, 11:56
Όνομα: Αλέξανδρος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-01-2010
Περιοχή: ΑΡΤΑ
Μηνύματα: 521
Προεπιλογή Διόρθωση έκφρασης σε ερώτημα

Καλημέρα σε όλη την παρέα.

Προσπαθώ με διαφόρους τρόπους να «μπαλώσω» την κακοφτιαγμένη μου βάση. Μου θυμίζει ντόμινο ένα φτιάχνω ή θα πέσουν όλα ή φτιάχνω ένα πέφτει το επόμενο.
Τελικά μετά από πολλές προσπάθειες ώρες και μέρες έχω καταλήξει μέχρι εδώ αλλά και να ήθελα να σκεφτώ το κεφάλι έγινε καζάνι.
Επι του θέματος
Στο ερώτημα ΚινήσειςΠελάτηQry και στο πεδίο ΠοσόΠαροχών
1) Τι έκφραση πρέπει να βάλω ώστε να μου δείχνει το σύνολο παροχών κάθε εγγραφής.
Εγώ έβαλα στο πεδίο ΠοσόΠαροχών: Forms!ΚινήσειςΠελάτη!Πελάτης αροχέςΔευτερεύουσα.Form!Σύν λοΠαροχών
Αλλά δεν δουλεύει.
Πιστεύω βάζοντας την τιμή αυτή θα έχω με το παρακάτω ερώτημα προσάρτησης
q_ΕΜΗΜΕΡΩΣΗ_ΙΣΤΟΡΙΚΟΥ_ΚΙΝΗΣ ΕΩΝ_ΠΕΛΑΤΗ_ALL
την μεταφορά δεδομένων του (ΠοσόΠληρωμών,ΠοσόΔιαμονής ,ΠοσόΠαροχών) στον πίνακα t_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΝ_ΠΕΛΑΤΗ.
Ανεβάζω την βάση για βοήθεια.

Φιλικά/Αλέξανδρος
Συνημμένα Αρχεία
Τύπος Αρχείου: zip βδ1_ok21.zip (288,4 KB, 15 εμφανίσεις)
Απάντηση με παράθεση
  #2  
Παλιά 11-09-11, 16:22
Όνομα: Αλέξανδρος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-01-2010
Περιοχή: ΑΡΤΑ
Μηνύματα: 521
Προεπιλογή

Καλημέρα σε όλη την παρέα.

Καποιο πρόβλημα στη φόρτωση έγινε και το ξαναστέλνω

Προσπαθώ με διαφόρους τρόπους να «μπαλώσω» την κακοφτιαγμένη μου βάση. Μου θυμίζει ντόμινο ένα φτιάχνω ή θα πέσουν όλα ή φτιάχνω ένα πέφτει το επόμενο.
Τελικά μετά από πολλές προσπάθειες ώρες και μέρες έχω καταλήξει μέχρι εδώ αλλά και να ήθελα να σκεφτώ το κεφάλι έγινε καζάνι.
Επι του θέματος
Στο ερώτημα ΚινήσειςΠελάτηQry και στο πεδίο ΠοσόΠαροχών
1) Τι έκφραση πρέπει να βάλω ώστε να μου δείχνει το σύνολο παροχών κάθε εγγραφής.
Εγώ έβαλα στο πεδίο ΠοσόΠαροχών: Forms!ΚινήσειςΠελάτη!Πελάτης αροχέςΔευτερεύουσα.Form!Σύν λοΠαροχών
Αλλά δεν δουλεύει.
Πιστεύω βάζοντας την τιμή αυτή θα έχω με στο παρακάτω ερώτημα προσάρτησης
q_ΕΜΗΜΕΡΩΣΗ_ΙΣΤΟΡΙΚΟΥ_ΚΙΝΗΣ ΕΩΝ_ΠΕΛΑΤΗ_ALL
την μεταφορά δεδομένων του (ΠοσόΠληρωμών,ΠοσόΔιαμονής ,ΠοσόΠαροχών) στον πίνακα t_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΝ_ΠΕΛΑΤΗ.
Ανεβάζω την βάση για βοήθεια.
Φιλικά/Αλέξανδρος
Συνημμένα Αρχεία
Τύπος Αρχείου: zip βδ1_ok21.zip (288,4 KB, 6 εμφανίσεις)
Απάντηση με παράθεση
  #3  
Παλιά 11-09-11, 18:41
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Καλησπέρα Αλέξανδρε!
Προσπάθησε να συντάξεις μια συνάρτηση DSUM() που θα επιστρέφει το άθροισμα των παροχών του πελάτη με το συγκεκριμένο CustomerID.

Θα σου δώσω ένα γενικότερο παράδειγμα χρήσης της DSum(παράσταση;τομέας ;κριτήρια):

Συν_Παροχών: DSum(
"[Πεδίο με την αξία παροχών]";
"[Από τον πίνακα που ανήκει το πεδίο αυτό]";
"[CustomerID του πίνακα]=" & [CustomerID του ερωτήματος] & "AND clng([DateΠαροχής])=" & Date() & " And
[ΠεδίοΠουΔηλώνειAνΞώφλησε] <> True And [άλλο πεδίο του πίνακα] = " & "άλλο κριτήριο")


Θέλοντας να σε βοηθήσω, σου προτείνω να αφιερώσεις χρόνο στη σχεδίαση της βάσης σου από την αρχή αντί να "μπαλώνεις τα αμπάλωτα".


Κάποτε είχα φτιάξει ένα αρχείο Access που περιείχε πίνακες και σχέσεις μεταξύ τους
βασισμένο σε μία απεικόνιση ενός μοντέλου βάσης δεδομένων για ξενοδοχείο που υπήρχε και υπάρχει ακόμα εδώ: Example Relational Database Data Models | Database Solutions for Microsoft Access | databasedev.co.uk

Σου επισυνάπτω λοιπόν ένα αντίγραφο αυτού του αρχείου.

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

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

Τάσος
Συνημμένα Αρχεία
Τύπος Αρχείου: zip HotelDatabase.zip (35,9 KB, 64 εμφανίσεις)
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #4  
Παλιά 11-09-11, 19:25
Όνομα: Αλέξανδρος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-01-2010
Περιοχή: ΑΡΤΑ
Μηνύματα: 521
Προεπιλογή

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

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

Φιλίκά/Αλέξανδρος
Απάντηση με παράθεση
  #5  
Παλιά 21-09-11, 11:05
Όνομα: Αλέξανδρος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-01-2010
Περιοχή: ΑΡΤΑ
Μηνύματα: 521
Προεπιλογή

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

Τελικά όπως και υποσχέθηκα ότι θα κάνω θα το ανεβάσω.Τελικά δεν μπόρεσα να κάνω την έκφραση που μου έδωσες

ΠοσόΠαροχών:DSum("[Σύνολο]";'[t_ΙΣΤΟΡΙΚΟ_ΠΑΡΟΧΩΝ]";"[CustomerID του πίνακα ]="&[ΚινήσειςΠελάτηQry. CustomerID]& AND Clng([ΗμερΠαροχής])=" & Date() Αnd [Ανενεργός]<>True) And [αλλο πεδίο πίνακα]="&"άλλο κριτήριο")
(Εδώ έκανα δοκιμές αλλά δεν δούλεψε απέτυχα)
Εκανα όμως το εξής αλλά δεν είναι αυτό που ήθελα και θέλω να μου πείς και την γνώμη σου
Πρόσθεσα στον πίνακα
ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΝ_ΠΛΗΡΩΜΩΝ _ΠΑΡΟΧΩΝ_ΠΕΛΑΤΩΝ
ενα πεδίο Σύνολο Παροχών και έβαλα την συνάρτηση αυτή
Κώδικας:
=DSum("Σύνολο";"t_ΙΣΤΟΡΙΚΟ_ΠΑΡΟΧΩΝ";"CustomerID=
" &ΙIf(IsNull(Forms!ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΝ_ΠΛΗΡΩΜΩΝ_ΠΑΡΟΧΩΝ_ΠΕΛΑΤΩΝ.CustomerID);-1;
Forms!ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΝ_ΠΛΗΡ ΩΜΩΝ_ΠΑΡΟΧΩΝ_ΠΕΛΑΤΩΝ.CustomerID))
οπότε έβαλα και στο πεδίο της φόρμας ΠοσόΠαροχών την ίδια συνάρτηση με αποτέλεσμα στην φόρμα να φαίνονται τα ποσά οτι δουλεύουν κανονικά.Αφού ο χρήστης δεν βλέπει τον πίνακα βλέπει τη φόρμα.
Το πρόβλημα είναι ότι εάν χρειασθεί να πάρω τιμές απο τον πίνακα
t_ΙΣΤΟΡΙΚΟ_ΚΙΝΗΣΕΩΝ_ΠΕΛΑΤΗ δεν θα είναι ενημερωμένο το ΠοσόΠαροχών κατα συνέπεια το ΠοσόΠληρωμών.

Φιλικά/Αλέξανδρος
Συνημμένα Αρχεία
Τύπος Αρχείου: zip βδ1_ok30.zip (418,2 KB, 28 εμφανίσεις)

Τελευταία επεξεργασία από το χρήστη Tasos : 21-09-11 στις 12:21. Αιτία: Συνάρτηση σε πλαίσιο κώδικα
Απάντηση με παράθεση
  #6  
Παλιά 21-09-11, 13:00
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

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

Εγώ αυτόν τον χρόνο δυστυχώς δεν τον έχω.

Στο προηγούμενο μήνυμα σου ρώτησες:
Παράθεση:
Στο ερώτημα ΚινήσειςΠελάτηQry και στο πεδίο ΠοσόΠαροχών
1) Τι έκφραση πρέπει να βάλω ώστε να μου δείχνει το σύνολο παροχών κάθε εγγραφής.
και εγώ σου απάντησα να χρησιμοποιήσεις τη συνάρτηση DSUM().

Το ότι δεν είχες επιτυχία δεν οφείλεται σε σένα αλλά ούτε και στη συνάρτηση.
Οφείλεται στη σχεδίαση της βάσης σου που δεν σου επιτρέπει να πάρεις τα δεδομένα που θέλεις και όπως τα θέλεις.

Μην περιμένεις λοιπόν να σου πει κανείς ποιους πίνακες και ποια πεδία θα πρέπει να χρησιμοποιήσεις στην DSUM(). Αυτό προϋποθέτει την πλήρη μελέτη της βάσης σου που όπως είπαμε
  1. συνδέεται με χρόνο
  2. μελετώντας την θα ανακαλύψει αρκετά βασικά λάθη που δεν θα τον ενθαρρύνουν να συνεχίσει.
Εσύ ως δημιουργός της βάσης οφείλεις να γνωρίζεις ποιους πίνακες και ποια πεδία θα χρησιμοποιήσεις στην DSUM().

Προσπάθησε να κάνεις επιμέρους ερωτήσεις.
Δεν ωφελεί να επισυνάπτεις κάθε φορά το τεράστιο συνημμένο.

Στην ερώτηση σου λοιπόν.

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

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

Πάνω σ αυτό μπορούμε να σε βοηθήσουμε αρκεί να μας δείξεις τον κώδικα SQL του ερωτήματος.

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #7  
Παλιά 21-09-11, 14:12
Όνομα: Αλέξανδρος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-01-2010
Περιοχή: ΑΡΤΑ
Μηνύματα: 521
Προεπιλογή

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

Φιλικά/Αλέξανδρος
Απάντηση με παράθεση
  #8  
Παλιά 25-09-11, 12:46
Όνομα: Αλέξανδρος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-01-2010
Περιοχή: ΑΡΤΑ
Μηνύματα: 521
Προεπιλογή

Kαλημέρα Τάσο

Τελικά το πρόβλημα λύθηκε με την παρακάτω συνάρτηση..Tοποθετήθηκε στο πεδίο ΠοσόΠαροχών του ερωτήματος ΚινήσειςΠελάτηQry.
ΠοσόΠαροχών: DSum("Σύνολο";"ΠελάτεςΠαροχές query";"CustomerID")
Όλα δουλεύουν κανονικά. Ευχαριστώ Τάσο για την βοήθειά σου
Ευχαριστώ και τους 2 Δημητράδες που βοήθησαν να φτάσω μέχρι εδώ.

Φιλικά

Αλέξανδρος
Απάντηση με παράθεση
  #9  
Παλιά 14-02-15, 01:10
Όνομα: Παναγιώτης
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 21-01-2015
Μηνύματα: 5
Προεπιλογή

Καλησπέρα σας ειμαι καινούργιο στο forum και χρειάζομαι βοήθεια σχετικά με ένα θέμα.
Έχω φτιαξει μια ΒΔ και στην φόρμα παραστατικά θέλω να βάλω ένα πλαίσιο κειμένου στο οποίο να μου βγάζει το άθροισμα της καθαρής αξίας των προϊόντων με ποσοστό ΦΠΑ 13%.
Έγραψα αυτη την συνάρτηση =DSUM(“[ΓΡΑΜΜΕΣ ΠΩΛΗΣΕΩΝ].[ΠΟΣΟΤΗΤΑ]”,”[ΓΡΑΜΜΕΣ ΠΩΛΗΣΕΩΝ].[ΤΙΜΗ ΠΩΛΗΣΗΣ]*(1-NZ([ΕΚΠΤΩΣΗ]/100));3)”,_”[ΠΟΣΟΣΤΟ ΦΠΑ]=0,13”) αλλά κάτι κάνω λάθος.
Μπορείτε να με βοηθήσετε; Ίσως και η συνάρτηση που χρησιμοποιώ να είναι λάθος. Κάθε πρόταση-λύση Δεχτή.
Σας ευχαριστώ εκ των προτέρων
Απάντηση με παράθεση
  #10  
Παλιά 14-02-15, 18:05
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα

Παναγιώτη, δοκίμασε τον τύπο:

=DSum("[ΠΟΣΟΤΗΤΑ]*[ΤΙΜΗ ΠΩΛΗΣΗΣ]*(1-NZ([ΕΚΠΤΩΣΗ]/100))";"[ΓΡΑΜΜΕΣ ΠΩΛΗΣΕΩΝ]")*1,13

Φιλικά/Γιώργος
Απάντηση με παράθεση
Απάντηση στο θέμα


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
Διόρθωση σε ερώτημα comsup Access - Ερωτήσεις / Απαντήσεις 5 20-02-13 22:20
[Γενικά] Ερμηνεία έκφρασης Excel Meteora Excel - Ερωτήσεις / Απαντήσεις 3 06-06-12 20:07
ΔΟΜΗΣΗ ΕΚΦΡΑΣΗΣ ΜΕ ΗΜΕΡΟΜΗΝΙΕΣ leopet Access - Ερωτήσεις / Απαντήσεις 7 31-01-11 11:33


Η ώρα είναι 04:39.