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/4677-erotima-enimerosis-allagi-protoy-grammatos.html)

sakis297 19-09-17 11:39

Ερώτημα ενημέρωσης - Αλλαγή πρώτου γράμματος
 
Γεια σε όλους!
Σε έναν πίνακα, έχω ένα πεδίο "Κωδικός" που είναι της μορφής Α1-2017-01.
Με κανόνα επικύρωσης το πρώτο γράμμα περιορίζεται στα Α, Β, Γ, Δ, Ε, Σ και G.
Θέλω να φτιάξω ένα ερώτημα ενημέρωσης που να μετατρέπει το Α σε Β, το Β σε Γ, το Γ σε Δ, το Δ σε Ε, το Σ σε G και το G να το αφήνει όπως είναι. Το υπόλοιπο μέρος του κωδικού θα παραμένει το ίδιο. Ελπίζω να μην είναι δύσκολο.
Ευχαριστώ εκ των προτέρων.

kapetang 19-09-17 13:52

Καλησπέρα

Χρειάζονται κάποιες διευκρινίσεις. Για παράδειγμα:

1) Το ερώτημα θα το τρέξουμε μία φορά ή περισσότερες;

2) Στην πρώτη ενημέρωση όσοι κωδικοί αρχίζουν από Ε πώς θα ενημερωθούν;

3) Αν το ερώτημα θα το τρέχουμε πολλές φορές, σε κάθε εκτέλεση, τί αλλαγές θα κάνει;

sakis297 19-09-17 14:02

Γεια σας!
Ευχαριστώ πολύ για την ανταπόκριση.
1) Το ερώτημα θα τρέχει μια φορά τον χρόνο.
2) Το Ε θα γίνεται Σ.
3) Μόνο το πρώτο γράμμα θα αλλάζει, με τον τρόπο που αναφέρω παραπάνω. Νομίζω όμως ότι οι αλλαγές πρέπει να γίνονται με συγκεκριμένη σειρά, ώστε να μη δημιουργηθούν διπλότυπα. Δηλαδή, πρέπει να αλλάζουν πρώτα οι κωδικοί που ξεκινάνε με Σ και στη θέση του Σ να μπαίνει το G, μετά οι κωδικοί που ξεκινάνε με Ε και να μετατρέπεται το Ε σε Σ και συνεχίζουμε αναλόγως με το Δ, Γ, Β και Α.

kapetang 19-09-17 17:54

Καλησπέρα

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

1) Τη δημιουργία 6 ερωτημάτων με την παρακάτω μορφή.

Κώδικας:

UPDATE Table1 SET Table1.Κωδικός = "Σ" & Mid([Κωδικός],2,20)
WHERE Left([Κωδικός],1)="Ε";

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

2) Να χρησιμοποιήσουμε κώδικα.

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

Κώδικας:

Private Sub cmdUpdate_Click()
    'Μάλλον θα χρειαστεί αναφορά στη βιβλιοθήκη Microsoft DAO 2.8 Object Library
    'Μενού Tools > References ....> τσεκάρισμα βιβλιοθήκης
   
    Dim strStart As Variant, strTo As Variant
    Dim i As Long, rs  As dao.Recordset, strSQL As String
   
    strStart = Array("Σ", "Ε", "Δ", "Γ", "Β", "Α")
    strTo = Array("G", "Σ", "Ε", "Δ", "Γ", "Β")
   
    For i = 0 To UBound(strStart)
        'Το Table1 να αντικατασταθεί με το πραγματικό όνομα του πίνακα
        strSQL = "Select [Κωδικός] From Table1 Where  Left([Κωδικός],1)='" & strStart(i) & "'"
        Set rs = CurrentDb.OpenRecordset(strSQL)
        If rs.RecordCount Then
            Do Until rs.EOF
                rs.Edit
                rs![Κωδικός] = strTo(i) & Mid(rs![Κωδικός], 2)
                rs.Update
                rs.MoveNext
            Loop
        End If
    Next
    MsgBox "Η ενημέρωση ολοκληρώθηκε."
exitSub:
    Exit Sub
errHandler:
    MsgBox Err.Description, vbCritical, "Error #" & Err.Number
End Sub


sakis297 19-09-17 19:20

Σας ευχαριστώ πάρα πολύ!!!


Η ώρα είναι 12:40.

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


Search Engine Optimization by vBSEO 3.3.2