Da testo a data

di il
11 risposte

Da testo a data

Salve a tutti
vorrei riuscire , col vostro aiuto , a risolvere un problema di aggiornamento di un vecchio dbase che ho creato qualche anno fa e che ora vorrei interrogare .Quando creai le tabelle,al campo "data" associai il formato di tipo TESTO , pensando ( erroneamente) che era
più sbrigativo inserire il valore.Mi limitavo ad inserire la data nel formato "mmgg"per tutti i record dell'anno 2007( quindi 4 numeri )(per la tabella int2007) e nel formato "mm.gg."( 4 numeri più i punti)le date per l'anno 2008, (tabella int2008).
Capisco bene che non è ortodosso il modo con cui ho creato i campi in questione , avrei dovuto attribbuire al campo il formato "DATA", ma ormai la frittata è fatta ahahahahah. Quello che chiedo adesso è come riuscire a trasformare il campo data da TESTO al formato DATA , per poter meglio gestire procedure di ricerca e aggiornamento . Mi sono informato , leggendo in giro ,che ciò potrebbe essere possibile , creando una query di aggiornamento , utilizzando l'istruzione "Cdata", ma non sono all'altezza di eseguire la procedura , mi perdo inesorabilmente ... nei particolari anche minimi. Come uno che sta iniziando a imparare a camminare , basta che urto un sassolino( minima diffocltà) cado e mi blocco !!
Scusate se mi sono dilungato e per finire , riassumo il problema
la data visualizzata nella tabella "int2007" è per es.0101 ( per il giorno 1 di gennaio) e dovrei cambiarla in 01/01/2007.
nella tabella "int2008" è 01.01.( per il giorno1 di gennaio) e dovrei cambiarla sempre con il fornato data 01/01/2008.
Spero di essere stato chiaro , vi ringrazio per l'attenzione .

11 Risposte

  • Re: Da testo a data

    Prova a leggere qui
    https://support.office.com/it-it/article/Funzioni-di-conversione-tra-tipi-di-dati-8ebb0e94-2d43-4975-bb13-87ac8d1a2202
    http://forum.masterdrive.it/access-79/access-conversione-dati-testo-data-13666/
  • Re: Da testo a data

    Ciao Osvaldo
    grazie per la rapida risposta , avevo già visto le indicazioni che mi hai suggerito , ma francamente non so come agire.
    In particolare , io ho le date inserite con soli 4 numeri , per l'anno 2008 e con 4 numeri e due punti come separatori , per l'anno 2007,quindi penso che l'espressione vada leggermente modificata per le mie esigenze .
    Ti chiedo , comunque, se puoi suggerimi , passo passo , le varie operazioni che dovrei fare per modificare quelle date . Sarei molto grato a te o a chi ha la competenza , la voglia e il tempo per aiutarmi.
    ciao
  • Re: Da testo a data

    Che tu debba fare del lavoro via Codice è scontato... hai sbagliato all'inizio ed ora è indispensabile correggere, tieni presente che ci sono le Query Action, nel tuo caso UPDATE con le quali puoi modificare il dato contenuto...!

    Fatti una copia del database ed inizia a sperimentare queste Queries, ad esempio:
    
    UPDATE NomeTabella CAMPODATA=Left(CAMPODATA,2) & '/' & Right(CAMPODATA,2) & '/2008' WHERE LEN(CampoData)=4
    QUando hai capito cosa fa, e se funziona, poi passi agli altri casi.
  • Re: Da testo a data

    Io propongo una soluzione per "poveracci", ossia come farei anch'io.
    1) Io farei una serie di Trova/Sostituisci in modo tale da ficcare il simbolo "slash" tra le cifre
    2) Dopo aver ottenuto qualcosa come 01/01, continuerei con Trova/Sostituisci aggiungendo /2007
    3) Alle fine di tutti i tuoi Trova/Sostituisci, otterrai tutti valori del tipo gg/mm/aaaa. Io credo che a questo punto, la semplice modifica da campo di tipo Testo in campo di tipo Data/Ora dovrebbe riuscire facile. Altrimenti devi servirti delle funzioni apposite.
  • Re: Da testo a data

    Ciao ragazzi
    grazie per le risposte , ma mi rimangono ancora delle domande :
    per @Alex
    mi puoi spiegare più in dettaglio , dove inserire il codice che mi hai dato ?
    di quali Queries parli ?
    per Osvaldo:
    la tua soluzione per "poveracci" è sicuramente più comprensibile per me, ma c'è un particolare , il Trova/Sostituisci , dovrei farlo record per record ....e nelle due tabelle che vorrei correggere , ce ne sono circa 1000, se ci fosse un metodo per correggere in una unica passata tutti i record , sarebbe molto più veloce .
    Io intanto continuo a sperimentare su come risolvere il problema .
    grazie ancora per l'aiuto ( spero di averne ancora )e a presto.
  • Re: Da testo a data

    obyone ha scritto:


    ciao ragazzi
    grazie per le risposte , ma mi rimangono ancora delle domande :
    per @Alex
    mi puoi spiegare più in dettaglio , dove inserire il codice che mi hai dato ?
    di quali Queries parli ?...
    Quello che ti ho indicato è un costrutto SQL... comunemente chiamabile Query(della tipologia Action) devi eseguirlo, fallo come meglio ritieni, costruendo una Query ed inserendo il costrutto come SQL o creando una Query Action da QBE... non comrpendo cosa ti sfugge...
    Sai costruire una Query di Modifica dati da QBE...? Ecco quella... se non ti è chiarissimo, per questo apri l'help, leggi e poi smanetti un po finchè non comprendi il meccanismo...
  • Re: Da testo a data

    La soluzione di Alex si chiama QUERY DI AGGIORNAMENTO: leggi la guida in linea per capire di cosa si tratta e di come costruirla. Probabilmente la guida in linea ti propone la soluzione via "visualizzazione struttura". Alex ha proposto l'aggiornamento "in un colpo solo" e scrivendo direttamente l'SQL. Se non comprendi quella sintassi tutta insieme, puoi agire con varie query di aggiornamento con espressioni più semplici. Io ad esempio partirei dal fatto che mi aspetto a priori che tutti i campi abbiano una stringa di 4 caratteri. Poi analizziamo le piccole parti:
    Left(CAMPODATA,2)
    significa prendi il valore stringa e considera solo i 2 caratteri di CAMPODATA che stanno a SINISTRA
    Right(CAMPODATA,2)
    significa prendi il valore stringa e considera solo i 2 caratteri di CAMPODATA che stanno a DESTRA
    & è un simbolo di concatenazione
    "/" ti dice che puoi mettere il carattere slash (/) esattamente in mezzo ai due spezzoni di stringa che hai separato appunto con Left e Right.

    obyone ha scritto:


    il Trova/Sostituisci , dovrei farlo record per record
    Falso.
    Se gli dici Trova (Inizio campo) 01 e Sostituisci con 01/ Access sostituirà tutti quelli che iniziano per 01. Con un po' di pazienza e povera fantasia, ti accorgerai che questa operazione la dovrai fare 12 volte. Io di queste cose ne ho fatte spesso (e lo faccio tutt'ora) quando non ho voglia di ragionare sulle espressioni.
  • Re: Da testo a data

    Grazie ancora per le risposte .
    ho risolto solo parzialmente il mio problema. In pratica ho voluto seguire l'indicazione di @Alex , avventurandomi per sentieri che poco conoscevo . Dopo tante altre ricerche e tentativi , ho finalmente azzeccato la strada giusta , cioè.
    per la modifica del campo "data" con formato originale ( tipo testo)"xxxx" ( primi due caratteri per il giorno e gli altri per il mese ) , ho aperto una query SQL definizione dati , ed ho inserito il codice
    UPDATE interventi2008 SET data = Left(data,2) & '/' & Right(data,2) & '/2008'
    WHERE LEN(data)=4;
    e poi in struttura tabella , ho cambiato il tipo di dati ,per il campo "data" , da TESTO a DATA. Perfetto , ha funzionato .
    Il problema che riscontro con l'altra forma di inserimento della data ( per l'anno 2007) e cioè "xx.xx."è che non riesco in nessun modo a ricondurlo nella forma "xxxx" , per poi applicare lo stesso codice utilizzato per l'anno 2008.
    Il codice che ho utilizzato è :
    UPDATE perprova2007 SET data = Left(data,2) & '/' & right(data,3) & '/2007'
    WHERE LEN(data)=6;
    risultato :01/01./2007
    , non riesco a togliere quel benedetto (.) in nessun modo e finchè non ci riesco non posso aggiornare il formato del campo "data" , da TESTO a DATA.
    beh . spero in un vostro ulteriore suggerimento .... volevo fare da solo , ma.... mi son perso.
    grazie e ciao a tutti
  • Re: Da testo a data

    Rimpiazza il Caratterer [.] con un carattere nullstring... si usa la funzione Replace.
  • Re: Da testo a data

    Parallelamente alla soluzione di @Alex, continuo con soluzione da "poveracci".
    1) Clicca sul tasto Trova/Sostituisci
    2) Confronta "Parte del campo"
    3) Trova: .
    Sostituisci: (vuoto)
    Clicca sul tasto Sostituisci tutto.
  • Re: Da testo a data

    Grazie di cuore....
    stavolta ho applicato il metodo per "poveracci", come proposto da Osvaldo , dopo avere eliminato il (.) dalla stringa ottenuta con il codice precedente,(01/01/.2007)con "trova/sostituisci", ho cambiato il formato del campo "Data" .. e voilà , tutto come volevo. La funzione Replace , la devo studiare , non la conosco ancora bene ...
    grazie al cubo
Devi accedere o registrarti per scrivere nel forum
11 risposte