Newsgroup: it.comp.appl.access
Titolo: sistema di pubblicazione

ciao a tutti.spero che qualcuno mi possa aiutare.
devo creare un sistema che pubblichi una lista di contenuti presi da db.
il problema è nel come immettere i dati nel db.
vi spiego.
ricevo una mail con i dati.
copio e incollo la mail in un file di testo.
(es.
  nome:giuseppe
  cognome:rossi
  data:10/08/2005
  professione:studente
  note:
  nome:franco
  cognome:neri
  professione:studente
  note:
  data:
)
a questo punto nascono i problemi.
come faccio ad inserire ogni dato nel suo campo??
ho provato ad importare all'interno di access...ma poichè i campi non 
sono sempre nella stessa posizione di riga,i dati vengono immessi in 
modo scorretto.
come mi consigliate di risolvere?
Ruiz

 ha scritto nel messaggio 
news:5crBe.66780$h5.28...@news3.tin.it...

L'importazione di un file di testo deve mantenere delle regole di 
importazione e mantenere gli stessi numeri di campi... un txt conviene che 
mantenga un tracciato record che divida i contenuti di un campo da un 
separatore (solitamente ";")
quindi se il tuo file risulterà del tipo
Franco;Neri;;Studente;
Giuseppe;Rossi;10/08/2005;Studente;
Non avrai alcun problema nell'importazione. 

 Giuseppe;Rossi;10/08/2005;Studente;
ok.grazie per il consiglio.
purtroppo non ho la possibilità di trasformare il tutto nella forma che 
mi hai descritto.
la mail arriva pronta con nomecapo:campo
e i campi sono centinaia...
e purtroppo non arrivano mai in ordine.
non ci sono altre soluzioni?

 ha scritto nel messaggio
news:5crBe.66780$h5.28...@news3.tin.it...

Scondo me l'unico modo e' quello di crearti una routine di lettura
del file Txt  tipo:
dim Riga as string
Open "c:\file.txt" For Input As #1
Do While Not EOF(1)
    Input #1, Riga
    select case left(Riga,5)
      case "nome:" : etc. etc.
      case "cogno": etc. etc.
      case else
    end select
Loop
Close #1
exit sub
e' solo una traccia ovvio poi la sviluppi come meglio
ti serve.
Bye :o)

Guarda, giusto perchè ho appena finito di mangiare e c'è sciopero dei bus,
quindi fino alle  18.00 devo stare in Ufficio.
Tieni, bell'e pronta!
Mettila in un modulo ed eseguila.
Hai anche a disposizione un array con dentro i singoli valori.
L'unica cosa che ti rimane da fare è la tabella "MiaTabella" e lanciare la
query contenuta nella string MySql.
Ok?
Poi mi paghi un caffè (magari al CISA2).
Facci sapere.
--
Simplex2
www.mdenittis.it
________________
LEGGE DEGLI EQUILIBRI DI SIMPLEX2
Da un grande potere, derivano grandi responsabilità,
da grandi responsabilità, derivano grandi rompimenti di palle,
i rompimenti di palle sono una gran perdita di tempo ma il tempo è denaro,
quindi una gran perdita di denaro comporta una grande perdita di potere.
[CODICE] ***************************
Public Enum Colonne
    Nome = 1
    Cognome = 2
    xdata = 3
    professione = 4
    note = 5
End Enum
Sub Test()
Dim MyArray(5) As String
Dim MyAux As Variant
Dim MyString As String
Dim MySql As String
Dim counter As Byte
Open Application.CurrentProject.Path & "/FILETEST.TXT" For Input As #1    '
Apre il file per l'input.
Do While Not EOF(1)    ' Ripete fino alla fine del file.
    counter = IIf(counter <= 5, counter + 1, 1)
    Input #1, MyString ' Legge i dati nelle variabili.
    If counter = 1 Then
        MySql = "INSERT INTO MiaTabella(Nome, Cognome, data, professione,
note) VALUES( "
    End If
    If Len(MyString) > 0 Then
        MyAux = Split(MyString, ":")
        Select Case MyAux(0)
            Case "nome"
            MyArray(Colonne.Nome) = MyAux(1)
            MySql = MySql & "'" & Replace(MyAux(1), "'", "''") & "', "
        Case "cognome"
            MyArray(Colonne.Cognome) = MyAux(1)
            MySql = MySql & "'" & Replace(MyAux(1), "'", "''") & "', "
        Case "data"
            MyArray(Colonne.xdata) = MyAux(1)
            If Len(MyAux(1) = 0) Then
                MySql = MySql & "NULL, "
            Else
                MySql = MySql & "#" & MyAux(1) & "#, "
            End If
        Case "professione"
            MyArray(Colonne.professione) = MyAux(1)
            MySql = MySql & "'" & Replace(MyAux(1), "'", "''") & "', "
        Case "note"
            MyArray(Colonne.note) = MyAux(1)
            MySql = MySql & "'" & Replace(MyAux(1), "'", "''") & "', "
        End Select
        If counter = 5 Then
            MySql = MySql & ")"
            Debug.Print MySql ' Scrive i dati nella finestra Immediata.
            For counter = 1 To 5
                MyArray(counter) = ""
            Next counter
            counter = 6
        End If
    End If
Loop
Close #1    ' Chiude il file.
End Sub
[CODICE] ***************************

 > dim Riga as string
 > Open "c:\file.txt" For Input As #1
 > Do While Not EOF(1)
 >     Input #1, Riga
 >     select case left(Riga,5)
 >       case "nome:" : etc. etc.
 >
 >       case "cogno": etc. etc.
 >       case else
 >     end select
 > Loop
 > Close #1
 > exit sub
grazie!!
è davvero ottima come soluzione.
non ho capito una cosa però.
cosa va dopo case "nome:" :
etc.etc sta per?
ti ringrazio per il tempo dedicatomi.
ciao!

 Poi mi paghi un caffè (magari al CISA2).
anche 2.


Il codice l'ho compilato e testato più volte (ovviamente funziona).
Probabilmente hai saltato uno di questi passaggi:
1) Non hai creto la tabella MiaTabella con i campi: Nome, Cognome, data,
professione,
note;
2) Non hai creato il file FILETEST.TXT nella stessa directory del database
(file .mdb) dove hai inserito il codice (pensavo fosse chiaro dal codice).
3) Non hai aperto la finestra di debug "Immediata".
Prova con questi accorgimenti e, se continua a non funzionare, dimmi che
errore ti da e in che punto del codice.
Ok?
Facci sapere.
Ciao.


 ciao!
Li devi metterci le istruzioni che piu ti aggradano
per utilizzare il campo che hai letto, per  esempio
potresti usare (avendoli gia definiti come campi string)
case "nome:" :  v_nome= ltrim(mid(riga,7))
case "cogno": v_cognome=ltrim(mid(riga,9))
una volta caricati tutti i tuoi campi puoi
utilizzarli per inserirli in tabella o con un
comando sql tipo
docmd.runsql("Insert into Clienti (Nome, Cognome) Values (" & chr(34) &
v_nome & chr(34) & "," & chr(34) & v_cognome & chr(34) & ")" )
oppure utilizzando Dao o Ado
ma qui credo di capire di complicarti la vita.
bye :o)