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/1730-orthotita-logariasmoi-deh.html)

chrisofos 17-03-12 12:51

Ορθότητα λογαριασμού ΔΕΗ
 
Καλησπέρα σε όλους!


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


Στον Ήφαιστο έχει τον παρακάτω κώδικα σε js και ήθελα αν είναι εύκολο να γίνει σε Αccess - φαντάζομαι είναι - αλλά...


ο κώδικας του Ήφαιστου:


Παίρνουμε τα πρώτα 11 ψηφία.
Διαιρούμε με το 11, με ακέραια διαίρεση, και κρατάμε το υπόλοιπο (διαίρεση modulo 11)
Εαν το υπόλοιπο είναι <10, τότε αυτό είναι το ψηφίο ελέγχου.
Εαν το υπόλοιπο είναι 10, τότε το ψηφίο ελέγχου είναι η μονάδα (1)

Παρατίθεται ο κώδικας σε Javascript, για διευκόλυνση σας :

function check_deh_id(deh_id)

{

if (deh_id.length!=12) return false;

var i=parseInt(deh_id.slice(0,11), 10) % 11;

if (i==10) i=1;

return deh_id.slice(11,12)==i ? true : false;
ΕΥΧΑΡΙΣΤΩ ΓΙΑ ΤΗΝ ΦΙΛΟΞΕΝΙΑ
ΧΡΗΣΤΟΣ ΣΟΦΙΑΔΗΣ

kapetang 18-03-12 09:47

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

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

1. Η πρώτη γίνεται με VBA και συγκεκριμένα με τη συνάρτηση:

Κώδικας:

Public Function chcNumDEH(x As Variant) As Variant
    '================================================================
    'Ελέγχει την εγκυρότητα του κωδικού πληρωμής των λογαριασμών ΔΕΗ
    '================================================================
    Dim j As Long
    If IsNull(x) Then
        chcNumDEH = Null
        Exit Function
    End If
    If Len(x) <> 12 Or Not IsNumeric(x) Then
        chcNumDEH = False
        Exit Function
    End If
    j = Left(x, 11) - Int(Left(x, 11) / 11) * 11
    If j = 10 Then j = 1
    chcNumDEH = j = Right(x, 1)
End Function

2. Η δεύτερη γίνεται με την ακόλουθη έκφραση της access:

Κώδικας:

Right([numDEH];1)=IIf(IIf(Len([numDEH])=12 And IsNumeric([numDEH]);
Left([numDEH];11)-Int(Left([numDEH],11)/11)*11;15)=10;1;
IIf(Len([numDEH])=12 And IsNumeric([numDEH]);
Left([numDEH];11)-Int(Left([numDEH];11)/11)*11;15))

Στην έκφραση ο κωδικός αποθηκεύεται στο πεδίο «numDEH»

Στο ερώτημα «qryTest» υπάρχουν και οι δύο λύσεις.

Φιλικά/Γιώργος

chrisofos 18-03-12 19:15

ΕΥΧΑΡΙΣΤΩ
 
1 Συνημμένο(α)
Σε ευχαριστώ για την βοήθεια στο Εxcel το είχα κάνει αλλά θέλω να βάλω τον κώδικα μέσα σε υπάρχουσα βάση που χρησιμοποιώ για τον Ήφαιστο.

Πάντως όπως και να χει ευχαριστώ.

Ευχαριστώ και πάλι.

Σοφιάδης Χρήστος

Στέλνω και το αρχείο στο Excel

Tasos 18-03-12 21:47

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

Φιλικά

Τάσος

chrisofos 19-03-12 19:05

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


Η ώρα είναι 18:09.

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


Search Engine Optimization by vBSEO 3.3.2