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

Windows Forms Discussion :

ajouter une valeur max depuis une BDD


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2009
    Messages : 28
    Par défaut ajouter une valeur max depuis une BDD
    Bonjour,


    J'ai form où il y a un textbox1 qui doit contenir la valeur maximum + 1 .

    La valeur max est le nombre maximum trouvé dans une colonne "numero" à la table "membre" de ma BDD SQL Server.


    donc, j'ai fait comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim sdd1 As New SqlDataAdapter("select max(m.numero) from membre m", conx)
    sdd1.Fill(ds, "req1")
    TextBox1.Text = ds.Tables("req1").ToString
    Si quelqu'un peut m'aider ou me filer un tutoriel ça sera sympa de sa part !

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par ygeeg Voir le message
    donc, j'ai fait comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim sdd1 As New SqlDataAdapter("select max(m.numero) from membre m", conx)
    sdd1.Fill(ds, "req1")
    TextBox1.Text = ds.Tables("req1").ToString
    Pourquoi utiliser un DataSet et un DataAdapter pour récupérer juste une valeur ?

    Il suffit d'utiliser DbCommand.ExecuteScalar :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim command As New SqlCommand("select max(m.numero) from membre m", conx)
    TextBox1.Text = command.ExecuteScalar().ToString()

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2009
    Messages : 28
    Par défaut
    Merci pour le temps que vous avez mis à me répondre
    Citation Envoyé par tomlev Voir le message
    Il suffit d'utiliser DbCommand.ExecuteScalar :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim command As New SqlCommand("select max(m.numero) from membre m", conx)
    TextBox1.Text = command.ExecuteScalar().ToString()
    Merci, c'est en mode connecté, non?
    C'est quoi l'équivalent en mode déconnecté ?

    @sebnantes : Merci pour le tuto, il est bien surtout que je ne sais pas beaucoup sur le mode connecté, il va être d'une grande utilité pour moi

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par ygeeg Voir le message
    Merci, c'est en mode connecté, non?
    C'est quoi l'équivalent en mode déconnecté ?
    Dans ton code aussi tu es en mode connecté... le mode déconnecté, c'est si tu n'utilises QUE le dataset, sans utiliser la connexion à la base de données. Là tu utilises un DataAdapter, donc la connexion à la base...

    Si tu as déjà tes données dans une table de ton DataSet, tu peux obtenir la valeur recherchée comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim maxNumero As Integer = 1
    Dim result As Object = ds.Tables("membre").Compute("MAX(numero) + 1", Nothing)
    If result <> DBNull.Value Then
        maxNumero = CInt(result)
    End If
    Et là c'est effectivement du mode déconnecté, tu travailles sur les données que tu as déjà en mémoire. Si tu n'as pas les données en mémoire, tu ne peux pas travailler en déconnecté...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2009
    Messages : 28
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim maxNumero As Integer = 1
    Dim result As Object = ds.Tables("membre").Compute("MAX(numero) + 1", Nothing)
    If result <> DBNull.Value Then
        maxNumero = CInt(result)
    End If
    Merci, ça marche nickel.

    J'ai lu le tutoriel qui m'a fournit Mr. sebnantes (mode connecté) et apparemment c'est de nouveau pour moi.


    Juste une petite question qui peut m'aider peut être à faire la différence entre les deux modes connecté et déconnecté:

    Dans mes codes, je n'utilise pas les deux méthodes de connexion Open et Close, est ce que cela veut dire que j'utilise le mode déconnecté ? Je ne fais que déclarer la chaine de connexion dans un module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public conx As New SqlConnection("data source=..;initial catalog=...;integrated security=sspi")
    Je déclare aussi dans le module un DataRow, DataSet, SQLCommandBuilder , des SqlDataAdapter pour chaque table de ma BDD, puis je les utilise pour mes opérations d'ajout, update et delete..

    Merci encore pour votre patience pour répondre à mes quetions

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par ygeeg Voir le message
    Dans mes codes, je n'utilise pas les deux méthodes de connexion Open et Close, est ce que cela veut dire que j'utilise le mode déconnecté ?
    Le SqlDataAdapter ouvre la connexion si elle n'est pas déjà ouverte.

    Mode connecté = requêtes directes sur la base de données
    Mode déconnecté = travail sur un DataSet

    Le DataAdapter permet de "faire le lien" entre les deux : il se connecte à la base pour remplir le DataSet, et mettre à jour la base en fonction des changements effectués dans le DataSet

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Par défaut
    En gros, tu passes par un DataSet ? Le mieux serait que tu passes par IdataReader, c'est plus simple pour récupérer une valeur.

    Donc voilà pour le tuto dessus : http://dotnet.developpez.com/articles/ado1/vbnet/

    Et sinon pour ton code ce serait un truc du genre :

    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
     
    Dim strConnexion As String = "Data Source=localhost; Integrated Security=SSPI;" & "Initial Catalog=''le nom de ta bas''"
     
    try
     
         Dim oConnection As SqlConnection = New SqlConnection(strConnexion)
         oConnection.Open()
         Dim req as String = "select max(m.numero) as Max_num from membre m"
         Dim oCommand As New SqlCommand(req, oConnection)
         Dim reader As IdataReader = oCommand.executeReader()
     
     
         If reader.read() Then TextBox1.Text = reader("Max_num")
     
         oConnection.close()
    Catch e As Exception 
         MsgBox(e.Message)
    End try
    Corrigez moi si j'ai oublié un truc ^^

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Par défaut
    Oups, il y a plus simple...je laisse ma solution ou pas ?

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

Discussions similaires

  1. [Toutes versions] Rechercher une valeur max dans une plage de cellules variable
    Par Laur3nt62 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/05/2011, 19h34
  2. Recuperer l'adresse d'une valeur (Max d'une plage définie)
    Par karim19 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 30/10/2009, 12h32
  3. tester une valeur et affecter une valeur
    Par Elise0251 dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 29/07/2009, 16h31
  4. Réponses: 10
    Dernier message: 30/11/2006, 23h06
  5. Sélection d' une valeur max depuis 2 tables
    Par ipeteivince dans le forum Requêtes
    Réponses: 4
    Dernier message: 13/05/2005, 17h37

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