+ Rispondi
Risultati da 1 a 9 di 9

Discussione: Esecuzione di una Query Access in VB6

  1. #1
    Nuovo della community
    reputazione complessiva: 1 1

    Messaggi
    6

    Unhappy Esecuzione di una Query Access in VB6

    Ciao ragazzi, vi scrivo per chiedervi lumi su due problemi:
    devo importare un file di testo (.txt) in una tabella Access 2000; ho creato la specifica di importazione e funziona tutto a meaviglia se eseguo l'importazione in Access. Il problema nasce quando provo a eseguirla da un'applicazione VB. Questo è il codice che ho scritto:

    Private Sub mnuAcquirenti_Click()

    On Error GoTo GestioneErr

    Dim strFileAcqu As String
    Dim cmd As New ADODB.Command
    Dim rds As New ADODB.Recordset

    strFileAcqu = "gae0kl03_lombardia.txt"

    'Importo i dati dal file di testo in una tabella
    AggiornamentoArchivi strFileAcqu, "ImportazioneAcquirenti", "Acquirenti da importare"

    DoCmd.SetWarnings False ' disabilito il messaggio di conferma in Access

    'Accodo i dati importati nella tabella Acquirenti

    cmd.ActiveConnection = Connessione
    cmd.CommandText = "[(P) AGGIORNAMENTO ACQUIRENTI]"

    Set rds = cmd.Execute

    DoCmd.SetWarnings True ' ripristino il messaggio di conferma in Access

    MsgBox "Importazione Acquirenti completata con successo", vbOKOnly + vbInformation, "Aggiornamento Archivi"
    Set cmd = Nothing

    Exit Sub

    GestioneErr:
    MsgBox "Errore: " & Err.Number & " - " & Err.Description & vbCrLf & _
    "L'importazione dei dati non è avvenuta correttamente.", vbOKOnly + vbCritical, "Aggiornamento Archivi"
    Set cmd = Nothing

    End Sub




    Private Sub AggiornamentoArchivi(strFile As String, strSpecifica As String, strTabella As String)

    On Error GoTo GestioneErr

    Dim strDir As String
    Dim fs As Scripting.FileSystemObject

    strDir = "T:\Quote Latte\Software\Rql\Archivi da AGEA\" 'è comune a tutti i file

    'Controllo: se la connessione è chiusa, la apro
    If Connessione.State = adStateClosed Then
    Connessione.Open "DSN=RQL_Write"
    End If

    Set fs = CreateObject("Scripting.FileSystemObject")

    'Controllo se esiste il file da importare
    If fs.FileExists(strDir & strFile) = False Then
    MsgBox "Il file per l'aggiornamento archivi " & strFile & " non è presente nella directory " & strDir & "!", vbOKOnly + vbCritical, "Aggiornamento Archivi"
    Exit Sub
    Else
    If MsgBox("Confermi l'importazione del file " & strFile & " ?", vbYesNo + vbQuestion, "Aggiornamento Archivi") = vbYes Then
    DoCmd.TransferText acImportFixed, strSpecifica, strTabella, strDir & strFile, False
    Else
    MsgBox "Importazione dati annullata dall'utente", vbOKOnly + vbInformation, "Aggiornamento Archivi"
    Set fs = Nothing
    Exit Sub
    End If
    End If

    Set fs = Nothing

    Exit Sub

    GestioneErr:
    MsgBox "Errore: " & Err.Number & " - " & Err.Description & vbCrLf & _
    "L'importazione dei dati non è avvenuta correttamente."

    End Sub

    Il primo problema che riscontro è che se Access è aperto l'importazione fatta con l'istruzione DoCmd.TransferText funziona, mentre se Access è chiuso la tabella non viene popolata;
    il secondo problema sorge quando, dopo l'importazione del file di testo, cerco di eseguire la query di accodamento [(P) AGGIORNAMENTO ACQUIRENTI]. Sbaglio la sintassi??
    Vi ringrazio per l'attenzione,
    P.

  2. #2
    Moderatore Globale L'avatar di AntonioGiuliana
    reputazione complessiva: 38 38

    Messaggi
    6,737
    Stiamo parlando di codice VB6 o VBA di Access?
    Antonio GIULIANA

  3. #3
    Nuovo della community
    reputazione complessiva: 1 1

    Messaggi
    6
    Il codice è in VB6, la Connessione è di tipo ADODB.Connection

  4. #4
    Moderatore Globale L'avatar di AntonioGiuliana
    reputazione complessiva: 38 38

    Messaggi
    6,737
    Citazione Originariamente Scritto da princepao
    Il codice è in VB6 ...
    E in VB6 cosa e'

    DoCmd

    ?

    Hai per caso referenziato la libreria di Access? E perchè mai?
    Antonio GIULIANA

  5. #5
    Nuovo della community
    reputazione complessiva: 1 1

    Messaggi
    6
    sì certo che ho referenziato la Microsoft Access 11.0 Object Library perché il db sottostante all'applicazione VB è in Access. Ti spiego, questa applicazione non l'ho sviluppata io dall'inizio, sono subentrato in seguito e me ne hanno affidato la manutenzione evolutiva, per cui ho pensato di cambiare il minor numero di cose possibile

  6. #6
    Moderatore Globale L'avatar di AntonioGiuliana
    reputazione complessiva: 38 38

    Messaggi
    6,737
    Citazione Originariamente Scritto da princepao
    sì certo che ho referenziato la Microsoft Access 11.0 Object Library perché il db sottostante all'applicazione VB è in Access. Ti spiego, questa applicazione non l'ho sviluppata io dall'inizio, sono subentrato in seguito e me ne hanno affidato la manutenzione evolutiva, per cui ho pensato di cambiare il minor numero di cose possibile
    No .. non devi referenziare Access solo perche' il db e' un mdb di Access!

    Anzi ... dato che stai lavorando con ADO, continua ad usare ADO e il suo modello ad oggetti e non referenziare Access.

    Mi viene un dubbio ... nel file Access, oltre ai dati veri e propri, ci sta del codice o query ...?
    Antonio GIULIANA

  7. #7
    Nuovo della community
    reputazione complessiva: 1 1

    Messaggi
    6
    No, codice non ce n'è ma ci sono moltissime query, in parte erano già lì quando ho preso in gestione l'applicazione e qualcuna l'ho fatta anch'io, per esempio quella invocata nel codice che ti ho mandato è una delle mie

  8. #8
    Moderatore Globale L'avatar di AntonioGiuliana
    reputazione complessiva: 38 38

    Messaggi
    6,737
    Citazione Originariamente Scritto da princepao
    No, codice non ce n'è ma ci sono moltissime query, in parte erano già lì quando ho preso in gestione l'applicazione e qualcuna l'ho fatta anch'io, per esempio quella invocata nel codice che ti ho mandato è una delle mie
    Ok ... allora la cosa giusta e' tirare fuori tutte le query e conservare nel file mdb soltanto il db con i dati.

    Le query saranno richiamate dal tuo codice con gli oggetti ADO *senza* avere la necessità di referenziare Access (quindi anche di aprirlo ...).

    E cosa piu' importante, potrai installare il tuo programma in un PC in cui Access non è installato in quanto l'accesso avverrà solamente tramite la libreria ADO e Jet ...
    Antonio GIULIANA

  9. #9
    Nuovo della community
    reputazione complessiva: 1 1

    Messaggi
    6
    D'accordo, ti ringrazio. In effetti così posso fare a meno del riferimento ad Access, però non sono ancora riuscito a trovare l'equivalente in ADO dell'istruzione TransferText per importare il file di testo nella tabella.
    Qualche suggerimento?
    Ultima modifica di princepao; 26-10-2005 alle 10:47

+ Rispondi

Discussioni Simili

  1. Problema con query di Access
    Di Damians nel forum MS Office, Access, VBA
    Risposte: 2
    Ultimo Messaggio: 28-07-2006, 13:03
  2. Query da Access 2003
    Di saby68 nel forum Visual Basic .Net
    Risposte: 1
    Ultimo Messaggio: 08-01-2006, 15:03
  3. Esecuzione Query Da Visual Basic
    Di nodux nel forum MS Office, Access, VBA
    Risposte: 3
    Ultimo Messaggio: 12-11-2005, 14:22
  4. access 2000 - errore con query a campi in
    Di smsmaster nel forum Microsoft Windows
    Risposte: 1
    Ultimo Messaggio: 31-10-2003, 15:16

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi