none
select et insert en une commande ??? RRS feed

  • Question

  • Je voudrais copier l'intégralité d'une table dont j'ai mis les noms de colonnes en variables. Je fais donc un select de toutes mas colonnes. Je met ensuite pour chaque ligne les valeurs de chacune des colonnes dans d'autres variables. J'essaie donc ensuite de faire un insert dans mon autre table avant de passer à la ligne suivante.

    Voici le code que j'ai tapé :

    MarequeteOle.Connection = MaconnexionOle
                    InsertOle.Connection = MaconnexionOle
                    MarequeteOle.CommandText = "select " & code & ", " & nom & ", " & adr & ", " & cp & ", " & ville & ", " & tel & ", " & fax & ", " & port & ", " & mail & ", " & siteinter & " from " & tab_client & ""
                    MesresultatsOle = MarequeteOle.ExecuteReader
                    While MesresultatsOle.Read
                        valcode = MesresultatsOle.GetString(0)
                        valnom = MesresultatsOle.GetString(1)
                        valadr = MesresultatsOle.GetString(2)
                        valcp = MesresultatsOle.GetString(3)
                        valville = MesresultatsOle.GetString(4)
                        valtel = MesresultatsOle.GetString(5)
                        valfax = MesresultatsOle.GetString(6)
                        valport = MesresultatsOle.GetString(7)
                        valmail = MesresultatsOle.GetString(8)
                        valsite = MesresultatsOle.GetString(9)
                        InsertOle.CommandText = "insert into clients_maintenance (Code_cli, Nom_cli, Adresse_cli, Cp_cli, Ville_cli, Tel_cli, Fax_cli, Port_cli, Courriel_cli, Site_cli) values ('" & valcode & " ', '" & valnom & "', '" & valadr & "', '" & valcp & "', '" & valville & "', '" & valtel & "', '" & valfax & "', '" & valport & "', '" & valmail & "', '" & valsite & "') "
                        InsertOle.ExecuteNonQuery()
                    End While
                    MesresultatsOle.Close()

     

    Mon souci est le suivant : La première insertion se fait sans souci. La boucle s'éxecute une fois, modifie les valeurs des variables de maes différents getstrings, mais l'execution s'arrête lorsque elle arrive la deuxième fois sur l'executenonquery, et la seconde ligne n'est pas copiée.

    Je n'arrive pas à saisir d'où vient mon erreur.

    Pouvez-vous s'il vous plaît m'éclairer un peu??

    vendredi 21 janvier 2011 14:44

Réponses

  • Bonjour,

    Voici ce que tu peux faire :

    InsertOle.Connection = MaconnexionOle
    
    InsertOle.CommandText = "insert into clients_maintenance (Code_cli, Nom_cli, Adresse_cli, Cp_cli, Ville_cli, Tel_cli, Fax_cli, Port_cli, Courriel_cli, Site_cli)
    select code, nom, adr, cp, ville, tel, fax, port, mail, siteinter from MaTable"
    
    InsertOle.ExecuteNonQuery()
    

    Avec un INSERT INTO ... SELECT, tu fais tout en une seule commande.

    Cordialement,

    Thomas


    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    • Marqué comme réponse guznat vendredi 21 janvier 2011 15:42
    vendredi 21 janvier 2011 15:18

Toutes les réponses

  • Bonjour,

    Voici ce que tu peux faire :

    InsertOle.Connection = MaconnexionOle
    
    InsertOle.CommandText = "insert into clients_maintenance (Code_cli, Nom_cli, Adresse_cli, Cp_cli, Ville_cli, Tel_cli, Fax_cli, Port_cli, Courriel_cli, Site_cli)
    select code, nom, adr, cp, ville, tel, fax, port, mail, siteinter from MaTable"
    
    InsertOle.ExecuteNonQuery()
    

    Avec un INSERT INTO ... SELECT, tu fais tout en une seule commande.

    Cordialement,

    Thomas


    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    • Marqué comme réponse guznat vendredi 21 janvier 2011 15:42
    vendredi 21 janvier 2011 15:18
  • Bonjour,

    Le insert into...select est une commande fort intéressante.

    Toutefois, access pose des problèmes pour la  traiter dès lors que le nombre d'enregistrement est trop important...

    Donc ma solution citée plus haut est une bonne façon de contourner le problème, à ceci près qu'il faut inclure le 

    InsertOle.Connection=MaconnectionOle

    DANS la boucle While.


    Celui qui ne sait rien en sait autant que celui qui n'en sait pas plus!!
    mardi 1 février 2011 09:20