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 :

Probleme dans la propriete fill de dataset


Sujet :

VB.NET

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 80
    Points : 54
    Points
    54
    Par défaut Probleme dans la propriete fill de dataset
    Bonjour,
    base de données =sql server 2008
    visual basic 2010 entreprise

    je veux vérifier la présence des enregistrements ou non dans ma table produit_achetes
    si il existe des produit alors afficher message
    sinon afficher Un msgbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim cn As New SqlConnection("Data Source=US_USER;Initial Catalog=Gestionproduit;Integrated Security=True")
            Dim str As String = "select * from produit_achetes where Id_operation =1 and Mois=" & cbomois.SelectedItem & " and Année=" & cboannée.SelectedItem & "'"
            Dim sda As New SqlDataAdapter(str, cn)
            Dim ds As New DataSet
            sda.Fill(ds)
            If ds.Tables(0).Rows.Count > 0 Then
                MsgBox("Ce Produit existe déjà")
     
            Else
                msgbox("Vous pouvez effectuer l’opération sur ce produit")
            End If
    quand j'execute ce code alors une erreur s'affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Unclosed quotation mark after the character string
    Svp est ce que vous pouvez m'aider a résoudre mon problème

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    En premier lieu, utilise une requête paramétrée au lieu d'une concaténation de chaîne.

    La syntaxe de ta requête n'est pas correct, plus particulièrement au niveau de l'apostrophe à la fin (soit il est en trop, soit il en manque un quelque part avant).

    Si l'objectif est uniquement de connaitre la présence d'un enregistrement, il est peut être plus rapide de d'utiliser un SqlCommand avec un execute scalar plutôt que d'initialiser un dataset.

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 80
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par sinople Voir le message
    En premier lieu, utilise une requête paramétrée au lieu d'une concaténation de chaîne.

    La syntaxe de ta requête n'est pas correct, plus particulièrement au niveau de l'apostrophe à la fin (soit il est en trop, soit il en manque un quelque part avant).

    Si l'objectif est uniquement de connaitre la présence d'un enregistrement, il est peut être plus rapide de d'utiliser un SqlCommand avec un execute scalar plutôt que d'initialiser un dataset.
    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
     
    Imports System.Data.SqlClient
    Public Class FrmCalcul
     
        Dim dt As New DataTable
        Dim cn As New SqlConnection("Data Source=US-PC;Initial Catalog=Gestionproduit;Integrated Security=True")
        Dim cmd As New SqlCommand
     
     
     
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Try
                With cmd
                    .Connection = cn
                    .CommandText = "select count(*) from dbo.Etat_produit_achete where mois=@moiss and annee=@années"
                    .Parameters.AddWithValue("@moiss", cbomois.SelectedItem)
                    .Parameters.AddWithValue("@années", cboannée.SelectedItem)
                End With
                 cmd.connection.open()
                Dim nombre As Integer
                nombre = Int(cmd.ExecuteScalar)
                If nombre = 0 Then
                    Try
                        Dim dts As New VCalcul
                        Dim func As New FCalcul
     
                        dts.gMois = cbomois.SelectedItem
                        dts.gAnnée = cboannée.SelectedItem
     
     
     
                        If func.Calcul(dts) Then
     
                            MsgBox("l'operation se termine avec succès", MessageBoxButtons.OK)
                            cbomois.SelectedIndex = -1
                            cboannée.SelectedIndex = -1
                            cmd.Parameters.Clear()
     
                            Exit Sub
                        Else
                            MsgBox("Erreur Inconnue")
                            cmd.Parameters.Clear()
                        End If
                    Catch ex As Exception
                        MsgBox(ex.Message)
                    End Try
                Else
                    MsgBox("Vous ne pouvez pas effectuer cette operation car elle existe deja ", MessageBoxButtons.OK)
                    cmd.Parameters.Clear()
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
            Finally
     
               cmd.connection.close()
            End Try
     
        End Sub
    si la variable nombre=0 alors effectuer le calcule sinon afficher un message
    je recois deux type d'erreurs:
    la conexion n'est pas fermée
    ma premiere question est ou mettre les open et close ?
    si par exemple je calcule l'operation pour le mois 8 et L'année 2014 (l'operation est deja calculée pour le mois 8 ) alors il n'entre jamais dans le else et n'affiche pas MsgBox("Vous ne pouvez pas effectuer cette operation car elle existe deja ", MessageBoxButtons.OK)

    Svp est ce que vous pouvez m'aider a resoudre et a comprendre ce probleme?
    Merci d'avance?

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Hello concernant la connexion il est conseiller d'utiliser la syntaxe suivante:

    Using oneconnection as New SqlConnection(connectionstring)
    oneconnection.open
    Dim onecommand As New SqlCommand(querystring,oneconnection)

    ...

    End Using

    Les connexions peuvent être couteuse en performance avec la base de données et des locks peuvent rester sur des enregistrements. Les connexions doivent par conséquent avoir la portée la plus faible possible (pas une variable de classe qui traine). Dans le cas cité, la connexion est fermée et "détruite" dès que ton code sors du bloc using (même avec une exception).

    Pour les paramètres, je te conseille plutôt la surcharge qui permet d'indiquer le type de donnée parce que sinon tu laisses ton code jouer au devinette pour savoir si c'est une string, un nombre, un chiffre ou une date et s'il se plante ben c'est toi qui va jouer au devinette pour trouver l'erreur (et t'en as probablement pas envie :-))

    SelectCommand.Parameters.Add("@SerialNum", SqlDbType.Int).Value = 239

Discussions similaires

  1. [Débutant] probleme dans reporting sur vs 2013 dataset aggregate ?
    Par minosys dans le forum VB.NET
    Réponses: 0
    Dernier message: 11/09/2014, 22h41
  2. Probleme d'evenement dans les proprietes
    Par timal78 dans le forum Développement Web avec .NET
    Réponses: 1
    Dernier message: 13/03/2013, 20h34
  3. Probleme avec un propriete d'un UserControl dans le designer
    Par Seth77 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 06/01/2009, 18h48
  4. probleme de virtual dans la classe fille
    Par xtaze dans le forum C++
    Réponses: 23
    Dernier message: 26/04/2005, 21h39
  5. Probleme dans ma requete
    Par Kuroro dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/07/2003, 11h14

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