Newsgroup: it.comp.appl.access
Titolo: Importare file pgn in una tabella PGN

Ciao a tutti,
è possibile importare un file pgn in una tabella Access ?
In pratica i file pgn sono file di testo che contengono la
notazione delle mosse effettuate in una partita di scacchi :
esempio del contenuto di un file pgn :
[Event "New Jersey State Open Champion"]
[Site "?"]
[Date "1957.??.??"]
[Round "7"]
[White "Fischer, R."]
[Black "Sherwin, J."]
[Result "1-0"]
[ECO "B30"]
[PlyCount "65"]
[EventDate "1957.??.??"]
1. e4 c5 2. Nf3 e6 3. d3 Nc6 4. g3 Nf6 5. Bg2 Be7 6. O-O O-O 7. Nbd2 Rb8 8.
Re1
d6 9. c3 b6 10. d4 Qc7 11. e5 Nd5 12. exd6 Bxd6 13. Ne4 c4 14. Nxd6 Qxd6 15.
Ng5 Nce7 16. Qc2 Ng6 17. h4 Nf6 18. Nxh7 Nxh7 19. h5 Nh4 20. Bf4 Qd8 21.
gxh4
Rb7 22. h6 Qxh4 23. hxg7 Kxg7 24. Re4 Qh5 25. Re3 f5 26. Rh3 Qe8 27. Be5+
Nf6
28. Qd2 Kf7 29. Qg5 Qe7 30. Bxf6 Qxf6 31. Rh7+ Ke8 32. Qxf6 Rxh7 33. Bc6+
1-0
A me interessebbe importare in colonne separate  di una tabella access tutti
i dati contenuti
nelle parentesi quadre
esempio
colonna A
[Event "New Jersey State Open Champion"]
colonna B
[Site "?"]
ecc. ecc.
Un file di esempio di un file pgn , può essere scaricato qui :
http://hdisk64.altervista.org/download/fisher0.pgn
Mi date una mano ????????????? :)))))))))
grazie !!!!!!!!!!!!!!!!!!!!!!!!!!

scusate l'oggetto è :
Importare file pgn in una tabella access
grazie !

 ha scritto nel messaggio news:437b0665$1...@x-privat.org...

I file di testo li apri/leggi/chiudi con le istruzioni Open/Input/Close (vedi help), una volta letto il valore puoi scriverlo in una 
tabella utilizzando i recordset (vedi help).
Ho aperto il file ma devi importare solo i valori compresi tra le parentesi quadrate o altro?
Ciao.
-- 
Sergio MAZZA 

 Ciao.
    Ciao !

    Ciao !
Et voilà!
'---
Dim txtValore As String, rst As DAO.Recordset, a As Integer
Set rst = CurrentDb.OpenRecordset("importaPGN", dbOpenTable)
Open "c:\temp\fisher0.pgn" For Input As 1
    Do
        Line Input #1, txtValore
        If Left$(txtValore, 1) = "[" Then
            rst.AddNew
            rst!colonna1 = txtValore
            For a = 2 To 10
                Line Input #1, txtValore
                rst("colonna" & a) = txtValore
            Next
            rst.Update
        End If
    Loop Until EOF(1)
Close
rst.Close
Set rst = Nothing
'---
Note: [importaPGN] è il nome della tabella che contiene 10 campi chiamati [colonna1/2/3/etc.].
Ciao.
-- 
Sergio MAZZA 


    innanzitutto : grazie mille !
    Il codice si blocca a
               rst!colonna1 = txtValore
mi dice errore di run time  3265: elemento non trovato in questo insieme
    forse quando scorre il file  trova qualche riga vuota ???
    ciao !


    no si blocca quando va a leggere la prima riga del file  !
    ciao !

 ha scritto nel messaggio 
news:437b0665$1...@x-privat.org...

Si tratta di un normale file di testo.
Non credo ci siano grossi problemi a fare un parsing della stringa e 
accodare il risultato in una tabella.
Mi sembra che le colonne siano sempre 10.
Siccome mi diverto a fare questi giochetti, ho messo in linea un programmino 
che fa quello che desideri. Mi rendo conto che non è molto educativo e sono 
d'accordo con Roberto che sarebbe necessario studiare almeno le basi di 
Access. Ti invito pertanto a prendere spunto dal db per approfondire le tue 
conoscenze.
Il file ha nel suo interno una specifica di importazione appositamente 
costruita e una maschera con un pulsante. Premendo il pulsante devi indicare 
il nome del file (.png o .txt), al resto pensa il codice. Il risultato lo 
trovi nelle tabelle. Ho utilizzato il file che hai proposto...
Questo il link per scaricare il db in A97 (facilmente convertibile):
www.frantoiogestione.com
\ImportaScacchi.zip
Usa un ocx di sistema che dovresti avere (Comdlg32.ocx) ...nel caso fammelo 
sapere.
Ovviamente sono possibili molte altre strade. Provalo e fammi sapere.
Ciao, Carlo

    ciao !
Come è la struttura della tabella (nomi dei campi)?
Ciao.
-- 
Sergio MAZZA 


    Infinite grazie !
    Allora quando si apre la finestra per indicaer il percorso i file txt o
pgn
    non vengono visti quando in Tipo File : Tipo Testo : [*.txt;*.pgn].
    Li visualizzo quando scelgo l'opzione : Tutti i file.
    In ogni caso , alla fine della procedura di scelta, la tabella SCACCHI
    rimane vuota .
    Ho visto un pò il codice forse impota e candella ???
    davvero molte grazie !!!!!!


Sě ho sbagliato a scrivere il filtro. Nel codice della maschera cambia la 
riga
.Filter = "File Testo (*.Txt;*.png;)|*.TXT;*.png;|Tutti i file (*.*)|*.*"
e sostituiscila con :
.Filter = "File Testo (*.Txt *.pgn)|*.TXT;*.pgn|Tutti i file (*.*)|*.*"
Poi nel codice principale (ImportaTestoScacchi) togli la stringa On error 
resume next e imposta un punto di interruzione e segui il codice passo 
passo. Fammi sapere l'errore.
Ciao, Carlo 

 Ciao, Carlo
    ciao !


Sì è possibilissimo, nel codice troverai il numero 10 che va sostituito con 
12.
Per fare le cose fatte bene e visto che non riesci a visualizzare la tabella 
scacchi, fammi sapere che versione di Access usi e ti faccio le modifiche.
Ciao, Carlo 


    Ciao !

 ha scritto nel messaggio 
news:437cf...@x-privat.org...

AccessXp è più tosto di A97 in quanto non permette l'importazione di file di 
testo con estensione diversa da quelle prestabilite, cosa che A97 fa 
tranquillamente.
Per questo motivo ho dovuto aggiungere del codice che permette di importare 
ugualmente file con estensione .pgn.
Questo il link:
www.frantoiogestione.com
\ImportaScacchiXP.zip
Ciao, Carlo 


        Funziona alla perfezione !
        grazie mille !!!!!
    ciao !


Prego! Mi sono divertito.
Si potrebbe impostare una variabile, da passare al ciclo, per scegliere se 
10 o 12 o un qualsiasi numero.
Ciao, Carlo 

 ha scritto nel messaggio news:437dbf4e$0$13267$4faf...@reader2.news.tin.it...

O, se possibile, modificare "in corsa" la struttura della tabella se richiede un campo in più...
Ciao.
-- 
Sergio MAZZA