Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Tabellenwert (.2, ..3, usw) ändern (2, 3)

Begonnen von Atuatuca, Oktober 10, 2015, 21:27:50

⏪ vorheriges - nächstes ⏩

Atuatuca

Hallo Access-O-Maniacs,

suche eine bessere Lösung um Werte (.2, ..3, ...4) in 2, 3, 4 umzuwandeln. Es soll bis ins unendliche gehen und nicht so wie im unteren Code bis .........10)

       'hier wird der Wert in der Spalte "Level" in eine reale Zahl um gewandelt
        Set db = CurrentDb                 ' Datenbank definieren
        Set rs = db.OpenRecordset("tblImport_Stuecklisten_neu") 'Tabelle definieren und öffnen
       
        If Not rs.EOF Then rs.MoveFirst         ' gehe zum ersten Datensatz
            Do While Not rs.EOF
                If rs.Fields("Level") = "0,2" Then
                    rs.Edit
                    rs.Fields("Level") = "2"
                    rs.Update
                End If
                     
                If rs.Fields("Level") = "..3" Then
                    rs.Edit
                    rs.Fields("Level") = "3"
                    rs.Update
                End If
               
' oberes wiederholt sich bis
               
                If rs.Fields("Level") = ".........10" Then
                    rs.Edit
                    rs.Fields("Level") = "10"
                    rs.Update
                End If
               
               rs.MoveNext
           
            Loop
       
       
            rs.Close
            Set rs = Nothing
            Set db = Nothing


Danke schon mal

el_gomero

Hallo,

dazu reicht eine Aktualisierungsabfrage in der die zu ersetzenden Zeichen durch "" ersetzt werden. ggf anschliessend in ein Feld vom Typ Zahl überführen.


Update tblImport_Stuecklisten_neu
SET Level = replace([Level],".","")
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

Atuatuca

Moin Jürgen (El Gomero)

habe dein Code genommen und noch ein wenig manipuliert .-)

                CurrentDb.Execute "UPDATE tblImport_Stuecklisten_neu " & _
                                "SET Level = Replace([Level], ".", "") "


Leider ist da ein Syntaxfehler drin, aber ich sehe ihn nicht.

Gruss
Atuatuca (von der Ostseeküste)

Atuatuca

#3
falscher Anhang zu diesem Beitrag

el_gomero

was ich dir gepostet habe ist ein SQL-Statement und kann direkt in eine Abfrage eingegeben werden, dazu braucht es keinen Code.

Wenn einer benötigt wird, wird beim Zusammenbau des SQL-Strings ein Anführungszeichen " durch ein einfaches ' maskiert.
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

Atuatuca

Hallo Jürgen,

habe

UPDATE tblImport_Stuecklisten_neu SET tblImport_Stuecklisten_neu.[Level] = Replace([Level],".","");

in die Abfrage qryLevel_Normalisieren reingepackt und rufe in mit:

       'hier wird der Wert in der Spalte "Level" in eine reale Zahl um gewandelt
        Set db = CurrentDb                 ' Datenbank definieren
        Set rs = db.OpenRecordset("tblImport_Stuecklisten_neu") 'Tabelle definieren und öffnen
       
        If Not rs.EOF Then rs.MoveFirst         ' gehe zum ersten Datensatz
            Do While Not rs.EOF
                If rs.Fields("Level") = "0,2" Then
                    rs.Edit
                    rs.Fields("Level") = "2"
                    rs.Update
                End If
                 
                DoCmd.OpenQuery "qryLevel_Normalisieren", acViewNormal
                                   
                'Hier wird für jeden Datensatz eine ID generiert aus verschiedenen Spalten der Tabelle
                rs.Edit                               ' Wenn Daten im Datensatz geändert werden sollen
                rs.Fields("[ID_Temp_Stueckliste_Neu]") = rs!ID_Stueckliste_Neu & "_" & rs!Stueckliste & "_" & rs!Sachnummer & "_REV_[0" & rs![Stü-ÄZ] & "]"
                rs.Update                             'Änderungen am / neuen Datensatz speichern
                           
                'Hier wird die Sachnummer und die Revisionsnummer in eine neue Spalte geschrieben
                rs.Edit                               ' Wenn Daten im Datensatz geändert werden sollen
                rs.Fields("[SachNr_Rev]") = rs!Sachnummer & "-0" & rs![Stü-ÄZ]
                rs.Update                             'Änderungen am / neuen Datensatz speichern
               
                rs.MoveNext
           
            Loop
       
       
            rs.Close
            Set rs = Nothing
            Set db = Nothing


Auf.

Leider hängt er in eine Endlosschleife

Atuatuca

Hallo Jürgen,

problem der Endlosschleife gelöst und die Werte in Spalte Level werden berichtigt wie gewünscht  8)

      'hier wird der Wert in der Spalte "Level" in eine reale Zahl um gewandelt
        Set db = CurrentDb                 ' Datenbank definieren
        Set rs = db.OpenRecordset("tblImport_Stuecklisten_neu") 'Tabelle definieren und öffnen
       
        DoCmd.OpenQuery "qryLevel_Normalisieren", acViewNormal
       
        If Not rs.EOF Then rs.MoveFirst         ' gehe zum ersten Datensatz
            Do While Not rs.EOF
                If rs.Fields("Level") = "0,2" Then
                    rs.Edit
                    rs.Fields("Level") = "2"
                    rs.Update
                End If
                 
               
               
                                   
                'Hier wird für jeden Datensatz eine ID generiert aus verschiedenen Spalten der Tabelle
                rs.Edit                               ' Wenn Daten im Datensatz geändert werden sollen
                rs.Fields("[ID_Temp_Stueckliste_Neu]") = rs!ID_Stueckliste_Neu & "_" & rs!Stueckliste & "_" & rs!Sachnummer & "_REV_[0" & rs![Stü-ÄZ] & "]"
                rs.Update                             'Änderungen am / neuen Datensatz speichern
                           
                'Hier wird die Sachnummer und die Revisionsnummer in eine neue Spalte geschrieben
                rs.Edit                               ' Wenn Daten im Datensatz geändert werden sollen
                rs.Fields("[SachNr_Rev]") = rs!Sachnummer & "-0" & rs![Stü-ÄZ]
                rs.Update                             'Änderungen am / neuen Datensatz speichern
               
                rs.MoveNext
           
            Loop
       
       
            rs.Close
            Set rs = Nothing
            Set db = Nothing


Danke für deine Unterstützung. Bleibt nur noch das Problem mit den Stücklisten .-)

Gruss
Atuatuca (von der kalten Ostsee)