Newsgroup: it.comp.appl.access
Titolo: Importare file di testo

Ciao a tutti.
Avrei bisogno di importare un file di testo in una tabella in modo periodico 
per cui mi sono creata una specifica di importazione che mi importa il file 
in questione "cartelle.txt" da una posizione specifica.
Il file di testo ha queste caratteristiche:
02820010001234567001 050320
02820020001234567001 030112
02820030001234567001 011205
02820050001234567001 040730
dove il primo numero a 20 caratteri mi deve essere importato nel campo 
"cartella" della tabella mentre il secondo numero rappresenta la data in 
formato AAMMGG che deve essere importato nel campo data della tabella nel 
formato data in modo da essere visualizzato per esempio 20/03/05 cosi da 
avere una tabella come la seguente:
02820010001234567001 20/03/05
02820020001234567001 13/01/03
02820030001234567001 05/12/01
02820050001234567001 30/07/04
Ho provato a importare il file di testo normalmente è non ho avuto nessun 
tipo di problema ma nel momento che creo una specifica di importazione la 
data non mi viene mai importata seppur mi sembra di aver sistemato tutti i 
parametri nella modalità a larghezza fissa.
Cosa sbaglio:
La tabella nel campo data?
La specifica di importazione?
Help me e grazie

 ha scritto nel messaggio 
news:Oq%0e.31202$zZ1.8...@twister1.libero.it...

Ciao,
utilizzi la formattazione per la data Format(valore, "dd/mm/yyyy")?
Prova un pò anche a settare il campo nella stessa maniera
Buona Pasqua
Gaspare
http://www.studioieducation.com

 ha scritto nel 
messaggio news:VD%0e.700812$b5.31...@news3.tin.it...


 La specifica di importazione?
Ho fatto un po' di confusione con Outlook.
Dovresti ricevere per e-mail la mia risposta al riguardo.
Bruno 

 ha scritto nel messaggio 
news:Oq%0e.31202$zZ1.8...@twister1.libero.it...

Ciao Lisa puoi procedere nel seguente modo:
-) importare il file di testo normalmente
-)nella tabella ti si creeranno 2 campi: il primo (20 caratteri ) lo 
definisci come testo e l'atro (quello contenente la data) viene formattato 
in access come numerico e quindi viene tolto lo 0 iniziale...le cifre 
rimangono 5
-) apri la tabella e converti il campo contenente la data  da numerico in 
stringa
-) ti crei una nuova maschera in visualizzazione struttura (vuota) e 
aggiungi 1 pulsante
-) dal menu visualizza scegli "codice"
-) incolli la seguente funzione in 1 area libera
Public Function SistemaData(parametro As String) As String
Dim anno, mese, giorno As String
giorno = Right(parametro, 2)
mese = Mid(parametro, 2, 2)
anno = "0" & Left(parametro, 1)
SistemaData = giorno & "/" & mese & "/" & anno
End Function
Questa funzione ti ritorna il valore che serve a te: da 050320 ti ritorna 
20/03/05
-)inserisci 1 pulsante sulla maschera e all'interno dell'evento click del 
pulsante scrivi (ricorda che la tabella si chiama "Cartelle" e il cmapo 
contenente la data "Campo2"...se i nomi non corrispondono li cambi)
Private Sub Pulsante_Click()
  Dim NuovaData As String
  Set dbs = CurrentDb()
  Set rst = dbs.OpenRecordset("Cartelle")
   With rst
      If rst.RecordCount > 0 Then
         .MoveFirst
        Do
          NuovaData = CStr(rst("Campo2"))
          NuovaData = SistemaData(NuovaData)
            rst.Edit
            rst.Campo2 = NuovaData
            rst.Update
          .MoveNext
        Loop Until .EOF
      End If
      .Close
   End With
   Set dbs = Nothing
Set db = Nothing
MsgBox "La data è stata convertita correttamente"
End sub
-) Dal menu visualizza scegli visualizza maschera clicchi sul pulsante ed i 
valori della data si formatteranno  come vuoi tu
-) dopodichè puoi aprire la tabella in visualizzazione   struttura e 
cambiare il Campo2 da testo a data


 
http://www.studioieducation.com
La funzione che hai scritto può essere semplicemente
riscritta in questo modo:
Format(DataStr,"dd/mm/yy"), e mi sembra un pò più
semplice.
In ogni caso c'è un errore sostanziale, un campo DATA deve
essere trattato e rimanere DATA, non è corretto convertirlo
in campo TESTO solo perchè darebbe errore dovuto al Formato
Anglosassone.
La conversione in Stringa ti vincola con i CALCOLI.
Pr essere inserito in un Recordset va scambiata la convenzione
mese/giorno oppure convertito in ISO:
Format(DataStr,"mm/dd/yy"), quindi inserito.
Se l'origine del dato fosse una Stringa, ma non è assolutamente
il caso essendo l'Importazione GUIDABILE in tal senso, occorre
sfruttare la valutazione automatica di Access per riconvertirla
in Data.
CampoData=Eval("#" & StrData & "#")
L'importanza della corretta assegnazione dei Campi è fondamentale.
Saluti
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio 
news:cce841f0b16534655e...@mygate.mailgate.org...

Buona Pasqua a te e famiglia :-)
Gaspare
http://www.studioieducation.com