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 :

Erreur avec requête paramétrée [Débutant]


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2011
    Messages : 43
    Points : 46
    Points
    46
    Par défaut Erreur avec requête paramétrée
    Bonjour,

    j'utilise des requêtes paramétrées pour interagir avec SQL Server. J'utilise une interface pour récupérer mes données utilisateur mais certains champs peuvent rester vide. Ces dits-champs sont bien en facultatif dans la base de données.

    Cependant lors de l'exécution de ma requète, j'ai une erreur de conversion de type de données car j'ai laissé un champs vide. Commentpuis-je le gérer ?
    Faut-il que je crée une requête pour chaque cas de figure ?

    Merci d'avance pour votre aide

    Voici le code utilisé :
    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
     
    req3 = "INSERT INTO T_TestErgo (Date, Temps500, Temps1000, Temps1500, Temps2000, Watts, NumRameur, TempsGeneral, CadenceMoy, TempsMoy) VALUES (@Date, @Temps500, @Temps1000, @Temps1500, @Temps2000, @Watts, @NumRameur, @TempsGene, @Cadence, @TempsMoy)"
     
    Using query1 As New SqlCommand(req3, Maconnexion)
                        query1.Parameters.Add("@NumRameur", SqlDbType.Int).Value = NumRameur
                        query1.Parameters.Add("@Date", SqlDbType.Date).Value = DateTest.Text
                        query1.Parameters.Add("@Temps500", SqlDbType.Time).Value = TxtErgo500.Text
                        query1.Parameters.Add("@Temps1000", SqlDbType.Time).Value = TxtErgo1000.Text
                        query1.Parameters.Add("@Temps1500", SqlDbType.Time).Value = TxtErgo1500.Text
                        query1.Parameters.Add("@Temps2000", SqlDbType.Time).Value = TxtErgo2000.Text
                        query1.Parameters.Add("@TempsMoy", SqlDbType.Time).Value = TxtErgoTempsMoy.Text
                        query1.Parameters.Add("@TempsGene", SqlDbType.Time).Value = TxtErgoTemps.Text
                        query1.Parameters.Add("@Watts", SqlDbType.Int).Value = TxtErgoWatts.Text
                        query1.Parameters.Add("@Cadence", SqlDbType.Int).Value = TxtErgoCadence.Text
                        If query1.ExecuteNonQuery() Then
                            MsgBox("Les données ont bien été ajoutée", MsgBoxStyle.Information, "Status")
                        Else
                            MsgBox("Les données n'ont pas pu être ajoutée", MsgBoxStyle.Critical, "Status")
                        End If
                    End Using

  2. #2
    Membre éprouvé
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Points : 924
    Points
    924
    Par défaut
    Bonjour,
    query1.Parameters.Add("@Date", SqlDbType.Date).Value = DateTest.Text
    L'erreur ne viendrait pas de là ? dateTime != text
    ou de la :
    query1.Parameters.Add("@Watts", SqlDbType.Int).Value = TxtErgoWatts.Text
    query1.Parameters.Add("@Cadence", SqlDbType.Int).Value = TxtErgoCadence.Text
    int != text

    quelquechose comme ceci devrait aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    query1.Parameters.Add("@Watts", SqlDbType.Int).Value =String.IsNullOrEmpty(TxtErgoWatts.Text)?0:Int.Parse(TxtErgoWatts.Text)
    query1.Parameters.Add("@Cadence", SqlDbType.Int).Value =String.IsNullOrEmpty(TxtErgoCadence.Text)?0:Int.Parse(TxtErgoCadence.Text)

  3. #3
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2011
    Messages : 43
    Points : 46
    Points
    46
    Par défaut
    Bonsoir,

    Je te remercie pour ta réponse. Je pense que tu as raison, car mon message d'erreur est un message de problème de conversion de genre mais uniquement si le champs de saisie est vide sinon ca ne pose pas de problème vu qu'il y a une valeur dans la propriété .text correspondant au type du champs de la base SQL.

    Par contre, j'ai essayé d'intégrer le code que tu m'as donné il n'accepte pas le ?
    As tu une idée de ce qui lui déplait ?

    Merci d'avance pour ton aide

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 157
    Points : 25 077
    Points
    25 077
    Par défaut
    il t'a mis du c#, il y a des convertisseurs vers vb.net sur le net
    le ? équivaut au iif(condition, true value, false value)

    si tu veux mettre NULL dans sql server, il faut mettre system.dbnull.value dans le value du parameter
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2011
    Messages : 43
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    Cela fonctionne correctement. Merci à tous les deux pour votre aide.

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

Discussions similaires

  1. [AC-2003] Formulaire avec requête paramètrée
    Par telliouze dans le forum IHM
    Réponses: 2
    Dernier message: 29/09/2009, 14h24
  2. [AC-2003] Update avec requête paramétrée
    Par buzz73 dans le forum VBA Access
    Réponses: 2
    Dernier message: 25/08/2009, 19h24
  3. Réponses: 9
    Dernier message: 18/12/2008, 13h15
  4. Erreur avec le paramètre binding
    Par verbose dans le forum JSF
    Réponses: 11
    Dernier message: 24/07/2007, 09h36
  5. [Sql server 2k] Lot DTS avec requête paramétrée
    Par Overkill06 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 11/06/2007, 11h44

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