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 6 et antérieur Discussion :

Recherche entre deux tables


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 41
    Par défaut Recherche entre deux tables
    Bonjour
    Voilà encore une fois un autre problème je souhaite extraire les lignes qui se trouvent dans une table1, et qui ne se trouvent pas dans une table2.
    Celà est possible avec Sql si on fait le (select champ1 from table1 where champ1 not in (select champ1 from table2))
    Je pouvais intégrer cette ligne Sql avec un bd.Execute("select ....") et ca marchera, mais le problème que j'ai c'est mes deux tables ne sont pas dans la meme base de données
    si je fais une boucle pour rechercher les lignes desirees, cela va me prendre un immense temp sachant que les deux tables contiennent dans les environs de 30000 lignes.
    Cela sera une grande perte de temp si on dit pas blocage avec une boucle ordinaire si on veut juste chercher deux ou trois lignes

    Quelqu'un a une idée peut etre?
    Merci à vous d'avance, j'ai confiance en vous

  2. #2
    Membre éprouvé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Par défaut
    Je ne l'ai jamais testé mais je sais qu'il existe des SGBD qui permettent de créer des vues sur des tables appartenant à des bases de données différentes.

    Tu fais ta requête sur la vue et le reste est géré par ton SGBD.

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Par défaut
    Sous oracle on a le DBLink, ça marche pas mal.

  4. #4
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 41
    Par défaut
    Effectivement, pour les gros SGBD, y'a des outils qui permettent le faire, cependant, je n'utilise que MS Access, deux bd access que j'essai de lié leurs tables pour une recherche, mais je trouve toujours pas une solution optimale.

  5. #5
    Membre éprouvé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Par défaut
    Tu peux, même sous Access, importer une des tables dans l'autre base et de faire ta requête.
    Si tu veux faire en VB ce qui relève des compétences de ton SGBD tu risques d'avoir de mauvaises surprises.

  6. #6
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 41
    Par défaut
    Pour l'importation c'eest ce que je veux faire, bref, j'ai fait un bout de code comme suivant, il vérifi si les deux tables ont le meme recordcount, sinon il vide la 2éme et la remplie avec les nouvelles valeurs, ca c'est gros probléme, ca prend du temp comme je l'ai dit, et ca peut planter meme la machine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    If t6.RecordCount > t7.RecordCount Then
     
        base3.Execute ("DELETE FROM produit")
        t6.MoveFirst
        Do Until t6.EOF
            t7.AddNew
            For i = 0 To 59
                t7.Fields(i) = t6.Fields(i)
            Next i
            t7.Update
        t6.MoveNext
        Loop
     
    End If
    LE code suivant je l'ai optimisé pour que ce ne soit pas lourd pour la recherche, j'ai pensé à utiliser l'argument TOP du SQL d'access, (LIMIT pour d'autres SGBD), puisque ma table contient une clé primaire qui par defaut un Numero Auto, donc, la variable NM (Integer) contient la soustraction des deux recordcount pour obtenir le nombre de lignes qui font la différence, et je les lets en ordre decroissant.
    La variable Req (String) contient la requete SQL à executer pour obtenir les lignes manquants, avec le TOP comme vous le remarquez qui a comme valeur la variable NM.
    Cette méthode ne me donne pas toujours un bon résultat, y'a toujours des lignes manquant ou bien des lignes de surplus, surtout que j'ai des relations complexes entre les tables.
    J'attend toujours une idée, je sais qu'il existe une solution, (Je perd pas éspoire )

    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
    If t.RecordCount > t1.RecordCount Then
    NM = t.RecordCount - t1.RecordCount
    Req = "Select TOP " & NM & " [num fp], numot, cc, date, bc, naot, regime, observation, qf, ptb, stb, deche, dateot, qd from planing ORDER BY numot DESC"
        t8.MoveFirst
        Do Until t8.EOF
                t1.AddNew
                t5.AddNew
                For i = 0 To 13
                    t1.Fields(i) = t8.Fields(i)
                Next i
                t5.Fields(0) = t8.Fields(1)
                t5.Fields(8) = "N"
                t1.Update
                t5.Update
        t8.MoveNext
        Loop
    End If
    Et Merci encore à vous

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

Discussions similaires

  1. Recherche entre deux tables
    Par Kreepz dans le forum Langage SQL
    Réponses: 9
    Dernier message: 06/08/2014, 13h31
  2. PROBLEME DE JOINTURE ENTRE DEUX TABLE
    Par DarkMax dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/01/2005, 15h11
  3. Transfert entre deux tables
    Par nyarla01 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 18/10/2004, 14h36
  4. [VB.NET] ComboBox lien entre deux tables
    Par VDB1 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/07/2004, 12h15
  5. Jointure entre deux tables et résultat
    Par Asdorve dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/06/2004, 14h50

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