Inclusione TXT

mercoledì 28 maggio 2014 - 16.49
Tag Elenco Tags  Visual Studio 2010  |  Crystal Reports 2008

teo256 Profilo | Newbie

Salve a tutti,

sono ore che cerco ma senza trovare la soluzione:
dovrei inserire una casella di testo contenente la prima riga (o meglio ancora, una parte di essa) di un file txt (diverso per ogni record) il cui percorso è in una colonna della tabella contenente gli altri dati mostrati nel report.

Sto diventando matto!!

Grazie per l'aiuto!!

pieroalampi Profilo | Expert

guarda qui, io lo uso spesso è funziona benissimo, ho utilizzato questo metodo per file anche grossi e va benissimo

io come struttura nel file schema.ini ho ultilizzato:
ColNameHeader=False
Format=Delimited(;)
MaxScanRows=50
CharacterSet=OEM
Col1=NBOX integer
Col2=JOLLY Currency
Col3=TIPO_PALLET Currency
Col4=PINZATE Currency
Col5=CODICE Integer
col6=RICORSIVO Currency
col7=N_FORMATURA Currency
col8=DATI_TESTA1 Currency
col9=DATI_TESTA2 Currency
col10=DATI_TESTA3 Currency
col11=SCELTA char
col12=TONO char
col13=CALIBRO char
col14=COD_PRODOTTO Currency
col15=FORMATO char
col16=CODICE_REGGIATURA Currency
col17=NMAX_SCATOLE integer
col18=ID_LINEA char
col19=SOCIETA Char
col20=STABILIMENTO Char
col21=LOTTO Currency
col22=DATAORAMOV date
col23=CODICE_EAN13 char
col24=CODICE_IMBALLO Currency
col25=CODICE_PRODOTTO char
col26=PROGRESSIVO Currency
col27=COLONNA_PROGRESSIVO Currency
col28=SCELTAS char
col29=QUALITA char
col30=DESCRIZIONE_CLIENTE Currency
col31=UDC Currency
col32=NON_VERSARE Currency
col33=COLORE Currency
col34=PAVIMENTO_RIVESTIMENTO Currency
col35=TIPO_SCATOLA Currency
col36=NR_CONTROLLO Currency
col37=PEZZI_SCATOLA integer
col38=PALLET_COMPLETO Currency
col39=ProdProducto Currency
col40=ProdCodAgg Currency

e qui il codice:
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txtDir + ";Extended Properties='Text;HDR=No;FMT=Delimited'"
Dim cm As New System.Data.OleDb.OleDbCommand
cm.Connection = cnn
' creo la striga di connessione e seleziono i campi, per selezionare tutti i campi sostituire i nomi con: SELECT * FROM [" + txtFile + "] ORDER BY DESCRIZIONE_CLIENTE"
cm.CommandText = "SELECT * FROM [" + txtFile + "] ORDER BY DESCRIZIONE_CLIENTE" 'SELECT DESCRIZIONE_CLIENTE,FORMATO,N_SCATOLE,PEZZI_SCATOLA,NMAX_SCATOLE,SCELTA,TONO,CALIBRO,DATAORAMOV,CODICE_PRODOTTO,MQ_PALLET FROM [" + txtFile + "] ORDER BY DESCRIZIONE_CLIENTE"
cnn.Open()
Dim da As New System.Data.OleDb.OleDbDataAdapter
da.SelectCommand = cm
da.SelectCommand.Connection = cnn
tableName = txtFile.Substring(0, txtFile.LastIndexOf("."))
da.Fill(DataSet1, tableName)
DataGridView1.DataSource = DataSet1
DataGridView1.DataMember = tableName

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LA PRIMA FRASE DI UN PROGRAMMATORE HELLO WORD ...... ANCHE L'ULTIMA

teo256 Profilo | Newbie

qui...dove?

pieroalampi Profilo | Expert

si scusa
http://support.microsoft.com/kb/149090/it

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LA PRIMA FRASE DI UN PROGRAMMATORE HELLO WORD ...... ANCHE L'ULTIMA

teo256 Profilo | Newbie

forse mi sono spiegato male:
il file di testo non è un datasource ma è un semplice txt (nello specifico è un programma NC).

Esempio:
(DFS,P13426,01.03 INOX SP 60_1)
(FOGLIO X1530 Y1250 Z6)
(POSIZIONE TESTA: ALTA)
......

Io avrei bisogno di visualizzare in una casella di testo del report i primi caratteri della prima riga (P13426)

Grazie.

pieroalampi Profilo | Expert

si ma lo puoi utilizzare come un db e scegliere il delimitatore per ogni campo, io ho utilizzato questa routine per prelevare dei dati che cambiavano in continuazione buttati fuori da un plc, ma in ogni caso questa procedura è utilissima per prelevare dati da un txt e distinguerli fra loro grazie al delimitatore che nel tuo caso è la virgola
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LA PRIMA FRASE DI UN PROGRAMMATORE HELLO WORD ...... ANCHE L'ULTIMA

teo256 Profilo | Newbie

Ogni record ha un txt diverso

pieroalampi Profilo | Expert

quindi tu cosa devi fare prelevare dal file una riga o cosa per metterla dove? in un record del tuo db? sicuramente faccio confusione io
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LA PRIMA FRASE DI UN PROGRAMMATORE HELLO WORD ...... ANCHE L'ULTIMA

teo256 Profilo | Newbie

devo prelevare una riga dal file e metterla in un campo del report
Ovviamente, ogni record del report avrà una riga diversa in quanto ogni record ha un txt diverso

pieroalampi Profilo | Expert

e non esiste nessun delimitatore? intendo anche un cr
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LA PRIMA FRASE DI UN PROGRAMMATORE HELLO WORD ...... ANCHE L'ULTIMA

teo256 Profilo | Newbie

c'è la ,

pieroalampi Profilo | Expert

ok allora usa il metodo che ti ho inviato (andrebbe rivisto per le altre righe) e preleva solo il dato della prima colonna, utilizzando come delimitatore la ",", nel mio schema praticamente dovresti utilizzare solo Col1=NOMECOLONNA integer, devo vedere a che serve MaxScanRows=50 se è il limite di colonne O RIGHE potresti impostarlo ad 1 e il gioco è fatto
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LA PRIMA FRASE DI UN PROGRAMMATORE HELLO WORD ...... ANCHE L'ULTIMA

teo256 Profilo | Newbie

non capisco come adattarlo alla mia necessità

pieroalampi Profilo | Expert

da quello che capisco devi prelevare una riga dal txt e la devi utilizzare, allora con quella procedura tu puoi far leggere il txt come un db dicendogli che le colonne sono discriminate da un una virgola li prelevi il contenuto della prima colonna che in realtà è la prima riga (perché tu mi hai detto che la prima riga finisce quando si incontra la virgola) e poi piazzi il tutto in una variabile e ne fai quel che vuoi.
spero di aver capito e di esserti stato di aiuto.
in ogni caso io ora chiudo ma posso sempre aiutarti più tardi sempre se capisco e se sono capace
ma se non è questo il problema scrivi tutti i passaggi in modo più chiaro (almeno per me che oggi sono un pò rinco)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LA PRIMA FRASE DI UN PROGRAMMATORE HELLO WORD ...... ANCHE L'ULTIMA
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5