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/583-mi-emfanisi-apotelesmatos-tipon-se-pinakes.html)

mdragon 09-05-10 21:25

Μη εμφάνιση αποτελέσματος τύπων σε πίνακες
 
Καλησπέρα σε όλους,
έχω μία φόρμα στην οποία τα πεδία μου είναι τα εξής
Τεμάχια - Τιμή - Ποσό
Στο πεδίο Ποσό υπάρχει ο τύπος =[Τεμάχια]*[Τιμή]
Στη φόρμα μου το αποτέλεσμα εμφανίζεται κανονικά
Στον πίνακα όμως δεν έρχεται το αποτέλεσμα
Το πρόβλημά μου είναι ότι όταν στη φόρμα ζητάω το Άθροισμα του Ποσού το αποτέλεσμα που έρχεται είναι 0
Τι να κάνω?

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

editolis 09-05-10 22:19

Αγαπητη Φιλη Μαρω,

Το προβλημα σου νομιζω οτι εχει ευκολη λυση.

Υποθετω οτι το recordsource της φορμα σου ειναι ο πινακας σου
και οχι καποιο πολυπλοκο ερωτημα. Σε αυτην την περιπτωση
η παρακατω φορμουλα ισως σου ειναι αρκετη για την λυση.

Στο OnCurrent της φορμας βαλε τον τυπο:

txtPoso.value = me.[txtTemaxia] * me.[txtTimi]

Τωρα θα αποθηκευεται η τιμη στο πινακα...

Καλη συνεχεια

mdragon 09-05-10 23:26

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

Όπως και να 'χει, ευχαριστώ

Μάρω

editolis 10-05-10 00:10

Κανε compile και αποθηκευση της ΒΔ.

Μετα συμπυκνωση και επιδιορθωση.

Κλεισε την ΒΔ και ξαναπροσπαθησε...

mdragon 10-05-10 19:00

Ναι βρε συ αλλά δεν μου απάντησες ....
στο πεδίο ποσό αφήνω τον τύπο ή λείτουργεί μόνο με τον κώδικα?

editolis 10-05-10 20:42

Το ζητουμενο σου εαν καταλαβα καλα ειναι να αποθηκευεται η τιμη
σε πεδιο στον πινακα.

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

Εαν εχεις δυσκολιες επισυναψε ενα δειγμα της ΒΔ σου.

Καλη συνεχεια...

Dangel82 10-05-10 23:52

Παράθεση:

Αρχική Δημοσίευση από mdragon (Μήνυμα 2657)
Ευχαριστώ Τόλη μου για την προσπάθεια αλλά μου βγάζει error
Η φόρμα μου προέχεται από έναν απλό πίνακα.
Φαντάζομαι ότι ο τύπος στο πεδίο θα παραμείνει ... έτσι δεν είναι???
Δεν ξέρω που κάνω λάθος

Όπως και να 'χει, ευχαριστώ

Μάρω

Τον τύπο στο πεδίο θα τον αντικαταστήσεις με το πεδίο θέλεις να ενημερώνεις. Τον τύπο που σου γράφει ο editolis θα τον βάλεις στο συμβάν Oncurrent.


Ανέβασε και ένα δείγμα όπως σου είπε ο Τόλης...

Tasos 11-05-10 06:32

Καλημέρα σε όλους!

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

Θα πρέπει να αφαιρέσεις τον τύπο αυτό από το υπολογισμένο πεδίο (που σου προκαλεί το σφάλμα στον κώδικα)
και να συνδέσεις με το ανάλογο πεδίο του πίνακα.

Κατόπιν, στο AfterUpdate() του πεδίου [txtTemaxia] ή/και του πεδίου [txtTimi]
μπορείς να υπολογίσεις την τιμή που θέλεις να περάσεις στο [txtPoso].

Πχ.: Me.txtPoso = me.txtTemaxia * me.txtTimi

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

Τάσος

Σπύρος 12-05-10 22:28

Ένας τρόπος που είχα δοκιμάσει εγώ σε παλιό πρόγραμμά μου και δουλεύει ακόμα είναι να βάλεις στο πεδίο txtTimh και στις ιδιότητες "μετα την απώλεια της εστίασης" τον παρακάτω κώδικα:

Private Sub txtTimh_LostFocus()
Me.txtPoso.Value = Me.txtTemaxia.Value * Me.txtTimh.Value
End Sub

Δουλεύει 100%
Ελπίζω να βοήθησα...
Φιλικά Σπύρος

mdragon 17-05-10 09:50

1 Συνημμένο(α)
Καλημέρα σε όλους,
επισυννάπτω ένα αρχείο γιατι τελικά δεν κατάφερα να το διορθώσω.
έχω βάλει στο on current της φόρμας τον εξής τύπο
txtΠοσο.value = me.[txtΤεμαχια] * me.[txtΤιμη]
όπως μου είπατε αλλά πάλι τίποτα.


Σας ευχαριστώ,
Μάρω

Tasos 17-05-10 10:20

Καλημέρα σε όλους!

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

Για ποιο λόγο να γίνεται υπολογισμός κάθε φορά που επιλέγεται μια εγγραφή;

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

'Έτσι λοιπόν θα σου πρότεινα στο AfterUpdate() των 2 αυτών πεδίων να χρησιμοποιήσεις:

Κώδικας:

