Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2018
    Messaggi
    10

    [ACCESS] riunire più funzioni UPDATE

    Ciao a tutti, dovrei sostituire del testi allinterno di campi in una tabella, uso le funzione update e replace per fare questo.
    Dato che devo fare più sostituzioni, uso più volte gli stessi comandi ovvero:

    [Codice Access]

    strsql = "update TotDati set Articolo = replace(articolo,'Mart','LOR')"
    DoCmd.RunSQL strsql


    strsql = "update TotDati set Articolo = replace(articolo,'art',' cart')"
    DoCmd.RunSQL strsql


    strsql = "update TotDati set Articolo = replace(articolo,'brt',' fart')"
    DoCmd.RunSQL strsql



    [/Codice Access]



    non c'é modo di raggruppare il comando in modo che in un solo passaggio mi faccia tutte le sostituzioni che mi servono?

    Così come ho fatto io, per ogni istruzione che lancio, mi passa tutta la tabella, ed essendo molto grande ci impiega un pochetto; quando deve elaborare più volte la tabella, ci vuole un sacco di tempo .

  2. #2
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Dei replace nidificati ???? ma immagino che non migliora di molto .......
    ......
    replace((replace((replace(articolo,'Mart','LOR')),'art',' cart')),'brt',' fart')"

    Poi avrai anche grossi problemi se ripeti la istruzione
    Il "art" che è diventato " cart" alla seconda ripetizione diventa " c cart"

    A parer mio ti occorre una funzione specifica,
    ma stiamo sconfinando dai "DataBase" per entrare in "Windows e Software"
    Magari riproponi la domanda nell'altra sezione

    .

    Ultima modifica di nman; 22-07-2018 a 07:37

  3. #3
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,344
    Poi dipende. Se è una cosa fatta una volta sola puoi lasciare com'è. Se devi fare tutti i giorni è un altro discorso.

    Se l'SQL non ti consente di modificare in una volta sola e che devi fare il rimpiazzamento spesso allora forse ti conviene aggiungere un campo "modificato" tipo integer con valore iniziale 0.

    Mettiamo che tu abbia 3 rimpiazzamenti da fare :

    codice:
    strsql = "update TotDati set Articolo = replace(articolo,'Mart','LOR'), modificato = 1 where modificato < 3"
     DoCmd.RunSQL strsql
    
    
     strsql = "update TotDati set Articolo = replace(articolo,'art',' cart'), modificato = 2 where modificato < 3"
     DoCmd.RunSQL strsql
    
    
     strsql = "update TotDati set Articolo = replace(articolo,'brt',' fart'), modificato = 3 where modificato < 3"
     DoCmd.RunSQL strsql
    In questo modo prendi solo i record che non sono mai stati presi in conto. Se metti un indice sul campo "modificato" sarà addirittura più veloce.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2018
    Messaggi
    10
    Grazie per l'aiuto, in realta i valori che ho messo erano solo per esempio, non sono in realtà quelli.
    Funziona perfettamente.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.