Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Μετατροπή Ποσού σε Κείμενο

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 11-02-12, 08:59
Όνομα: Χρήστος Φ.
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 20-12-2010
Περιοχή: Θεσσαλονίκη
Μηνύματα: 498
Προεπιλογή Μετατροπή Ποσού σε Κείμενο

Καλημέρα σ' όλη την παρέα.
Ζητώ την βοήθειά σας ώστε στην Βάση-Δείγμα να μετατρέπεται το ποσό σε κείμενο.
Στηρίζομαι σε μια καταπληκτική εφαρμογή που προτάθηκε στο Forum, αλλά δεν καταφέρνω να την προσαρμόσω σε μ' ένα!

Στην 2η Βάση-Δείγμα εμφανίζει το μήνυμα: Περιορίστε τα δεκαδικά ψηφία σε 2!
Πως μπορεί να τροποποιηθεί η συνάρτηση ΝumToWords ώστε να μετατρέπει αριθμούς και με πάνω από 2 δεκαδικά ψηφία;

Τελευταία επεξεργασία από το χρήστη Χρήστος : 16-10-16 στις 19:57.
Απάντηση με παράθεση
  #2  
Παλιά 11-02-12, 15:39
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.028
Προεπιλογή

Καλημέρα Χρήστο!

Αντικατέστησε τον κώδικα της φόρμας με τον παρακάτω κώδικα:


Κώδικας:
Option Explicit

Private Sub Form_Load()
    ChckShowCur = GetSetting("Acc", "ConvToString", "ShowCurrency", True)
    Me.OptCharCase = GetSetting("Acc", "ConvToString", "OptCharCase", 0)

End Sub

Private Sub ChckShowCur_Click()
    SaveSetting "Acc", "ConvToString", "ShowCurrency", ChckShowCur
End Sub

Private Sub OptCharCase_AfterUpdate()
    SaveSetting "Acc", "ConvToString", "OptCharCase", Nz(Me.OptCharCase, 0)
    Me.Refresh
End Sub

Function NumToWordsWithMoreDecimals(myValue, Optional CharCase%, _
                                    Optional EurosAndCents As Boolean = True) As String
    Dim strTemp As String, strTemp1 As String, tmpValue As String


    If Int(myValue) = myValue Then
        NumToWordsWithMoreDecimals = NumToWords(myValue, CharCase, EurosAndCents)
        Exit Function
    End If
        tmpValue = Mid(myValue - Int(myValue), 3)
        If Len(tmpValue) < 3 Then
            NumToWordsWithMoreDecimals = NumToWords(myValue, CharCase, EurosAndCents)
            Exit Function
        End If
        
        strTemp = NumToWords(Int(myValue), 0, EurosAndCents)
        myValue = Mid(myValue - Int(myValue), 3)

        If myValue = 1 Then
            strTemp1 = " " & ChrW(954) & ChrW(945) & ChrW(953) & " " & _
                       NumToWords(myValue, 0, False) & " " & _
                       ChrW(955) & ChrW(949) & ChrW(960) & ChrW(964) & ChrW(972)

        ElseIf Len(myValue) = 2 Then
            strTemp1 = " " & ChrW(954) & ChrW(945) & ChrW(953) & " " & _
                       NumToWords(myValue, 0, False) _
                     & " " & ChrW(955) & ChrW(949) & ChrW(960) & ChrW(964) & ChrW(940)

        Else

            strTemp1 = " " & ChrW(954) & ChrW(945) & ChrW(953) & " " & NumToWords(myValue, 0, False)

        End If

        strTemp = StrConv(strTemp & strTemp1, vbLowerCase)

        If CharCase = 0 Then
            strTemp = UCase(Left(strTemp, 1)) & Mid(strTemp, 2)
        ElseIf CharCase = 1 Then
            strTemp = UCase(strTemp)
        ElseIf CharCase = 2 Then
            strTemp = StrConv(strTemp, vbProperCase)
        End If
        If CharCase = 1 Or CharCase = 2 Then
            strTemp = Replace(strTemp, ChrW(911), ChrW(937))
            strTemp = Replace(strTemp, ChrW(910), ChrW(933))
            strTemp = Replace(strTemp, ChrW(905), ChrW(919))
            strTemp = Replace(strTemp, ChrW(906), ChrW(921))
            strTemp = Replace(strTemp, ChrW(904), ChrW(917))
            strTemp = Replace(strTemp, ChrW(908), ChrW(927))
            strTemp = Replace(strTemp, ChrW(902), ChrW(913))
            If CharCase = 1 Then strTemp = Replace(strTemp, ChrW(962), ChrW(931))
        End If
        NumToWordsWithMoreDecimals = strTemp
    
End Function
Κατόπιν στο πεδίο της φόρμας "NumberInWords" χρησιμοποίησε τον τύπο:

=IIf([poso] Is Null;Null;NumToWordsWithMoreDecimals([Poso];[OptCharCase];[ChckShowCur]))


Με τις αναγραφόμενες αλλαγές θα μπορούν να μετατρέπονται και αριθμοί που
περιέχουν περισσότερα από 2 δεκαδικά ψηφία.

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

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 11-02-12 στις 20:01.
Απάντηση με παράθεση
  #3  
Παλιά 11-02-12, 15:58
Όνομα: Χρήστος Φ.
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 20-12-2010
Περιοχή: Θεσσαλονίκη
Μηνύματα: 498
Προεπιλογή

Κάπου έχω πρόβλημα:
0,3473 € ---> Μηδέν Και ΤρειΣ ΧιλιάδεΣ Τετρακόσια Εβδομήντα Τρία

Και κάτι άλλο: η συνάρτηση μπορεί να "κοιτάει" τον αριθμό ΜΕΤΑ την στρογγυλοποίηση (πχ 0,3273-->0,35) και να γράφει 0 Ευρώ και 35 Λεπτά;

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

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

Όσο για τη στρογγυλοποίηση δεν σε κατάλαβα.

Από τη μια θέλεις να εμφανίζεις περισσότερα δεκαδικά και από την άλλη να τα στρογγυλοποιείς σε 2;;;

Αν θέλεις να στρογγυλοποιήσεις τα ποσά σου μπορείς να χρησιμοποιήσεις:

=IIf([poso] Is Null;Null;NumToWords(Round([Poso];2);[OptCharCase];[ChckShowCur]))

που σημαίνει ότι δεν θα χρειαστείς τη συνάρτηση NumToWordsWithMoreDecimals από το προηγούμενο μήνυμα.

Οποιαδήποτε άλλη αλλαγή που έχει σχέση με την εμφάνιση θα πρέπει να την κάνεις τροποποιώντας τον τύπο.

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #5  
Παλιά 11-02-12, 20:23
Όνομα: Χρήστος Φ.
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 20-12-2010
Περιοχή: Θεσσαλονίκη
Μηνύματα: 498
Προεπιλογή

Θα μελετήσω αυτό που μου λες!
Απάντηση με παράθεση
  #6  
Παλιά 11-02-12, 21:17
Όνομα: Χρήστος Φ.
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 20-12-2010
Περιοχή: Θεσσαλονίκη
Μηνύματα: 498
Προεπιλογή

Τάσο δεν τα καταφέρνω, αλλά έχω μια δυο παρατηρήσεις.
1. Θέλω η συνάρτηση να δίνει ολογράφως Το Πρώτο Γράμμα Κάθε Λέξης Κεφαλαίο. (καμμιά άλλη επιλογή!)
2. Να Κοιτάει ένα πεδίο και ανεξάρτητα απ' το πλήθος των δεκαδικών ψηφίων , Να κάνει στρογγυλοποίηση σε 2 δεκ. ψηφία και να δίνει το κείμενο
πχ 2,34 να δίνει 2 ευρώ και τριαντα τέσσερα λεπτά
αλλά και
2,346 να δίνει 2 ευρώ και τριάντα πέντε λεπτά.
Συγνώμη ρε Τάσο αν σε κούρασα, αλλά στηρίζομαι στην βοήθειά σου!
Η φόρμα που θα δουλέψεις είναι η TotalPriceofOrders2Sub

Τελευταία επεξεργασία από το χρήστη Χρήστος : 16-10-16 στις 19:57.
Απάντηση με παράθεση
  #7  
Παλιά 11-02-12, 21:46
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.028
Προεπιλογή

Χρήστο

1. Άνοιξε το συνημμένο που μόλις ανέβασες.

2. Στην καρτέλα Εξωτερικά δεδομένα πάτησε το κουμπί Access όπου με τη βοήθεια του οδηγού
θα μπορέσεις να εισάγεις τη λειτουργική μονάδα "mdlFunc" από το πρώτο αρχείο που ανέβασες. Αποθήκευσε.

3. Στην προέλευση στοιχείου ελέγχου του πεδίου NumberInWords της φόρμας TotalPriceofOrders2Sub πέρασε το παρακάτω:

=IIf([TotalPrice] Is Null;Null;NumToWords(Round([TotalPrice];2);2))



Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 11-02-12 στις 22:08.
Απάντηση με παράθεση
  #8  
Παλιά 11-02-12, 22:07
Όνομα: Χρήστος Φ.
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 20-12-2010
Περιοχή: Θεσσαλονίκη
Μηνύματα: 498
Προεπιλογή

Φίλε Τάσο σ' ευχαριστώ για την άμεση ανταπόκριση.
Λειτουργεί όπως ακριβώς θέλω!!
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[Συναρτήσεις] Μετατροπή αριθμού σε κείμενο taseftim Excel - Ερωτήσεις / Απαντήσεις 3 23-06-20 19:21
Μετατροπή ποσού ολογραφώς γιώργοςΚ Access - Ερωτήσεις / Απαντήσεις 2 17-07-15 00:28
[ Πρόσθετα ] μετατροπή αριθμού σε κείμενο rmaria Excel - Ερωτήσεις / Απαντήσεις 2 08-02-14 17:27
[Συναρτήσεις] Μετατροπή αριθμού σε κείμενο mitsodou Excel - Ερωτήσεις / Απαντήσεις 10 25-05-11 09:12
[Συναρτήσεις] Μετατροπή ημερομηνίας σε κείμενο PanosPan Excel - Ερωτήσεις / Απαντήσεις 15 02-12-10 18:30


Η ώρα είναι 06:01.