Private Sub Τεμαχια_AfterUpdate()
      If Not IsNull(Me.Τεμαχια) And Not IsNull(Me.Τιμη) Then Me.Ποσο = Me.Τεμαχια * Me.Τιμη
Εnd Sub
 
Private Sub Τιμη_AfterUpdate()
      If Not IsNull(Me.Τεμαχια) And Not IsNull(Me.Τιμη) Then Me.Ποσο = Me.Τεμαχια * Me.Τιμη
End Sub

Φιλικά

Τάσος

mdragon 17-05-10 12:43

Ευχαριστώ Τάσο μου, δουλεύει μια χαρά.
Να ΄στε καλά και εσείς παιδιά για το χρόνο σας



Ευχαριστώ,

Μάρω

mdragon 20-05-10 20:56

Παράθεση:

Αρχική Δημοσίευση από mdragon (Μήνυμα 2654)
Καλησπέρα σε όλους,
έχω μία φόρμα στην οποία τα πεδία μου είναι τα εξής
Τεμάχια - Τιμή - Ποσό
Στο πεδίο Ποσό υπάρχει ο τύπος =[Τεμάχια]*[Τιμή]
Στη φόρμα μου το αποτέλεσμα εμφανίζεται κανονικά
Στον πίνακα όμως δεν έρχεται το αποτέλεσμα
Το πρόβλημά μου είναι ότι όταν στη φόρμα ζητάω το Άθροισμα του Ποσού το αποτέλεσμα που έρχεται είναι 0
Τι να κάνω?

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

Να το κουράσω λίγο παραπάνω???
Τί γίνεται αν το αποτέλεσμα που επιθυμώ θέλω να είναι στρογγυλοποιημένο???

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

Tasos 21-05-10 11:03

Καλημέρα σε όλους!

Μάρω, τι είδους στρογγυλοποίηση είναι αυτή που ζητάς;
Αν ζητάς αυτή της Excel τότε
  • Πάτησε ALT+F11 για να εμφανιστεί ο VBE.
  • Δημιούργησε μια νέα λειτουργική μονάδα (Menu: Insert > Module) ή χρησιμοποιοίησε τυχόν υπάρχουσα.
  • Πρόσθεσε (τσέκαρε) την αναφορά: Microsoft Excel XX.0 Object Library (Menu: Tools>References)
    όπου XX.0 = η έκδοση Excel που υπάρχει στον υπολογιστή.
Κατόπιν πέρασε τον παρακάτω κώδικα:

Κώδικας:

Private Sub Τεμαχια_AfterUpdate()
  If Not IsNull(Me.Τεμαχια) And Not IsNull(Me.Τιμη) Then Me.Ποσο = Excel.WorksheetFunction.RoundUp(Me.Τεμαχια * Me.Τιμη, 2)
End Sub

Κώδικας:

Private Sub Τιμη_AfterUpdate()
  If Not IsNull(Me.Τεμαχια) And Not IsNull(Me.Τιμη) Then Me.Ποσο = Excel.WorksheetFunction.RoundUp(Me.Τεμαχια * Me.Τιμη, 2)
End Sub

Διαφορετικά χρησιμοποιείς την Round() της VBA.

Κώδικας:

.... If Not IsNull(Me.Τεμαχια) And Not IsNull(Me.Τιμη) Then Me.Ποσο = Round(Me.Τεμαχια * Me.Τιμη, 2)
Καλή συνέχεια!

Τάσος

mdragon 23-05-10 16:36

Να ΄σαι καλά βρε Τάσο μου,
Δεν μπορείς να φανταστείς πόσα μου έχεις διδάξει


Σε ευχαριστώ,

Μάρω

nisgia 26-05-10 14:56

Μάρω, καλησπέρα και από έμενα!

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

Αν επιτρέπεται, γιατί προχωρείς σε κάτι τέτοιο
αφού έχεις την τιμή μονάδος και την ποσότητα ήδη διαθέσιμες;:unsure:

Φιλικά, Γιάννης.

mdragon 26-05-10 15:41

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



Μάρω

nisgia 26-05-10 20:22

1 Συνημμένο(α)
Μάρω, είναι εύκολο για μια έκθεση να κάνει κάποιους βασικούς υπολογισμούς.

Φυσικά απ' ότι μου λες, στην περίπτωσή σου θα πρέπει να εισάγεις κάποια
επιπλέον χειριστήρια στις εκθέσεις και αυτό ίσως είναι επίπονο.

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

Γενικά είναι λίγο επισφαλείς αυτή η μέθοδο.

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

Φιλικά, Γιάννης.

mdragon 27-05-10 21:41

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


Να ΄σαι καλά,
Μάρω

editolis 28-05-10 00:46

1 Συνημμένο(α)
Μαρια Δες το παραδειγμα σου διορθωμενο και ενημερωσε εαν σου κανει...

Επισης να πω για αλλη μια φορα το ποσο σημαντικο ειναι να χρησιμοποιουμε greklish
στην ACCESS. Εαν δεν το κανετε καποια στιγμη θα σπατε το κεφαλι σας να βρειτε γιατι
ενα ερωτημα πχ δεν "τρεχει" διοτι μπορει να λειπει ενας τονος απο καποια ονομασια ενος πινακα...κλπ...

mdragon 29-05-10 09:54

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

Την καλημέρα μου,

Μάρω


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

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


Search Engine Optimization by vBSEO 3.3.2