+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [access 2007]foglio vuoto e stringa sql non consente di aprire il recordset

  1. #1
    acitano non è in linea Scolaretto
    Post
    53

    [access 2007]foglio vuoto e stringa sql non consente di aprire il recordset

    Ciao a tutti, come detto stamattina in un altro post sono un neofita.
    sto facendo una procedura di importazione fogli di excel:
    ecco cosa ho fatto:

    Private Sub ImportaDatiExcel_01()
    Dim orset As ADODB.Recordset
    Dim SQL As String

    'questa funzione esiste ed è funzionante
    Apriconnessione (Me!nome_file.Value)
    Set orset = New ADODB.Recordset

    'creo la query per accedere ai dati excel come da esempio da intenet
    SQL = "SELECT uscita, n, descrizione, nord, est, quota FROM [" & Me!nome_foglio.Value & "$];"

    orset.Open SQL, oConn
    if IsNull(orset.Fields(0)) Then
    'ciclo e scorro tutto il recordset
    With orset
    While Not .EOF
    SQL = "insert into nuova" & _
    "(uscita, n, descrizione, nord, est, quota) VALUES (" & _
    "'" & .Fields("uscita").Value & "', " & _
    "'" & .Fields("n").Value & "', " & _
    "'" & .Fields("descrizione").Value & "', " & _
    "'" & .Fields("nord").Value & "', " & _
    "'" & .Fields("est").Value & "', " & _
    "'" & .Fields("quota").Value & "')"
    CurrentProject.Connection.Execute SQL
    orset.MoveNext
    Wend
    End With
    Else
    MsgBox "Recordset vuoto"
    End If
    Set orset = Nothing

    'è una funzione pubblica che mi chiudeil db se è aperto
    ChiudiConnessione

    End Sub

    Fintanto che nel file di excel da importare esiste un foglio con un nome valido con delle belle celle "piene" e che contengono i dati che mi aspetto,... tutto bene.
    Quando cerco di selezionare un foglio che esiste e che non contiene neanche una cella compilata il programma mi si ferma alla riga:

    orset.Open SQL, oConn

    e una finestrina beffarda mi si apre e mi dice:
    Errore di Run-time '-2147217904 (80040e10)
    nessun valore specificato per alcuni parametri necessari

    Il mio naso mi dice che è un errore nella stringa SQL , ma dopo 3 che guardo sul forume su google con il codice di errore ore mi arrendo e mi rimetto alle vostre mani, con la mia faccia sotto i vostri piedi (parafrasando benigni e troisi che scrivono a savonarola), e non pretendo neanche che non vi muoviate.

    spero di non aver dimenticato nulla nel codice
    Ciao e grazie, anzi buona notte Acitano

  2. #2
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    16,456
    Ma hai provato ad usare il Metodo TransfertSpreadsheet per l'importazione dei Fogli di Excel....?
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  3. #3
    acitano non è in linea Scolaretto
    Post
    53
    Ciao Alex,
    Si ci ho provato e funziona perfettamente.
    Io però non devo solo prendere il foglio e inserirlo in una tabella ma prendere le informazioni e disseminarle in 2 o 3 tabelle del db,
    il tutto pilotato da una mascherà che con qualche combo e qualche casella di testo dirà ai dati dove andare a finire.

    Secondo te chiedo troppo se lo faccio "al volo" direttamente da excel, o come suggerisci tu è meglio appoggiare i dati in una tabella provvisoria, smazzuolare i dati e metterli nelle varie tabelle e poi cancellarla?

  4. #4
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    16,456
    Quote Originariamente inviato da acitano Visualizza il messaggio
    Ciao Alex,
    Si ci ho provato e funziona perfettamente.
    Io però non devo solo prendere il foglio e inserirlo in una tabella ma prendere le informazioni e disseminarle in 2 o 3 tabelle del db,
    il tutto pilotato da una mascherà che con qualche combo e qualche casella di testo dirà ai dati dove andare a finire.

    Secondo te chiedo troppo se lo faccio "al volo" direttamente da excel, o come suggerisci tu è meglio appoggiare i dati in una tabella provvisoria, smazzuolare i dati e metterli nelle varie tabelle e poi cancellarla?
    La domanda tecnicamente è corretta... purtroppo valutare i pro e contro della cosa non è semplice.
    Chiaramente gestendo tutto AUTOMATION-SIDE devi implementare una OTTIMA gestione errori accompagnata da una più spinta verifica preventiva... proprio per quanto hai segnalato prima, in quanto l'oggetto di AUTOMAZIONE istanziato
    su questo pone qualche limite.

    Nel caso in cui tu gestisca su una TMP_TBL locale... hai una gestibilità di Errori e Transazioni molti più avanzata...
    Da valutare proprio il VOLUME del lavoro in un caso o nell'altro...!
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  5. #5
    acitano non è in linea Scolaretto
    Post
    53
    Proverò a pensare ai pro e contro e il volume di lavoro nei 2 casi, intanto grazie del consiglio

    Ciao Acitano

+ Rispondi al Thread

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi