Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di Bugu
    Registrato dal
    Nov 2007
    Messaggi
    871

    [access] importazione ed esportazione tabelle

    In un programma Acess 2003 avrei bisogno di creare 2 pulsanti che svolgano rispettivamente queste 2 azioni:

    pulsante 1 - Deve importare il contenuto di un file txt (separato da tabulazione) in una mia tabella di access (naturalmente con gli stessi campi)

    pulsante 2 - Deve esportare il contenuto di una mia tabella in un file txt (separato da tabulazione) posizionandolo in una determinata cartella e nominandolo come DATAORAMINUTISECONDI.txt (dove per DATAORAMINUTISECONDI intendo ad esempio la data e l'ora di adesso che sto scrivendo 25032009082945.txt)

    Qualcuno mi sa aiutare?
    Thanks
    Linux User
    ---------
    Solo due cose sono infinite: l'universo e la stupidità umana, e non sono tanto sicuro della prima.

  2. #2
    Utente di HTML.it L'avatar di Bugu
    Registrato dal
    Nov 2007
    Messaggi
    871
    Ho provato a cercare in rete ma trovo poco. La procedura è possibile perchè l'ho vista su un altro programma Access
    Linux User
    ---------
    Solo due cose sono infinite: l'universo e la stupidità umana, e non sono tanto sicuro della prima.

  3. #3
    pulsante 1 - Deve importare il contenuto di un file txt (separato da tabulazione) in una mia tabella di access (naturalmente con gli stessi campi)

    codice:
    Option Compare Database
    Option Explicit
    
    Dim Buffer As String 'Contenuto Riga
    Dim Buffer1 As String
    Dim FileIn As String 'File da leggere
    Dim FileOut As String 'File da scrivere
    Dim FileOut1 As String 'File da scrivere
    Dim nrec As Long 'contatore righe
    
    Public Function CARICA_TXT()
    On Local Error GoTo Importa_ERR
    
    
    'Nome File da leggere
    FileIn = "path del file txt"
    
    'Nome File da scrivere
    FileOut = CurrentProject.PATH + "\nomefiletemporaneo.txt"
    
    
    
    'Apro i file
    Open FileIn For Input As #1
    Open FileOut For Output As #2
    
    nrec = 1
    Do While Not EOF(1)
    
          Line Input #1, Buffer
       
       
       If nrec > 0 Then
          Print #2, Buffer
       End If
       nrec = nrec + 1
    
    Loop
    
    'Chiudo i file
    Close #1, #2
    
    'Importo il File
    
    DoCmd.TransferText acImportDelim, "", "nome tua tabella in cui importare il txt", FileOut, False, ""
    
    
    'Cancello i file creati
    Kill "C:\visore\nomefiletemporaneo.txt"
    dove ho messo che devi inserire i tuoi riferimenti le virgolette(") vanno lasciate.

    vediamo se funziona, poi passiamo al punto 2

  4. #4
    Utente di HTML.it L'avatar di Bugu
    Registrato dal
    Nov 2007
    Messaggi
    871
    Originariamente inviato da borgodiavalon
    codice:
    Option Compare Database
    Option Explicit
    
    Dim Buffer As String 'Contenuto Riga
    Dim Buffer1 As String
    Dim FileIn As String 'File da leggere
    Dim FileOut As String 'File da scrivere
    Dim FileOut1 As String 'File da scrivere
    Dim nrec As Long 'contatore righe
    
    Public Function CARICA_TXT()
    On Local Error GoTo Importa_ERR
    
    
    'Nome File da leggere
    FileIn = "path del file txt"
    
    'Nome File da scrivere
    FileOut = CurrentProject.PATH + "\nomefiletemporaneo.txt"
    
    
    
    'Apro i file
    Open FileIn For Input As #1
    Open FileOut For Output As #2
    
    nrec = 1
    Do While Not EOF(1)
    
          Line Input #1, Buffer
       
       
       If nrec > 0 Then
          Print #2, Buffer
       End If
       nrec = nrec + 1
    
    Loop
    
    'Chiudo i file
    Close #1, #2
    
    'Importo il File
    
    DoCmd.TransferText acImportDelim, "", "nome tua tabella in cui importare il txt", FileOut, False, ""
    
    
    'Cancello i file creati
    Kill "C:\visore\nomefiletemporaneo.txt"
    dove ho messo che devi inserire i tuoi riferimenti le virgolette(") vanno lasciate.

    vediamo se funziona, poi passiamo al punto 2
    Anzitutto grazie.
    Ma devo creare un modulo con questo codice?
    E qui: FileOut = CurrentProject.PATH + "\nomefiletemporaneo.txt" nel PATH ci devo mettere il percorso del file o devo lasciare "PATH"?

    Se provo a creare un modulo (che ho chiamato "import") sul debug mi da un errore qui:
    On Local Error GoTo Importa_ERR
    L'errore è "Etichetta non definita"
    Linux User
    ---------
    Solo due cose sono infinite: l'universo e la stupidità umana, e non sono tanto sicuro della prima.

  5. #5
    Utente di HTML.it L'avatar di Bugu
    Registrato dal
    Nov 2007
    Messaggi
    871
    Ok, allora: risolto il problema dell'errore.

    Ho creato un modulo "import".
    Lancio la funzione da un pulsante.
    IL problema che mi da è il seguente: la tabella nella quale devo importare non è una tabella "interna" di Access ma è una tabella SQL collegata ad Access.
    Devo importare dal file AREE.txt dentro la tabella AREE. Il collegamento SQL alla tabella, in Access, mi viene rinominato in "dbo_AREE".
    Se come tabella nella quale importare indico semplicemente AREE il modulo mi crea una tabella Access chiamata AREE e mi importa il file .txt li dentro, mentre se indico al modulo di caricare dentro la tabella "dbo_AREE" non mi fa nulla.
    Linux User
    ---------
    Solo due cose sono infinite: l'universo e la stupidità umana, e non sono tanto sicuro della prima.

  6. #6
    Utente di HTML.it L'avatar di Bugu
    Registrato dal
    Nov 2007
    Messaggi
    871
    Il problema sta proprio nel collegamento alla tabella.
    Probabilmente essendo una tabella SQL collegata tramite ODBC devo usare un comando diverso invece del semplice nome della tabella in questo punto:
    codice:
    DoCmd.TransferText acImportDelim, "", "nome tua tabella in cui importare il txt", FileOut, False, ""
    Se uso AREE mi crea una tabella Access chiamata AREE, se uso "dbo_Aree" non fa nulla
    Suggerimenti?
    Linux User
    ---------
    Solo due cose sono infinite: l'universo e la stupidità umana, e non sono tanto sicuro della prima.

  7. #7
    non so che dirti, forse dovresti creare un fili .ini per regolare l'importazione.
    posta i campi della tabella che prova tra oggi e domani a scriverti il file.

  8. #8
    Utente di HTML.it L'avatar di Bugu
    Registrato dal
    Nov 2007
    Messaggi
    871
    Originariamente inviato da borgodiavalon
    non so che dirti, forse dovresti creare un fili .ini per regolare l'importazione.
    posta i campi della tabella che prova tra oggi e domani a scriverti il file.
    Grazie mille.
    I campi sono solo 4: AREA (varchar 8) - DESCRI (varchar 32) - CAPOAREA (varchar 8) - NOTA (varchar 64)

    Poi mi spieghi come usare il file .ini?
    Grazie ancora
    Linux User
    ---------
    Solo due cose sono infinite: l'universo e la stupidità umana, e non sono tanto sicuro della prima.

  9. #9
    crea un modulo ed inserisci questo codice:
    codice:
     Public Function CreateSchemaFile(bIncFldNames As Boolean, _
                                           sPath As String, _
                                           sSectionName As String, _
                                           sTblQryName As String) As Boolean
             Dim Msg As String ' For error handling.
             On Local Error GoTo CreateSchemaFile_Err
             Dim ws As Workspace, db As Database
             Dim tblDef As TableDef, fldDef As Field
             Dim i As Integer, Handle As Integer
             Dim fldName As String, fldDataInfo As String
             ' -----------------------------------------------
             ' Set DAO objects.
             ' -----------------------------------------------
             Set db = CurrentDb()
             ' -----------------------------------------------
             ' Open schema file for append.
             ' -----------------------------------------------
             Handle = FreeFile
             Open sPath & "schema.ini" For Output Access Write As #Handle
             ' -----------------------------------------------
             ' Write schema header.
             ' -----------------------------------------------
             Print #Handle, "[" & sSectionName & "]"
             Print #Handle, "ColNameHeader = " & _
                             IIf(bIncFldNames, "True", "False")
             Print #Handle, "CharacterSet = ANSI"
             Print #Handle, "Format = TabDelimited"
             ' -----------------------------------------------
             ' Get data concerning schema file.
             ' -----------------------------------------------
             Set tblDef = db.TableDefs(sTblQryName)
             With tblDef
                For i = 0 To .Fields.Count - 1
                   Set fldDef = .Fields(i)
                   With fldDef
                      fldName = .Name
                      Select Case .Type
                         Case dbBoolean
                            fldDataInfo = "Bit"
                         Case dbByte
                            fldDataInfo = "Byte"
                         Case dbInteger
                            fldDataInfo = "Short"
                         Case dbLong
                            fldDataInfo = "Integer"
                         Case dbCurrency
                            fldDataInfo = "Currency"
                         Case dbSingle
                            fldDataInfo = "Single"
                         Case dbDouble
                            fldDataInfo = "Double"
                         Case dbDate
                            fldDataInfo = "Date"
                         Case dbText
                            fldDataInfo = "Char Width " & Format$(.Size)
                         Case dbLongBinary
                            fldDataInfo = "OLE"
                         Case dbMemo
                            fldDataInfo = "LongChar"
                         Case dbGUID
                            fldDataInfo = "Char Width 16"
                      End Select
                      Print #Handle, "Col" & Format$(i + 1) _
                                      & "=" & fldName & Space$(1) _
                                      & fldDataInfo
                   End With
                Next i
             End With
             MsgBox sPath & "SCHEMA.INI has been created."
             CreateSchemaFile = True
    CreateSchemaFile_End:
             Close Handle
             Exit Function
    CreateSchemaFile_Err:
             Msg = "Error #: " & Format$(Err.Number) & vbCrLf
             Msg = Msg & Err.Description
             MsgBox Msg
             Resume CreateSchemaFile_End
          End Function
    questo codice, che avevo trovato in internet ma non ricordo di chi è (giusto per dare i giusti meriti), ti permette di creare il file .ini


    dopo al posto di
    DoCmd.TransferText acImportDelim, "", "nome tua tabella in cui importare il txt", FileOut, False, ""

    prova ad inserire
    codice:
    DoCmd.TransferText acImportDelim, "percorso completo del nome_del_file_ini", "nome tua tabella in cui importare il txt", FileOut, False, ""
    se non funge non so come aiutarti (sempre se non viene qualche idea illuminante).

    fammi sapere.

    edit: non mi funziona più, o meglio non mi ricordo qual'era la procedura per farla funzionare.
    scusa

  10. #10
    Utente di HTML.it L'avatar di Bugu
    Registrato dal
    Nov 2007
    Messaggi
    871
    Grazie,
    ma una volta che ho creato il modulo come faccio a fargli creare il file SCHEMA.ini?
    Linux User
    ---------
    Solo due cose sono infinite: l'universo e la stupidità umana, e non sono tanto sicuro della prima.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.