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 :

Enregistrer une valeur NULL dans un sgbd


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Par défaut Enregistrer une valeur NULL dans un sgbd
    Bonsoir,

    j'ai un label1.text qui n'est pas toujours renseigné a l'aide d'un textbox, et derrière ca j'ai une méthode qui enregistre mes labels dans un bdd access,
    le probléme quand je sauvegarde avec label1 vide j'ai une erreur, alors j'ai essayé avec ce code mais ca ne marche pas non plus dés que le label est vide !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Label1.Text Like "" Then
                cmd.Parameters.AddWithValue("Val_dispo8", "")
            Else
                cmd.Parameters.AddWithValue("Val_dispo8", Label1.Text)
            End If
    une solution ?

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 199
    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 199
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Label1.Text = "" Then
        cmd.Parameters.AddWithValue("Val_dispo8", System.DbNull.Value)
      Else
        cmd.Parameters.AddWithValue("Val_dispo8", Label1.Text)
    End If
    je t'ai mis le dbnull parce que ton titre le mentionne ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Par défaut
    Aie mon enregistrement ne s'effectue pas !

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 199
    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 199
    Par défaut
    un message d'erreur ? du code à nous donner ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Par défaut
    aucun message d'erreur juste aucun enregistrement dans la base de donnée, le code de ma méthode :

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    Sub ecrire_sgbd()
            ' Déclaration de la variable cmd
            ' OleDbCommand représentera ici une instruction SQL à exécuter par rapport à une source de données
            Dim cmd As OleDb.OleDbCommand
            ' Déclaration de sql_ajouter, qui contiendra la requête SQL permettant d'ajouter un enregistrement
            Dim sql_ajouter As String
     
            ' On écrit notre requête et on l'assigne à la variable sql_ajouter
            sql_ajouter = "INSERT INTO depart (Inter, Renfort, Datum, Heuro, Ville, Adresse, Raison, dispo1, dispo2, dispo3, dispo4, dispo5, dispo6, dispo7, dispo8) VALUES(Val_inter, Val_renfort, Val_datum, Val_heuro, Val_ville, Val_adresse, Val_nature, Val_dispo1, Val_ dispo2, Val_dispo3, Val_dispo4, Val_dispo5, Val_dispo6, Val_dispo7, Val_dispo8)"
     
            ' Initialisation de la requête
            cmd = New OleDb.OleDbCommand(sql_ajouter, con)
     
            ' On définit les paramètres utilisés pour le bon déroulement de la requête
            ' On assigne à Val_Prenom" le texte contenu dans le textbox txt_ajouter_prenom
            cmd.Parameters.AddWithValue("Val_inter", Label22.Text)
            cmd.Parameters.AddWithValue("Val_renfort", Label32.Text)
            cmd.Parameters.AddWithValue("Val_datum", Label23.Text)
            cmd.Parameters.AddWithValue("Val_heuro", Label24.Text)
            cmd.Parameters.AddWithValue("Val_ville", Label1.Text)
            cmd.Parameters.AddWithValue("Val_adresse", Label4.Text)
            cmd.Parameters.AddWithValue("Val_nature", Label12.Text)
            If Label14.Text = "" Then
                cmd.Parameters.AddWithValue("Val_dispo1", System.DBNull.Value)
            Else
                cmd.Parameters.AddWithValue("Val_dispo1", Label14.Text)
            End If
            If Label16.Text = "" Then
                cmd.Parameters.AddWithValue("Val_dispo2", System.DBNull.Value)
            Else
                cmd.Parameters.AddWithValue("Val_dispo2", Label16.Text)
            End If
            If Label25.Text = "" Then
                cmd.Parameters.AddWithValue("Val_dispo3", System.DBNull.Value)
            Else
                cmd.Parameters.AddWithValue("Val_dispo3", Label25.Text)
            End If
            If Label26.Text = "" Then
                cmd.Parameters.AddWithValue("Val_dispo4", System.DBNull.Value)
            Else
                cmd.Parameters.AddWithValue("Val_dispo4", Label26.Text)
            End If
            If Label27.Text = "" Then
                cmd.Parameters.AddWithValue("Val_dispo5", System.DBNull.Value)
            Else
                cmd.Parameters.AddWithValue("Val_dispo5", Label27.Text)
            End If
            If Label28.Text = "" Then
                cmd.Parameters.AddWithValue("Val_dispo6", System.DBNull.Value)
            Else
                cmd.Parameters.AddWithValue("Val_dispo6", Label28.Text)
            End If
            If Label29.Text = "" Then
                cmd.Parameters.AddWithValue("Val_dispo7", System.DBNull.Value)
            Else
                cmd.Parameters.AddWithValue("Val_dispo7", Label29.Text)
            End If
            If Label30.Text = "" Then
                cmd.Parameters.AddWithValue("Val_dispo8", System.DBNull.Value)
            Else
                cmd.Parameters.AddWithValue("Val_dispo8", Label30.Text)
            End If
     
            ' Ouverture de la connexion
            cmd.Connection.Open()
            ' Exécution de la requête SQL
            cmd.ExecuteReader()
            ' Fermeture de la connexion
            cmd.Connection.Close()
     
            ' On efface les deux "textbox"
            'txt_ajouter_prenom.Text = ""
            'txt_ajouter_nom.Text = ""
     
            ' Message indiquant que le nouveau contact a bien été enregistré
            Label33.Text = "Ticket sauvegardé dans la base."
     
            ' On vide le dataset
            ds.Clear()
     
            ' et on le réaffiche en faisant appel à Connexion()
            ' pour que notre nouveau contact apparaisse bien
            ' Connexion()
     
        End Sub

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 199
    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 199
    Par défaut
    schema de la base créé dans visual studio ?
    souvent on voit ici des gens qui disent que la base de données ne change pas et à priori ca serait parce qu'à chaque exécution visual studio regénère la base de données dans le dossier de compilation
    auquel cas la solution serait de mettre la base ailleurs et de la créer hors de vs
    pour vérifier ca, tu peux faire un select count(*) from depart avant et après ton insert pour voir si le nombre augmente bien à l'exécution

    et as tu bien vérifié dans la base ? parce que si tu la requete insert into n'insert que dans la base de données, ca ne s'occupe pas de rafraichir les données sur ton appli


    sinon avoir 8 valeurs possibles dans la table n'est pas un bon design
    en général on fait une table à part qui a une colonne clé étant la clé de l'autre table, une colonne valeur
    et donc on peut avoir entre 0 et x valeurs pour un éléments, ca ne limite pas à 8 et le code est plus court car c'est une boucle pour gérer les x valeurs (et donc il n'y a pas 8 labels en dur non plus sur le form, un seul au départ et un bouton pour en ajouter
    enfin tu n'es pas obligé de suivre ce conseil si tu es débutant, mais tu pourras y penser lors de ton prochain projet

    autre chose, une requête est quelque chose qui peut planter, il faut donc un try catch englobant le code
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/03/2007, 14h53
  2. Réponses: 3
    Dernier message: 10/08/2005, 11h11
  3. Inserer une valeur NULL dans un champ datetime
    Par Karibou dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 10/08/2005, 10h58
  4. Affcecter une valeur NULL dans une requete paramétrée
    Par thiouwz2 dans le forum Bases de données
    Réponses: 7
    Dernier message: 05/11/2004, 15h02
  5. Passer une valeur Null dans un argument de procédure
    Par preempalver dans le forum VBA Access
    Réponses: 5
    Dernier message: 30/12/2003, 20h52

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