Generazione tabella su access di appoggio

di il
6 risposte

Generazione tabella su access di appoggio

Devo generare una tabella su di un access di appoggio leggendo dei dati da una tabella collegata del db del nostro gestionale. Apparentemente sembra essere una cosa semplice, ma no ci riesco...
Io faccio così:
StringaAccess = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\fattibilita.accdb"
CnAccess = New OleDbConnection(StringaAccess)
        sql = "SELECT * INTO test FROM artico WHERE ar_codart like ""F*"" "
        cmd.CommandText = sql
        cmd.CommandType = CommandType.Text
        cmd.Connection = CnAccess
        CnAccess.Open()
        cmd.ExecuteNonQuery()
        CnAccess.Close()
Il risultato di quei comandi è che la tabella viene creata con la struttura corretta, ma completamente vuota! Se lancio la stessa query da sotto access, funziona correttamente... cosa sto sbagliado?

6 Risposte

  • Re: Generazione tabella su access di appoggio

    Hai dimenticato di mostrare il command cmd, inoltre la tabella di appoggio esiste già o la devi creare ?
  • Re: Generazione tabella su access di appoggio

    Perché usi i doppi apici nella stringa sql (oltretutto addirittura raddoppiati)? Va usato il singolo apice
    Prova così:
    sql = "SELECT * INTO test FROM artico WHERE ar_codart like 'F*' "
  • Re: Generazione tabella su access di appoggio

    patel ha scritto:


    Hai dimenticato di mostrare il command cmd, inoltre la tabella di appoggio esiste già o la devi creare ?
    Immagino che intendi questo:
    Dim cmd As New OleDbCommand
    La tabella non esiste. Ho anche una istruzione precedente che fa il drop della tabella vecchia e quell'istruzione funziona correttamente
  • Re: Generazione tabella su access di appoggio

    gibra ha scritto:


    Perché usi i doppi apici nella stringa sql (oltretutto addirittura raddoppiati)? Va usato il singolo apice
    Prova così:
    sql = "SELECT * INTO test FROM artico WHERE ar_codart like 'F*' "
    Ho già provato anche con gli apici normali, ma il comportamento non cambia. Ho messo i doppi apici perchè ho visto che access, nelle sue query, usa quelli invece di quelli singoli
  • Re: Generazione tabella su access di appoggio

    robypiro ha scritto:


    Ho già provato anche con gli apici normali, ma il comportamento non cambia.
    Già, in VB.NET non si usa l'asterisco, ma il simbolo percentuale
    WHERE ar_codart like 'F%' 
    Se anche adesso non funziona, significa che l'errore è logico, dici che la tabella viene creata vuota, per cui è la condizione WHERE ad essere sbagliata.

    robypiro ha scritto:


    Ho messo i doppi apici perchè ho visto che access, nelle sue query, usa quelli invece di quelli singoli
    A parte il fatto che in 30 anni che programmo non ho mai visto doppi apici raddoppiati in Access, ma in ogni caso non ha alcuna importanza perché in VB.NET si usa ADO.NET che è completamente diverso dal DAO (usato internamente da MSAccess).

    E' un errore comune credere che una query se funziona in MSAccess debba funzionare anche in altri ambienti.
    Funziona se usi DAO (e solo con quello).
  • Re: Generazione tabella su access di appoggio

    Grazie dell'attenzione. Alla fine ho risolto... il problema erà proprio nella clausola WHERE che andava usato, come carattere jolly, il % invece del *
Devi accedere o registrarti per scrivere nel forum
6 risposte