Risultati da 1 a 8 di 8

Discussione: esportare record concatenati in file txt su unica riga senza ritorno a capo



  1. #1
    L'avatar di diego1966
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    Palermo
    Età
    50
    Messaggi
    3
    Versione Office
    2013
    Likes ricevuti
    0
    Likes dati
    0

    esportare record concatenati in file txt su unica riga senza ritorno a capo

    Salve a tutti, (non sapevo che in questo forum ci fosse anche la sezione dedicata ad access, evidentemente ho attenzionato male !!), avrei un problema (almeno per me lo è) da sottoporvi, che nonostante la buona volontà e le varie ricerche fatte nei forum di programmazione vba per access, non riesco a venirne a capo, spero di essere conciso e chiaro nella spiegazione: Ho necessità, per lavoro, di trasferire i records contenuti nella tabella che chiamerò TblTurnazione, in un file .Dat, tutti questi record che contengono il codice azienda, la matricola del dipendente, la data ed il codice turno (formato da due lettere) sono così formattati ; Codice azienda 6 caratteri (000101 es.), Matricola dipendente 7 caratteri (0000202 es.), la data in formato gg/mm/aaaa (29/08/2016 es.) il codice di turnazione 2 caratteri (BX es.) quindi il record alla fine dovrebbe essere qualcosa del genere :000101000020229/08/2016BX , consideriamo che di questa stringa se ne contano da un minimo di 28 ad un massimo di 31 (durata in giorni del mese) e moltiplicata per da un minimo di 10 ad un massimo di 50 dipendenti, il Software che elabora le presenze accetta solo file che chiama TURNI.Dat e vuole tutte queste sequenze di caratteri solo su un'unica riga senza ritorni a capo o spazi , altrimenti si blocca e non elabora, fino ad oggi i colleghi incaricati dell'immissione dei codici orari lo fanno manualmente pur avendo la possibilità di importare un file.dat, ma purtroppo nessuno era in grado di implementare un db che riuscisse a fare questo, io sono riuscito a concatenare i records attraverso una query ed ad esportarlo in un file .dat ma nonostante ciò non riesco a far si che venga esportato tutto in un'unica riga, ad un certo punto va sempre a capo, credo che, se non mi sbaglio, una riga può contenere 93500 caratteri , qui non si arriva neanche alla metà o quasi, 25 (caratteri) x 31 (giorni del mese) x 50 (massimo dei dipendenti) = 38750 caratteri, qualcuno può darmi un'aiuto su come poter risolvere? Ho l'impressione che nella concatenazione esporto anche tantissimi caratteri speciali (spazi, return carriage ...) perchè pur volendo manualmente portare tutto in un'unica riga di testo l'editor di teso si ostina a suddividerlo.
    scusate il mio essere prolisso, ma volevo spiegare bene il tutto

    posto il codice che ho usato :
    grazie anticipatamente a tutti quelli che vorranno darmi una mano

    Codice: 
    Dim Miodb As Database 
        Dim TabRighe As Recordset 
        Dim strSQL As String 
        Dim strRitorno As String 
        Set Miodb = CurrentDb 
        strSQL = "SELECT TblTurnazione.CodAz & TblTurnazione.Matricola &   TblTurnazione.Data & TblTurnazione.Turno AS Riepilogo FROM TblTurnazione WHERE ((Format(TblTurnazione.Data,""m"")= " & Chr(34) & Me.testomes & Chr(34) & ")) ORDER BY TblTurnazione.Matricola" 
    
        Set TabRighe = Miodb.OpenRecordset(strSQL, dbOpenDynaset) 
    
        strRitorno = "" 
        If Not TabRighe.EOF Then 
            TabRighe.MoveFirst 
            strRitorno = Nz(TabRighe.Fields("Riepilogo")) 'Nz() evita errori quando si cerca di concatenare campi con valori Null 
            TabRighe.MoveNext 
            Do Until TabRighe.EOF 
            strRitorno = strRitorno & Nz(TabRighe.Fields("Riepilogo"), "") 
            TabRighe.MoveNext 
            Loop 
    
         End If 
          ConcatenaRighe = strRitorno 
          Open "H:\Tutto\DB orario dip\Prova\" & "TURNI " & Format(Date, "dd_mm_yyyy") & ".dat " For Output As #1 
          Print #1, ConcatenaRighe 
          Close #1 
          TabRighe.Close 
          Miodb.Close 
          Set TabRighe = Nothing 
          Set Miodb = Nothing
    Codice: 

  2. #2
    Passione L'avatar di CisKo
    Clicca e Apri
    Data Registrazione
    Apr 2016
    Località
    Italia
    Messaggi
    1369
    Versione Office
    2003,10,13,16
    Likes ricevuti
    127
    Likes dati
    69

    Re: esportare record concatenati in file txt su unica riga senza ritorno a capo

    ciao diego1966
    ti allego un piccolo e semplice esempio prova a dare un'occhiata e fammi sapere

    molto più semplice
    File Allegati File Allegati
    Il mondo è pieno di problemi affascinanti che aspettano di essere risolti - Nessun problema dovrebbe mai essere risolto due volte - Noia e ripetitività sono il male - La libertà è un bene - Pubblica informazioni utili - Aiuta a mantenere l'infrastruttura di lavoro.

  3. #3
    L'avatar di dickdusterdly
    Clicca e Apri
    Data Registrazione
    Sep 2016
    Località
    varese
    Età
    40
    Messaggi
    1
    Versione Office
    2016
    Likes ricevuti
    0
    Likes dati
    0

    Re: esportare record concatenati in file txt su unica riga senza ritorno a capo

    Ciao a tutti!
    Ciao Diego1966: immagino su quale applicativo tu stia lavorando visto che anch'io avrei bisogno di ottenere lo stesso identico risultato, ovvero il file turni.dat, con tutti i dati su un'unica linea

    Io però parto da un file excel in cui ho nella cella A1 i 25 caratteri di cui si parlava, nella cella A2 altri 25 caratteri con il medesimo tracciato e così via
    Qualcuno mi potrebbe dare una mano per ottenere il file txt con tutti i dati di una colonna excel riportati su singola linea?

    Grazie mille

  4. #4
    L'avatar di diego1966
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    Palermo
    Età
    50
    Messaggi
    3
    Versione Office
    2013
    Likes ricevuti
    0
    Likes dati
    0

    Re: esportare record concatenati in file txt su unica riga senza ritorno a capo

    Grazie di cuore Cisko, mi spiace averti potuto rispondere adesso, ho apprezzato molto la tua soluzione, molto efficace ed in effetti estremamente più semplice, ma sopratutto, estremamente più concisa ed immediata rispetto al codice che ho dovuto scrivere, ed ovviamente ho adottato la tua soluzione, mi alleggerisce un po l'editor vba :D, alla fine sai cosa mi impediva di eliminare i vari spazi e gli accapo? un semplice punto e virgola a fine istruzione #print: io scrivevo Print #1, ConcatenaRighe
    Close #1

    ed invece doveva essere
    Print #1, ConcatenaRighe;
    Close #1

    ASSURDO !!!

    ho fatto tutte le verifiche del caso con il notepad++ (trova e sostituisci ecc ecc ) e la stringa è tutta in un'unica riga !!

    ti ringrazio di nuovo per la soluzione proposta, a buon rendere (anche se non so, vista la tua preparazione in materia, come potrei restituirti la cortesia :D )
    Buon weekend

  5. #5
    L'avatar di diego1966
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    Palermo
    Età
    50
    Messaggi
    3
    Versione Office
    2013
    Likes ricevuti
    0
    Likes dati
    0

    Re: esportare record concatenati in file txt su unica riga senza ritorno a capo

    Ciao dickdusterdly, credo che immagini bene, non so se è possibile mensionare la casa che distribuisce l'applicativo, nel dubbio cito solo l'iniziale del nome che è Z !
    in excel non saprei come aiutarti nell'esportazione, però non credo che sia molto diverso da access, entrambi possono essere manipolati con il vba, per cui immagino che l'istruzione input ed output, con i vari write, print, valga anche per excel,, ovviamente cambiano i riferimenti, in access caselle di testo o campi tabelle in excell riferimenti righe e colonne, qui di seguito ti allego un link di questo forum dove trattano l'esportazione da txt ad excel, ed il codice contempla la funzione input , presumo che andando a ritoccare qualcosa ed usando l'output possa fare al caso tuo.

    http://www.forumexcel.it/forum/7-dom...rtare-vari-txt

    Saluti e buon weekend

  6. #6
    L'avatar di Captain Harlock
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    Italy
    Messaggi
    12
    Versione Office
    All
    Likes ricevuti
    0
    Likes dati
    0

    Re: esportare record concatenati in file txt su unica riga senza ritorno a capo

    Per Diego. Tutto il codice che legge dal database si può sintetizzare così:
    Codice: 
      Sub concatena()    Dim s As String, rst As dao.Recordset, rows As Variant, i As Long, j As Long  Set rst = CurrentDb.OpenRecordset("select * from tabella1 where ...") rows = rst.GetRows(rst.RecordCount)  For i = 0 To UBound(rows, 1)    For j = 0 To UBound(rows, 2)                           s = s & rows(i, j)  Next j, i Debug.Print s  End Sub
    Il comportamento di "print", "print ;" e "print ," e comunque documentato, non è così assurdo. Per Excel si può ciclare sul range che interessa, recuperando il valore di una riga con application.Transpose e Join e alla fine per concatenare il contenuto della variabile stringa nello stesso modo con Open ... For Output.
    Ultima modifica fatta da:Captain Harlock; 09/09/16 alle 23:22 Motivo: tag [codice] non riconosciuto

  7. #7
    L'avatar di Captain Harlock
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    Italy
    Messaggi
    12
    Versione Office
    All
    Likes ricevuti
    0
    Likes dati
    0

    Re: esportare record concatenati in file txt su unica riga senza ritorno a capo

    Per Cisko. Perchè nel tuo file di esempio scrivi ben due query, di cui solo la prima crea il dato concatenato e la seconda lo estrapola? Non bastava solo per esempio
    Codice: 
    SELECT [a] & [b] & [c] & [d] AS concatena FROM Tabella1;
    e dare in pasto questa alla macro?

  8. #8
    Passione L'avatar di CisKo
    Clicca e Apri
    Data Registrazione
    Apr 2016
    Località
    Italia
    Messaggi
    1369
    Versione Office
    2003,10,13,16
    Likes ricevuti
    127
    Likes dati
    69

    Re: esportare record concatenati in file txt su unica riga senza ritorno a capo

    Salve a tutti i presenti nella discussione
    per Diego sono contento di esserti stato utile
    Per dick prova a chiedere nella sezione Excel troverai la soluzione migliore ne sono certo
    Per il mio captain curioso ti dirò dato che non so il grado di preparazione
    Della persona con cui mi interfaccio che comunque si presuppone a 0 nei miei esempi cerco di fare passaggi singoli per cercare di far capire
    Semplicemente i vari movimenti possibili .
    Poi scrivere listati di codice e spiegare singolarmente i passaggi si fa in altre sedi .

    Buona serata a tutti

    Una mia riflessione per captain essendo in forum libero potresti proporre la tua soluzione senza problemi
    personalmente però non a me ma all'utente che ne ha bisogno ti assicuro che daresti un grande contributo .
    Ed io qui non sono in competizione con nessuno ho solo da imparare
    Il mondo è pieno di problemi affascinanti che aspettano di essere risolti - Nessun problema dovrebbe mai essere risolto due volte - Noia e ripetitività sono il male - La libertà è un bene - Pubblica informazioni utili - Aiuta a mantenere l'infrastruttura di lavoro.

Discussioni Simili

  1. Diagramma di Gantt su un'unica riga
    Di Matt90 nel forum Domande su Excel in generale
    Risposte: 12
    Ultimo Messaggio: 19/09/17, 13:37
  2. Macro copia File Folder / Subfolder in una Folder unica senza Subfolder
    Di aerdna nel forum Domande su Excel VBA e MACRO
    Risposte: 8
    Ultimo Messaggio: 27/02/17, 19:28
  3. Importare ed esportare file csv
    Di Berio nel forum Domande su Excel in generale
    Risposte: 5
    Ultimo Messaggio: 08/07/16, 23:07
  4. Altezza riga con cella con "a capo"
    Di zio_tom nel forum Domande su Excel VBA e MACRO
    Risposte: 19
    Ultimo Messaggio: 01/11/15, 20:18
  5. Ritorno a Capo in Vba
    Di A.Maurizio nel forum Domande su Excel VBA e MACRO
    Risposte: 14
    Ultimo Messaggio: 27/08/15, 22:35

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •