Newsgroup: it.comp.appl.access
Titolo: decimali file delimitato

"TipoTariffa";"DescrizioneTipoTariffa";"ImportoTariffa";"TipologiaTariffa";"DataRecord"
1;"MENSE TARIFFA ORDINARIA";3,30;"G";05/09/2002 00.00.00
2;"MENSE TARIFFA RIDOTTA";2,50;"G";05/09/2002 00.00.00
ho un file txt di questo tipo se lancio questo codice 
DoCmd.TransferText acImportDelim, "", tabella_destinazione, percorso,
True, ""
nella tabella destinazione mi da problemi per quanto riguarda il campo
importo  tariffa restituendomi quello che segue
ImportoTariffa
03.30.00
02.50.00
non posso usare una specifica di importazione perchè ho più file da
importare  in automatico
qualcuna sa come posso ovviare a questo problema?
ciao a tutti 
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Ciao aaa
potresti fare così..
Creare nella cartella che contiene il tuo file da importare il file
Schema.ini contenente queste righe
-------------
[NomeFile1.Txt]
ColNameHeader=True
Format=Delimited(;)
Col1=C1 Integer
Col2=C2 Char width 50
Col3=C3 Float
Col4=C4 Char width 1
Col5=C5 Date
---------------
e poi importarlo con questo codice
----------------
Currentdb.Execute "SELECT * INTO NomeTabella " & _
"FROM [Text;Database=C:\Dati].[NomeFile1t#Txt]"
----------------
(Database= è il percorso da cui prelevare i file testo)
se hai più di un file da importare puoi aggiungere le definizioni in coda a
schema.ini
----------
[NomeFile1.Txt]
ColNameHeader=True
Format=Delimited(;)
Col1=C1 Integer
Col2=C2 Char width 50
Col3=C3 Float
Col4=C4 Char width 1
Col5=C5 Date
[NomeFile2.Txt]
ColNameHeader=True
Format=Delimited(;)
Col1=C1 Integer
.......
ecc.
ecc.
[NomeFile3.Txt]
ColNameHeader=True
Format=Delimited(;)
Col1=C1 Integer
ecc.
ecc.
---------------
In questo modo la creazione della tabella assumerà per i campi il corretto
tipo di dato, come vedi c'è anche la possibilità di assegnare la lunghezza
per i campi testo.
Ciao Giorgio

 ha scritto:

anzitutto grazie per la risposta
volevo sapere però due cose:
1: io volevo fare un insert into diretto in una tabella già esistente mentre
con la "select * into che mi hai seganalato tu creo una nuova tabella
2: è possibile recuperare una funzione che mi crei direttamente il file ini?
(in caso contrario scriverò una apposita funzione che poi vedrò di
pubblicizzare)
ciao e per ora grazie per la risposta
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

aaa ha scritto:





il primo problema l'ho risolto da solo ed era anche banale così
CurrentDb.Execute "INSERT INTO alunni select * from
[Text;Database=\\Plo0981a10\dati\work\].[alunni#Txt]"
per il secondo invece aspetto buone nuove.


 pubblicizzare)
visto che il file schema.ini lo devi creare una sola volta potresti eseguire
in una cartella temporanea l'esportazione delle tabelle che già esistono.
-------------------
CurrentDb.Execute "SELECT * " & _
"INTO [Text;Database=C:\Dati].[NomeFile#Txt] " & _
"FROM NomeTabella"
------------------
in questo modo il file Schema.ini viene creato automaticamente, poi lo copi
nella cartella da cui devi importare.
Ciao Giorgio

 Ciao Giorgio
grazie per l'ulteriore risposta.
il problema è che non mi crea nessun file .ini quando esporto i file txt.
me lo crea solo se esporto i file come stampaunione di word (tra l'altro
non è del tutto uguale come struttura)
è un problema di settaggio magari?
ciao e per ora grazie ancora


 ciao a tutti
con questa funzione che penso sia utilizzabile da chiunque è possibile
creare il file schema.ini
Public Function crea_ini(tabella_interessata, Optional
cartella_destinazione As Variant = Null)
Dim i As Integer, NomeCampo As String, TipoCampoNumerico As Long
Dim testo_file As String, TipoCampo As String
Dim nome_file
nome_file = "schema.ini"
If IsNull(cartella_destinazione) Then cartella_destinazione =
left(CurrentDb.name, Len(CurrentDb.name) - Len(Dir(CurrentDb.name)))
testo_file = "[" & tabella_interessata & ".txt]" & vbCrLf
testo_file = testo_file & "ColNameHeader = True" & vbCrLf
'testo_file = testo_file & "CharacterSet = ANSI" & vbCrLf
testo_file = testo_file & "Format = Delimited(;)" & vbCrLf
For i = 0 To CurrentDb.TableDefs(tabella_interessata).Fields.Count - 1
    NomeCampo = CurrentDb.TableDefs(tabella_interessata).Fields(i).name
    TipoCampoNumerico =
CurrentDb.TableDefs(tabella_interessata).Fields(i).Type
    Select Case TipoCampoNumerico
                     Case dbBoolean
                         TipoCampo = "Yes/No"
                     Case dbByte
                         TipoCampo = "Byte"
                     Case dbInteger
                         TipoCampo = "Short"
                     Case dbLong
                        TipoCampo = "Integer"
                     Case dbCurrency
                         TipoCampo = "Currency"
                     Case dbDecimal
                         TipoCampo = "Decimal"
                     Case dbSingle
                         TipoCampo = "Single"
                     Case dbDouble
                         TipoCampo = "Float"
                     Case dbDate
                         TipoCampo = "Date"
                     Case dbText
                         TipoCampo = "Text"
                     Case dbLongBinary
                         TipoCampo = "OLE Object"
                     Case dbMemo
                             TipoCampo = "Memo"
                     Case dbGUID
                         TipoCampo = "Replication ID"
                  End Select
    testo_file = testo_file & "Col" & (i + 1) & "=" & NomeCampo & " " &
TipoCampo & vbCrLf
 
Next
MsgBox testo_file
Open cartella_destinazione & nome_file For Output As #1
Print #1, testo_file
Close #1
End Function
