Η σελίδα μας αναβαθμίστηκε, γι' αυτό τον λόγο τα μέλη μας θα πρέπει να ζητήσουν νέο κωδικό πρόσβασης από την υπηρεσία "Αποστολή κωδικού πρόσβασης".
Εάν το email με τον νέο κωδικό δεν έρθει στο inbox κοιτάξτε και στο spam folder. Ο server είναι φρέσκος και δεν έχει το reputation που του αξίζει.

Αριθμητική τιμή σε ολογράφως

Συζητήσεις για την τοπική βάση δεδομένων Access της Microsoft

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
krigas7
Δημοσιεύσεις: 15
Εγγραφή: 27 Σεπ 2005 14:51
Τοποθεσία: ΧΑΛΚΙΔΑ

Αριθμητική τιμή σε ολογράφως

Δημοσίευση από krigas7 » 27 Σεπ 2005 14:57

Αγαπητε μου φίλε.
Είμαι νέος στο forum
Ασχολούμε με προγραμματισμός σε περιβάλλον Access και μακροεντολές
Είμαι νέος ακόμη στο χώρο της VBasic

Θέλω σε πλαίσιο φόρμας στην Access να μου μετατρέπει την αριθμητική τιμή ευρώ σε ολογράφως. Π.Χ. 51 E σε (πεντήντα ένα ευρώ)

Μήπως θα μπορούσε να με βοήθήσεις;
Σε ευχαριστώ

Άβαταρ μέλους
alkisg
Δημοσιεύσεις: 265
Εγγραφή: 03 Ιουν 2005 11:53
Τοποθεσία: Ιωάννινα
Επικοινωνία:

Αριθμητική τιμή σε ολογράφως

Δημοσίευση από alkisg » 27 Σεπ 2005 21:11

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

Ο παρακάτω κώδικας είναι σε VBA, υποθέτω ότι θα μπορείς να τον προσαρμόσεις σε Access ή σε ότι άλλο θες...

Κώδικας: Επιλογή όλων

Private Function Ολογράφως(ByVal ποσό As Long, Optional ByVal γένος As Integer = 0) As String
'Copyright (c) 2002 - alkisg
'Επιστρέφει ολογράφως το ποσό με ένα κενό στο τέλος του.
'Γένος: (-1 = Θηλυκό, 0 = Ουδέτερο, 1 = Αρσενικό
  Dim Μονάδες, Δεκάδες, Εκατοντάδες, Μύριο, Μύρια As Variant
  Dim μ As Integer, δ As Integer, ε As Integer
  Dim μρ As Integer, εμ As Integer, γ As Integer     'μρ = ΜύΡια, εμ = Εκατοντάδες Μυρίων, γ = Γένος
  Dim ολο As String
  
  Μονάδες = Array("", "ένα ", "δύο ", "τρία ", "τέσσερα ", "πέντε ", "έξι ", _
   "επτά ", "οκτώ ", "εννιά ", "δέκα ", "έντεκα ", "δώδεκα ", "δεκατρία ")
  Δεκάδες = Array("", "δεκα", "είκοσι ", "τριάντα ", "σαράντα ", _
   "πενήντα ", "εξήντα ", "εβδομήντα ", "ογδόντα ", "εννενήντα ")
'Οι Εκατοντάδες ορίζονται ως πίνακας (0 To 2)(0 To 10) ώστε να περιλαμβάνουν και τα τρία γένη
  Εκατοντάδες = Array( _
   Array("", "εκατόν ", "διακόσιες ", "τριακόσιες ", "τετρακόσιες ", _
    "πεντακόσιες ", "εξακόσιες ", "επτακόσιες ", "οκτακόσιες ", "εννιακόσιες ", "χίλιες "), _
   Array("", "εκατόν ", "διακόσια ", "τριακόσια ", "τετρακόσια ", _
    "πεντακόσια ", "εξακόσια ", "επτακόσια ", "οκτακόσια ", "εννιακόσια ", "χίλια "), _
   Array("", "εκατόν ", "διακόσιοι ", "τριακόσιοι ", "τετρακόσιοι ", _
    "πεντακόσιοι ", "εξακόσιοι ", "επτακόσιοι ", "οκτακόσιοι ", "εννιακόσιοι ", "χίλιοι "))
  Μύριο = Array("", "", "ένα εκατομμύριο ", "ένα δισεκατομμύριο ", "ένα τρισεκατομμύριο ")
  Μύρια = Array("", "χιλιάδες ", "εκατομμύρια ", "δισεκατομμύρια ", "τρισεκατομμύρια ")
  
  If ποσό = 0 Then
    Ολογράφως = "μηδέν "
    Exit Function
  End If
  ολο = ""
