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 :

SELECT.. FROM.. WHERE.. AND.. AND.. !


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Technical Team Leader
    Inscrit en
    Avril 2010
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technical Team Leader
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 235
    Par défaut SELECT.. FROM.. WHERE.. AND.. AND.. !
    bonjour,

    je souhaiterais faire un SELECT conditionnel avec 3 conditions.

    en 1er je sélectionne des élément d'une table.
    en 2ème j'exécute un Test pour savoir si l'enregistrement existe dans la table
    en 3ème s'il n'existe pas je l'enregistre dans la new table.

    voici mon code :

    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
     
        Public Sub selectAxeRUN()
     
            ObjetCommand.CommandText = "SELECT * FROM Axes WHERE ftp=No AND statut=" & Chr(34) & "New" & Chr(34) & ""
     
            Dim myREADERnoFTP As OleDbDataReader = ObjetCommand.ExecuteReader()
     
            Do While myREADERnoFTP.Read()
     
                ObjetCommand1.CommandText = "SELECT Nom_client, Num_client, Nom_axe FROM Axes1 WHERE ((Nom_client = @Nom_client) AND (Num_client = @Num_client) AND (Nom_axe = @Nom_axe));"
                ObjetCommand1.Parameters.Add("@Nom_client", OleDbType.VarChar).Value = myREADERnoFTP.Item(1).ToString()
                ObjetCommand1.Parameters.Add("@Num_client", OleDbType.VarChar).Value = myREADERnoFTP.Item(2).ToString()
                ObjetCommand1.Parameters.Add("@Nom_axe", OleDbType.VarChar).Value = myREADERnoFTP.Item(3).ToString()
     
                Dim resultat As String = ObjetCommand1.ExecuteScalar
     
                If resultat = Nothing Then
                    ObjetCommand2.CommandText = " INSERT INTO [Axes1] ( Nom_client, Num_client, Nom_axe, FDC_mini, FDC_maxi, statut, ftp )  VALUES ( @Nom_client, @Num_client, @Nom_axe, @FDC_mini, @FDC_maxi, @statut, @ftp );"
                    ObjetCommand2.Parameters.Add("@Nom_client", OleDbType.VarChar).Value = myREADERnoFTP.Item(1).ToString()
                    ObjetCommand2.Parameters.Add("@Num_client", OleDbType.VarChar).Value = myREADERnoFTP.Item(2).ToString()
                    ObjetCommand2.Parameters.Add("@Nom_client", OleDbType.VarChar).Value = myREADERnoFTP.Item(3).ToString()
                    ObjetCommand2.Parameters.Add("@Num_client", OleDbType.VarChar).Value = myREADERnoFTP.Item(4).ToString()
                    ObjetCommand2.Parameters.Add("@Nom_client", OleDbType.VarChar).Value = myREADERnoFTP.Item(5).ToString()
                    ObjetCommand2.Parameters.Add("@Num_client", OleDbType.VarChar).Value = "AJ"
                    ObjetCommand2.Parameters.Add("@Nom_client", OleDbType.Boolean).Value = True
     
                    ObjetCommand2.ExecuteNonQuery()
     
                Else
     
                End If
                resultat = Nothing
            Loop
     
            myREADERnoFTP.Close()
     
            ObjetConnection.Close()
        End Sub
    voici ma table :



    Le problème c'est que lorsque je fais le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Nom_client, Num_client, Nom_axe FROM Axes1 WHERE ((Nom_client = @Nom_client) AND (Num_client = @Num_client) AND (Nom_axe = @Nom_axe));
    A la lecture, étape 1, il détecte bien qu'il n'y a pas de champs identique. il passe a l'étape 2 enregistre dans la table étape 3.

    puis lorsqu'il teste le 2ème élément il détecte qu'il existe ??? alors que ma condition est sur les 3 and pas que sur 1 seul, ma variable resultat = test
    WHERE ((Nom_client = @Nom_client) AND (Num_client = @Num_client) AND (Nom_axe = @Nom_axe))
    je ne pige pas ??

    pouvez vous m'orienter merci

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    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 197
    Par défaut
    je ne comprends pas ton explication
    quand je regarde le code j'ai l'impression que tu fais une erreur qu'on rencontre souvent : on ne parcours pas le résultat d'une requete pour faire x autres
    il faut faire une seule requete pour tout faire, c'est le principe d'une base de données

    il est par exemple possible de faire
    insert into T (c1, c2) select d1, d2 from T2
    on peut faire une grosse requete avec des where et autres selon le sgbdr
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre éclairé
    Homme Profil pro
    Technical Team Leader
    Inscrit en
    Avril 2010
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technical Team Leader
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 235
    Par défaut
    En fait j'ai une table local et une table en FTP que je copi, les champs de la table FTP sont lié dans la local, il faut que je compare les champs pour soit les rajouter ou les modifiés.

    les modifications peuvent se faire des deux coter !!!

    et avec une seule requête SQL je peux faire ça ?

    je veux bien voir

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    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 197
    Par défaut
    Citation Envoyé par tijote Voir le message
    En fait j'ai une table local et une table en FTP que je copi, les champs de la table FTP sont lié dans la local, il faut que je compare les champs pour soit les rajouter ou les modifiés.

    les modifications peuvent se faire des deux coter !!!

    et avec une seule requête SQL je peux faire ça ?

    je veux bien voir
    une table en ftp ?

    dans access on peut faire des tables liées, = mettre un lien vers une table d'une base A dans une base B, access s'occupe de faire transiter les données quand on interroge la table qui en fait n'est pas là
    à tenter ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre éclairé
    Homme Profil pro
    Technical Team Leader
    Inscrit en
    Avril 2010
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technical Team Leader
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 235
    Par défaut
    Oui j'ai une table en local et une table en FTP.

    il y a plusieurs utilisateurs qui remplissent la table. donc le principe est de remplir sa base local puis quand l'user le souhaite (surtout quand il le peu) il met a jour sa table. donc il copi la table FTP dans son Application.StartupPath puis l'application fais une comparaison des tables et met a jour les enregistrement selon la date.

    actuellement mon application fonctionne mais pas en SQL. si en SQL je récupère les valeurs et les mets dans plusieurs tableau a 2 dimensions après je fais un traitement de mise a jour et je remet tout la table FTP...

    ça fonctionne très bien.

    maintenant je ne souhaite pas passer par le tableau, simplement faire des appels et des traitement au fur et a mesure de ma requête SQL.

    voilà j'espère être clair.


    le problème que j'ai c'est sur cette requette :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                ObjetCommand1.CommandText = "SELECT Nom_client, Num_client, Nom_axe FROM Axes1 WHERE ((Nom_client = @Nom_client) AND (Num_client = @Num_client) AND (Nom_axe = @Nom_axe));"
                ObjetCommand1.Parameters.Add("@Nom_client", OleDbType.VarChar).Value = myREADERnoFTP.Item(1).ToString()
                ObjetCommand1.Parameters.Add("@Num_client", OleDbType.VarChar).Value = myREADERnoFTP.Item(2).ToString()
                ObjetCommand1.Parameters.Add("@Nom_axe", OleDbType.VarChar).Value = myREADERnoFTP.Item(3).ToString()
    elle ne prend pas en compte mes 3 conditions, s'il y a un des champs qui correspond il le valide ?

    j'ai mofifié mon code tel qu'il est dans mon appli... je n'ai pas de variable

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    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 197
    Par défaut
    tu peux essayer de contourner en faisant :

    select d'une table => insert dans une collection
    select de l'autre table => insert dans une autre collection

    un (ou plusieurs) coup de linq pour avoir la liste des différences
    boucle
    => insert/update/delete
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/09/2009, 11h41
  2. [COUNT] select ... from ... where count !
    Par tmcgrady dans le forum Langage SQL
    Réponses: 5
    Dernier message: 30/11/2007, 17h29
  3. probleme avec SELECT..FROM..WHERE
    Par VBBBA dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 08/09/2006, 15h58
  4. Pb de syntaxe sql : Sélection SELECT FROM WHERE vide
    Par oceanediana dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 31/07/2006, 15h54
  5. [hibernate][spring]requete select from where IN
    Par whilecoyote dans le forum Hibernate
    Réponses: 1
    Dernier message: 07/04/2006, 09h06

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