[MS Access] Sostituire un carattere in tutta la tabella

  • Creatore Discussione Creatore Discussione Palicare
  • Data di inizio Data di inizio

Palicare

Nuovo Utente
6 Dic 2019
1
0
1
Ciao, ho questo problema che non riesco a risolvere:
Come faccio a sostituire un carattere con un'altro all'interno di tutta una tabella?
Devo farlo con delle righe di comando e non con il pulsante cerca e trova ovviamente.
Premetto che la tabella ha circa 90 campi e migliaia di valori.
 
Ciao,
prova a usare questo codice
Codice:
Dim OldTxt As String
Dim NewTxt As String
Dim mySQL As String

OldTxt = "pippo"
NewTxt = "paperino"
    
mySQL = "UPDATE NomeTabella SET NomeTabella.NomeCampo ='" & NewTxt & "' WHERE NomeTabella.NomeCampo ='" & OldTxt & "';"

DoCmd.RunSQL mySQL
 
all'interno di tutta una tabella
Leggendo meglio vedo che la richiesta riguarda tutti i campi della tabella.
Allora prova cosi
Devi cambiare solo OldTxt , NewTxt e NOME_TABELLA
Codice:
Option Compare Database

Sub sostituisci_campi_tabella()

    Dim OldTxt As String
    Dim NewTxt As String
    Dim DB As DAO.Database
    Dim Tabella As Object
 
    Set DB = CurrentDb
 
    OldTxt = "PIPPO"
    NewTxt = "PAPERINO"
 
    Set Tabella = DB.OpenRecordset("NOME_TABELLA")
    For i = 0 To Tabella.Fields.Count - 1
    Tabella.MoveFirst
        Do Until Tabella.EOF
         Tabella.Edit
            If Tabella.Fields(Tabella(i).Name) = OldTxt Then
                Tabella.Fields(Tabella(i).Name) = NewTxt
                Tabella.Update
            End If
            Tabella.MoveNext
        Loop
    Next
 
    Tabella.Close
 
    Close

    Set DB = Nothing
    Set Tabella = Nothing


    MsgBox "Fatto!", vbInformation, "NOTIFICA"
End Sub
 
ciao, scusatemi se riprendo un post vecchio, ma ho un problema similare a quello risolto da Ges.
Nella stessa tabella devo, ogni volta che faccio l'importazione di dati da altra tabella, modificare il contenuto di un campo. Poniamo il caso che in ingresso ho PIPPO, PLUTO, TOPOLINO e MINNIE, devo cambiarli rispettivamente con PAPERINO, QUI, QUO e QUA.
Se associo il codice postato ad un pulsante, per fare tutte le operazioni di sostituzione necessarie devo ripetere OldTxt e NewTxt più volte?
 
provato, ma non funziona, c'è qualche cosa che sbaglio.
Ecco il codice che ho utilizzato, modificando quello postato prima:


Dim OldTxt As String
Dim NewTxt As String
Dim DB As DAO.Database
Dim Tabella As Object

Set DB = CurrentDb

If OldTxt = "b4_Studio_informatizzazione_dati_manutenzione_programmata" Then
NewTxt = "5.2.4 Studio e informatizzazione dei dati per la manutenzione programmata"

ElseIf OldTxt = "b2_Elaborazione_report_schede_relazioni_tecniche_programmi_manutenzione" Then
NewTxt = "5.2.2 Elaborazione di report, schede, relazioni tecniche e programmi di manutenzione"

ElseIf OldTxt = "b3_Supporto_progettazione" Then
NewTxt = "5.2.3 Supporto alla progettazione, controllo e documentazione degli interventi di manutenzione programmata"

ElseIf OldTxt = "B1_Attività_ispettive_individuazione_criticità" Then
NewTxt = "5.2.1Attività ispettive e individuazione delle criticità"
End If


Set Tabella = DB.OpenRecordset("attività_monitoraggio_pompei")
For i = 0 To Tabella.Fields.Count - 1
Tabella.MoveFirst
Do Until Tabella.EOF
Tabella.Edit
If Tabella.Fields(Tabella(i).Name) = OldTxt Then
Tabella.Fields(Tabella(i).Name) = NewTxt
End If

Tabella.MoveNext
Loop
Next

Tabella.Close
Close

Set DB = Nothing
Set Tabella = Nothing

MsgBox "Fatto!", vbInformation, "NOTIFICA"

End Sub
 
Quel codice precedente è per poter modificare lo stesso dato in più campi mentre tu eventualmente devi modificare più contenuti ma in un solo campo, quale è il suo Nome ?
 
ciao, sono Marco. La mia necessità è cambiare il contenuto di un solo campo della tabella; nel mio caso specifico quel campo può contenere solo ed esclusivamente quattro diversi contenuti (quelli che ho elencato come oldtxt) che vanno sostituiti sempre con i quattro nuovi (newtxt). La tabella che importo ha sempre gli old e ad ogni nuova importazione devo cambiare con i new.
Come posso fare?
 
Questo è il codice:
Codice:
Dim arrDatiRicerca()
Dim arrDatiSostituzione()
Dim bytCiclo As Byte
    arrDatiRicerca = Array("b4_Studio_informatizzazione_dati_manutenzione_programmata", "b2_Elaborazione_report_schede_relazioni_tecniche_programmi_manutenzione", "b3_Supporto_progettazione", "B1_Attività_ispettive_individuazione_criticità")
    arrDatiSostituzione = Array("5.2.4_Studio_informatizzazione_dati_manutenzione_programmata", "5.2.2_Elaborazione_report_schede_relazioni_tecniche_programmi_manutenzione", "5.2.3_Supporto_progettazione", "5.2.1_Attività_ispettive_individuazione_criticità")
    For bytCiclo = 0 To UBound(arrDatiRicerca())
        CurrentDb.Execute "UPDATE NomeTuaTabella SET [tipologia attività] = Replace([tipologia attività],""" & arrDatiRicerca(bytCiclo) & """,""" & arrDatiSostituzione(bytCiclo) & """)"
    Next
 
Ultima modifica:

Discussioni simili