'Ανάλυση ανά εκατοντάδες "Μυρίων"
  For μρ = 3 To 0 Step -1
    If μρ = 0 Then                                            'Μέχρι το 999 χρησιμοποιείται το γένος
      γ = γένος
    ElseIf μρ = 1 Then                                              'Οι χιλιάδες είναι πάντα θηλυκές
      γ = -1
    Else                                               'Τα εκατομμύρια και πάνω είναι πάντα ουδέτερα
      γ = 0
    End If
    εμ = ποσό \ (1000 ^ μρ) Mod 1000
    If εμ = 1 And μρ <> 0 Then                                     'Π.χ. χίλιοι ή ένα δισεκατομμύριο
      If μρ = 1 Then
        ολο = ολο & Εκατοντάδες&#40;γένος + 1&#41;&#40;10&#41;  'Ειδικά στα χίλια θέλουμε το αληθινό γένος, όχι το γ
      Else
        ολο = ολο & Μύριο&#40;μρ&#41;
      End If
    ElseIf εμ = 100 Then                                                        'Χωρίς το τελικό "ν"
      ολο = ολο & "εκατό "
    ElseIf εμ <> 0 Then                                               'Για εμ = 0 δεν μπαίνει τίποτα
'Ολογράφως κάθε εκατοντάδα "Μυρίων"
      ε = εμ \ 100
      ολο = ολο & Εκατοντάδες&#40;γ + 1&#41;&#40;ε&#41;            'Είναι Array από Array και όχι δισδιάστατο Array
      δ = εμ Mod 100                                  'Πρώτα απομόνωσε και τις μονάδες &#40;μέχρι το 99&#41;
      If δ >= 10 And δ <= 13 Then                  'Επειδή μέχρι το δεκατρείς είναι ειδική περίπτωση
        If δ = 13 And γ <> 0 Then
          ολο = ολο & "δεκατρείς "                                'Ειδική περίπτωση επειδή έχει τόνο
        Else
          ολο = ολο & Μονάδες&#40;δ&#41;
        End If
      Else
        δ = δ \ 10                                                      'Σωστή απομόνωση των δεκάδων
        μ = εμ Mod 10
        ολο = ολο & Δεκάδες&#40;δ&#41;
        If μ = 1 And γ = -1 Then
          ολο = ολο & "μία "
        ElseIf μ = 1 And γ = 1 Then
          ολο = ολο & "ένας "
        ElseIf μ = 3 And γ <> 0 Then
          ολο = ολο & "τρεις "
        ElseIf μ = 4 And γ <> 0 Then
          ολο = ολο & "τέσσερις "
        Else
          ολο = ολο & Μονάδες&#40;μ&#41;
        End If
      End If
      ολο = ολο & Μύρια&#40;μρ&#41;       'Αφού γράφηκαν οι εκατοντάδες προστίθεται και το "εκατομμύρια" κτλ
    End If
  Next μρ
  Ολογράφως = ολο                          'Πάντα μένει ένα κενό από δεξιά. Συνήθως αυτό χρειάζεται.
End Function
[/code]

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Αριθμητική τιμή σε ολογράφως

Δημοσίευση από skeftomilos » 28 Σεπ 2005 15:39

Απίστευτος ο κώδικας με τα ελληνικά keywords! :D
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
alkisg
Δημοσιεύσεις: 265
Εγγραφή: 03 Ιουν 2005 11:53
Τοποθεσία: Ιωάννινα
Επικοινωνία:

Αριθμητική τιμή σε ολογράφως

Δημοσίευση από alkisg » 28 Σεπ 2005 20:35

