Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 9 su 9

Access 2007 - conversione campo testo in campo hhmm (ore e minuti)

  1. #1
    ulisse1981 non  in linea Scolaretto
    ciao a tutti, ho sempre trovato con voi la soluzione ai miei problemi di piccolo "artigiano" di access (solo in visuale e non con linguaggio di programmazione)
    Ora ho un problema che non riesco a risolvere.
    Gestico dei file di testo che contengono informazioni anche rispetto a date ed orari.
    Riesco facilmente con una query di aggiornamento a modificare le informazioni che indicano una data in formato data (es. 12032013 in 12/03/2013), ma non so come fare a convertire le informazione che contengono gli orari (es. 1044 in 10:44) La necessit che poi riesca a fare delle differenze sugli orari. Ad esemio il tempo di attesa su un paziente preso in carico alla 10:44 e dimesso alle 11:16
    Spero nel vostro aiuto.

  2. #2
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Fai attenzione alla sezione corretta. Sposto io.

    Il Formato completo sarebbe [12032013 1044] e dovrebbe diventare ---> [12/03/2013 10:44]...?

    Io userei una funzione simile:
    Function SetDate(StrIN) As Date
        SetDate = DateSerial(Mid$(StrIN, 7, 2), Mid$(StrIN, 3, 2), Mid$(StrIN, 1, 2))
    
        If Len(StrIN) Is > 8 Then
                SetDate = CDate(SetDate & " " & TimeSerial(Mid$(StrIN, 10, 2), Mid$(StrIN, 12, 2), 0))
        End If
    End Function
    
    ℹ️ Leggi di pi su @Alex ...

  3. #3
    ulisse1981 non  in linea Scolaretto
    ti ringrazio moltissimo e mi scuso per aver postato su una sezione non corretta!
    Appena posso provo la tua funzione (anche se non ho molta dimestichezza con il linguaggio) e vi faccio sapere!
    Intanto faccio a tutti i migliori auguri di Buona Pasqua!

  4. #4
    ulisse1981 non  in linea Scolaretto
    Io ringrazio molto Alex per il suo suggerimento, ma purtroppo non sono riuscito ad utilizzare il suo codice perch non so utilizzare il linguaggio VB e nonostante ci abbia testardamente provato, ho dovuto rinunciarci.
    Ora provo a spiegare come procedo io in maniera elementare, sperando in un suggerimento alla mia altezza!
    Per convertire una data che mi arriva in formato testo (es.”12032013”) in “12/03/2013” io eseguo una query di aggiornamento adoperando la funzione DateSerial, che , se vado a vedere in SQL, ha questa sintassi:
    UPDATE B_Accessi SET B_Accessi.dataAccesso = DateSerial(Right([data],4),Mid([data],3,2),Left([data],2))
    Ora il mio problema che oltre alla data, mi viene comunicato anche l’orario (hhmm) , sempre in formato testo (es. 1044 che deve diventare 10:44)
    Quindi alla fine io importo da un file di testo la seguente comunicazione 120320131044 che io devo convertire nel campo [dataAccesso] in [12/03/2013 10:44] cio in una “data generica” che indichi oltre alla giornata anche l’orario, in maniera che poi mi permetta di fare delle differenze tra DataAccesso e DataUscita
    La cosa complicata che io non so adoperare il linguaggio VB, ma solo le query di aggiornamento in visuale di access, quindi mi servirebbe la funzione analoga a DateSerial che oltre a convertire la data tiene conto anche che questa prosegue con l’orario (data generica?)
    Mi scuso se non sono riuscito a spiegarmi meglio o con termini pi appropriati, ma le mie conoscenze sono veramente di base.
    Aspetto con ansia un aiuto!
    Ulisse

  5. #5
    L'avatar di willy55
    willy55 non  in linea Scribacchino
    Ipotizzando che vi sia un campo (denominato DataOraStringa) appunto di tipo stringa con un contenuto che pu essere similare a "120320131044" (ovvero stringa compattata nel formato giorno, mese, anno, ore e minuti) per la conversione nel tipo data si possono prendere le varie porzioni (funzione MID, LEFT, RIGHT) della stringa e ricostruire la data da convertire attraverso la funzione CDATE.
    Un esempio il seguente:

    DataConvertita: CDate(Mid([DataOraStringa];1;2) & "/" & Mid([DataOraStringa];3;2) & "/" & Mid([DataOraStringa];5;4) & " " & Mid([DataOraStringa];9;2) & ":" & Mid([DataOraStringa];11;2))
    
    Consiglio, in ogni caso, di approfondire almeno le funzioni di base per la conversione dei tipi dati
    Type Conversion Functions - Access - Office.com
    MS Access: CDate Function
    Come trasformare una stringa in data in Access | oneIToffice
    How to convert Text dates to Date format? - Microsoft Access / VBA
    ℹ️ Leggi di pi su willy55 ...

  6. #6
    ulisse1981 non  in linea Scolaretto
    PERFETTO!!!
    era proprio la formula che volevo!!
    Grazie tantissime, siete formidabili (anche per la pazienza!)

  7. #7
    L'avatar di Tommy_G
    Tommy_G non  in linea Scribacchino
    con la funzione postata da Alex (c' solo un piccolo refuso da togliere) fai esattamente la stessa cosa, devi solo cambiare la parte che conta la lunghezza della stringa da dove partire per leggere l'ora e i minuti perch, diversamente da quanto supposto da Alex, tu non hai lo spazio tra la data e l'ora
    Function SetDate(StrIN) As Date
        SetDate = DateSerial(Mid$(StrIN, 7, 2), Mid$(StrIN, 3, 2), Mid$(StrIN, 1, 2))
    
        If Len(StrIN) > 8 Then
                SetDate = CDate(SetDate & " " & TimeSerial(Mid$(StrIN, 9, 2), Mid$(StrIN, 11, 2), 0))
        End If
    End Function
    
    poi nella query passi il parametro della funzione
    SELECT SetDate([TuoCampo]) AS Espr1 FROM TuaTabella;
    

  8. #8
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Aggiungo solo l'opzione di UPDATE:
    UPDATE B_Accessi SET dataAccesso = SetDate([dataAccesso])
    
    La speranza sempre che l'esposizione iniziale sia tecnicamente fornita con il massimo dei dettagli...!
    ℹ️ Leggi di pi su @Alex ...

  9. #9
    ulisse1981 non  in linea Scolaretto
    ....volevo solo dirvi che siete fenomenali!!
    Grazie a tutti!

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. [ACCESS 2007 - VBA] Lettura di un campo di una tabella
    Da Diegus nel forum Microsoft Access
    Risposte: 6
    Ultimo Post: 17-03-2015, 14:19
  2. Problema ordinamento campo Access 2007
    Da supersimo nel forum Microsoft Access
    Risposte: 1
    Ultimo Post: 21-10-2011, 18:31
  3. [Access 2007] Ordinamento campo
    Da licetinsanire nel forum Microsoft Access
    Risposte: 9
    Ultimo Post: 13-10-2011, 19:13
  4. Risposte: 4
    Ultimo Post: 01-03-2011, 20:02
  5. ACCESS 2007 Campo allegato
    Da stefanoepi nel forum Microsoft Access
    Risposte: 1
    Ultimo Post: 28-05-2010, 18:58