Newsgroup: it.comp.lang.visual-basic
Titolo: da txt a mdb

devo realizzare un programma che prenda delle stringhe da un file txt
separate da ; e spazio e metterle nei corretti record di un data base mdb.
Mi potete dare due dritte?
Magari qualche cosa di giů fatto, se possibile.
Ciao e grazie
--
Rubens
---------------------------
A:\>format c:
Windows users best friend
--------------------------

 Magari qualche cosa di giù fatto, se possibile.
--
Ciao.
Maurizio
--------
?SPQR(C)
 X
--------

 Magari qualche cosa di giů fatto, se possibile.
Se hai msaccess installato, potrebbe bastare lo wizard di importazione dati
di cui dispone.
Ciao
Aldo

 Magari qualche cosa di giù fatto, se possibile.


in base al quale un record e` "corretto" per quello che devi fare?
trattasi di tabella CSV (Comma Separated Value)
il file ha un aspetto del genere:
field 1; field 2; field 3; field 4; ...; field N
cell1/1; cell1/2; cell1/3; cell1/4; ...; cell1/N
cell2/1; cell2/2; cell2/3; cell2/4; ...; cell2/N
cell3/1; cell3/2; cell3/3; cell3/4; ...; cell3/N
cell4/1; cell4/2; cell4/3; cell4/4; ...; cell2/N
...
cellN/1; cellN/2; cellN/3; cellN/4; ...; cellN/N
chiaro? la prima riga definisce i field, le righe successive sono i record

 in base al quale un record e` "corretto" per quello che devi fare?
intendo che:
il file di origine contiene dei valori relativi a dei trasporti, esempio:
località di partenza; data di carico; ora di carico; porto di partenza; data
di imbarco; cliente;
il file di destinazione è una tabella mdb che conterrà delle colonne, le
colonne potrebbero essere ad esempio:
cliente | porto di partenza | data di imbarco |
quindi non è detto che tutti i dati nel file txt vengano messi nella tabella
e che siano nello stesso ordine.
grazie e ciao


 chiaro? la prima riga definisce i field, le righe successive sono i record
esattamente trattasi di quello.
mi puoi aiutare a mettere i record in un mdb
p.s.
non so quasi nulla di vb in particolari di questo argomento.

 la prima riga definisce i field, le righe successive sono i record
--


 quindi non è detto che tutti i dati nel file txt vengano messi nella
tabella e che siano nello stesso ordine.
Da cio` che dici ora allora il problema non e` tanto il famoso "metterle nei
corretti record" quanto il "metterle dei corretti campi". E questo si
risolve...
Un nuovo dubbio nasce dalla tua ultima frase, un tantino ambigua: quando si
parla di "ordine" si intende l'ordinamento, diciamo cosi`, *verticale*,
cioe` dei record. Mi sembra di capire che invece tu intenda quello
*orizzontale*, a livello dei campi.
Ancora, la questione che "non e` detto che tutti i dati" ecc. potrebbe far
pensare che alcuni *record* siano da scartare. Mentre probabilmente tu
intendi scartare alcuni *campi*.
Esamina il codice seguente...
Option Explicit
Public Sub Main( _
)
  Const strSep  As String = "; "
  Dim strFile   As String
  Dim intFile   As Integer
  Dim strTemp() As String
  Dim vntFile() As Variant
  Dim lngRecord As Long
  Dim intField  As Integer
  strFile = "c:\windows\desktop\prova.txt"
  intFile = FreeFile(0)
  Open strFile For Input As #intFile
  strTemp = Split(Input$(LOF(intFile), #intFile), vbCrLf)
  Close #intFile
  ReDim vntFile(LBound(strTemp) To UBound(strTemp))
  For lngRecord = LBound(vntFile) To UBound(vntFile)
    vntFile(lngRecord) = Split(strTemp(lngRecord), strSep)
  Next
  Erase strTemp
  '// Test
  '
  For lngRecord = LBound(vntFile) To UBound(vntFile)
    Debug.Print Format$(lngRecord + 1, "000000: ");
    For intField = LBound(vntFile(lngRecord)) _
        To UBound(vntFile(lngRecord))
      Debug.Print ; vntFile(lngRecord)(intField); " ";
    Next
    Debug.Print
  Next
End Sub
... col quale carichi in memoria tutto il file. Il passo successivo sara`
aprire il recordset al quale vuoi *accodare* tali dati e fare qualcosa del
genere:
    With rst
      ' Saltiamo la prima riga
      ' in quanto contiene i nomi dei campi.
      ' (Se e` vero!...)
      '
      For lngRecord = LBound(vntFile) + 1 To UBound(vntFile)
        .AddNew
        With Fields
          .Item("[cliente]").Value _
            = vntFile(lngRecord)(5)
          .Item("[porto di partenza]").Value _
            = vntFile(lngRecord)(3)
          <ecc>
        End With
        .Update
      Next
      .Close
    End With
Ci siamo?...


 ***NON*** intenda un ***semplice*** append... chiaro?
direi che non è un semplice append, ma non è neanche molto diverso:
ho mandato un altro msg con anche un esempio, alcuni dati nel file di
origien sono superflui e vanno tolti e quelli e gli altri potrebbe esser
messi in un altro odine, ma sempre in coda a quelli esistenti.
ciao e grazie


 Ci siamo?...
questo secondo mi è un po più ostico, ma direi che dovrebbe essere lui.
faccio delle prove, semmai mi rifaccio sentire.
grazie mille sei stato perfetto.


 wrote in message
news:v83%5.2805$ag5.1...@twister1.tin.it...