Πάντως σε όσους δείχνω κώδικα με ελληνικούς identifiers μου λένε ότι είναι πιο κατανοητός! Ζήτω λοιπόν το Delphi 2005, η Java, η VBA, η Javascript, η C# και όσες άλλες γλώσσες υποστηρίζουν ελληνικά!

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Αριθμητική τιμή σε ολογράφως

Δημοσίευση από skeftomilos » 02 Οκτ 2005 00:35

Κώδικας: Επιλογή όλων

...
<script type="text/javascript">
  var δ;
</script>
Εικόνα

Οι σύγχρονοι browsers φαίνονται να αποδέχονται χωρίς αντίρρηση τους ελληνικούς identifiers, αλλά δεν ισχύει το ίδιο για τον IE5. Και απ' ό,τι λένε οι στατιστικές υπάρχουν ακόμα κάμποσοι IE5 που κυκλοφορούν στο Internet (περίπου 3%) οπότε ... αυτοσυγκράτηση για κανα-δυό χρόνια ακόμα! :)
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Αριθμητική τιμή σε ολογράφως

Δημοσίευση από dva_dev » 02 Οκτ 2005 04:57

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

Άβαταρ μέλους
alkisg
Δημοσιεύσεις: 265
Εγγραφή: 03 Ιουν 2005 11:53
Τοποθεσία: Ιωάννινα
Επικοινωνία:

Αριθμητική τιμή σε ολογράφως

Δημοσίευση από alkisg » 02 Οκτ 2005 16:46

Εξαρτάται κατά πόσο συνεργάζεσαι με ξένους και κατά πόσο με Έλληνες... Φαντάζεσαι να θες να εξηγήσεις τον κώδικά σου σε 100 Έλληνες και κανένας τους να μην ξέρει γρι αγγλικά; :-)
[μου έχει τύχει αρκετές φορές να πρέπει να εξηγήσω τι σημαίνει inc, count, proc, ptr κτλ]

Όποτε υπάρχει περίπτωση να δει και "ξένο μάτι" τον κώδικα, ΟΚ, πάσο, χρησιμοποιώ αγγλικά, αλλά π.χ. την μετατροπή σε ευρώ ολογράφως στα ελληνικά, ποιος ξένος θα την ήθελε;

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Αριθμητική τιμή σε ολογράφως

Δημοσίευση από skeftomilos » 03 Οκτ 2005 05:06

Το χειρότερό μου πάντως είναι identifiers greeklish. Ορισμένοι λένε ότι έτσι ξεχωρίζουν καλύτερα τις δικές τους ρουτίνες από το υποκείμενο API. Βάσιμο το επιχείρημα, απλά σε μένα δεν αρέσουν καθόλου τα greeklish. :P
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

st3F0s
Δημοσιεύσεις: 17
Εγγραφή: 08 Νοέμ 2005 16:37

Αριθμητική τιμή σε ολογράφως

Δημοσίευση από st3F0s » 18 Μάιος 2006 16:29

Γεια σας Φίλοι/ες.

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

Ευχαριστώ εκ των προτέρων.

ABLADE
Δημοσιεύσεις: 110
Εγγραφή: 18 Ιούλ 2007 18:55
Τοποθεσία: Θεσσαλονίκη
Επικοινωνία:

Αριθμητική τιμή σε ολογράφως

Δημοσίευση από ABLADE » 20 Ιούλ 2007 15:55

Χαίρετε!!!
νέος και εγώ στο foroum αλλα και στην access. Αλήθεια πως μπορώ να μετατρέψω τον κώδικα σε Access? Μήπως κάποιος το έκανε ήδη να μου το στείλει?
Ευχαριστώ

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Αριθμητική τιμή σε ολογράφως

Δημοσίευση από dva_dev » 20 Ιούλ 2007 16:42

Υπάρχουν έτοιμες υλοποιήσεις αν ψάξεις για VBA+Ολογράφως στο google.
Ενδεικτικά
http://www.dotnetzone.gr/cs/forums/thread/13015.aspx
http://www.dotnetzone.gr/cs/forums/1933/ShowPost.aspx

Ισως χρειαστεί να δεις λίγο τον κώδικα, που προσθέτει την λέξη ευρώ και να την αφαιρέσεις.

Απάντηση

Επιστροφή στο “MS Access”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες