IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Faciliter une requete insert


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut Faciliter une requete insert
    Bonjour tout le monde !!

    Je développe une application qui permettra d'insérer dans une base de données des articles a partir d'un fichier Excel. Seuls 12 champs sont concernés mais la table comporte plus de 280 champs qui sont soient nul, ou a 'O', a 'N', a '1' ou '0'. Et je dois tous les renseignés car ils n'ont pas de valeurs par défaut. Je précise que je ne peux pas toucher a la table.

    J'ai donc fait le traitement en utilisant une requete paramétré pour les 12 champs concernés mais je ne me vois pas faire un nouveau paramètre par champ puis le renseigné et enfin l'intégré dans la requete d'insert, ca ferait 560 ligne de parametrage et une ligne d'insert qui ferait des mètres.

    Comment pourrais je faire autrement ? Je pensais faire des update a répétition mais avec VB.NET si je suis obligé de faire une nouvelle SqlCommand par update avec fermeture et ouverture de la connection j'aurais pas fini avant longtemps.

    Voyez vous une solution ?

    Merci pour vos réponses

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    so ton sgbdr (c'est fou le monde qui ne le précise pas) accepte les procédures stockées alors tu peux en faire une qui demande 12 paramètres et insert les 280 champs

    ou dans le pire des cas une sub

    (enfin le design doit être étrange, parce que 280 champs dans un table ... et qu'ils n'aient pas de valeur par défaut ...)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut
    Oops désolé c'est SQL Server.

    Pourrais tu préciser ce que tu entends par faire une sub et comment inséré les autres champs dans la procédure stockée ?

    Voila comment j'ai fait la mienne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    ctn = New SqlClient.SqlConnection
                ctn.ConnectionString = Connexion a ma base
                ctn.Open()
                cmd = New SqlClient.SqlCommand
                cmd.Connection = ctn
     
                With cmd.Parameters
                    .Add(New SqlParameter("@codearticle", SqlDbType.VarChar, 30))
                    .Add(New SqlParameter("@designation", SqlDbType.VarChar, 100))
                    .Add(New SqlParameter("@codefamille", SqlDbType.VarChar, 30))
                    .Add(New SqlParameter("@sousfamille", SqlDbType.VarChar, 30))
                    .Add(New SqlParameter("@motdirecteur", SqlDbType.VarChar, 100))
                    .Add(New SqlParameter("@typeproduit", SqlDbType.SmallInt, 2))
                    .Add(New SqlParameter("@natureproduit", SqlDbType.Char, 1))
                    .Add(New SqlParameter("@unite", SqlDbType.VarChar, 30))
                    .Add(New SqlParameter("@coutfabric", SqlDbType.Float, 8))
                    .Add(New SqlParameter("@delai", SqlDbType.SmallInt, 2))
                    .Add(New SqlParameter("@seuil", SqlDbType.Float, 8))
                    .Add(New SqlParameter("@qteeco", SqlDbType.Float, 8))
                End With
                With cmd
                    .Parameters("@codearticle").Value = pcodearticle
                    .Parameters("@designation").Value = pdes
                    .Parameters("@codefamille").Value = pfam
                    .Parameters("@sousfamille").Value = pssfam
                    .Parameters("@motdirecteur").Value = pmotd
                    .Parameters("@typeproduit").Value = ptypeprod
                    .Parameters("@natureproduit").Value = pnature
                    .Parameters("@unite").Value = punite
                    .Parameters("@coutfabric").Value = pcoutfab
                    .Parameters("@delai").Value = pdelai
                    .Parameters("@seuil").Value = pseuil
                    .Parameters("@qteeco").Value = pqteeco
                End With
                cmd.CommandText = "insert into article(codearticle,designation1,codefamille,sousfamille,motdirecteur,typeproduit,artachoufab,unite,coutfabrication,delaiappromononiv,seuilminimum,quantiteeconomique) values (@codearticle, @designation, @codefamille, @sousfamille, @motdirecteur, @typeproduit, @natureproduit, @unite, @coutfabric, @delai, @seuil, @qteeco)"
                cmd.ExecuteNonQuery()
                ctn.Close()
    Pour ce qui est de la table, elle provient d'un ERP et je n'ai pas le droit de la modifier. Il y a énormément de champs car on peut en faire une utilisation très poussée ce qui n'est pas notre cas donc beaucoup de champs inutiles.

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut
    C'est ce que j'ai fait au dessus mais y a t il un moyen de rentrer des données SQL fixes plus rapidement que passer par des paramètres ?

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into table (ch1, ch12,ch13,ch280) values (@ch1,@ch12,1,'N')
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. compl. nombre decimal dans une requete insert
    Par loic72 dans le forum Access
    Réponses: 2
    Dernier message: 31/05/2006, 11h43
  2. [VB6] exécution d'une requete Insert dans oracle 9.2
    Par krest dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 21/04/2006, 13h28
  3. petite aide sur une requete INSERT INTO
    Par bonneti dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/03/2005, 15h17
  4. Erreur lors d'une requete insert into.. select
    Par Mr N. dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 04/11/2004, 17h32
  5. effectuer une requete insert avec 'values' ET 'select'
    Par delaio dans le forum Bases de données
    Réponses: 4
    Dernier message: 15/08/2004, 19h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo