Traitée Requête avec 2 bases de données SQL CE

  • mercredi 25 avril 2012 08:56
     
     

    Bonjour,

    Je cherche à créer 1 requête avec 2 bases de données SQL CE.

    Je programme en VB .Net sous Visual Studio 2010 Professionnel.

    J'ai 2 variables qui me permettent d'exécuter sans aucun problème des requêtes sur 1 base de donnée SQL CE


        Friend connection_bdd_appli As SqlCeConnection
        Friend connection_bdd_projet As SqlCeConnection

    Mais lorsqu'il s'agit d'exécuter 1 requête qui utilise les 2 bases de données, je ne sais pas faire, ni même si cela est possible en SQL CE.

    Si cela est possible, je cherche à lister tous les NomComposant d'une table Table1 dans la base connection_bdd_projet qui n'existent pas dans la table Composant (champ Nom) dans la base connection_bdd_appli.

    Je vous remercie d'avance pour votre aide.

    Stéphane

    PS :

    Je mets 1 exemple d'utilisation d'1 requête sur 1 base de donnée SQL CE dans VB .Net :


        Sub remplit_composant(nom_composant As String)

            Dim req As String
            Dim sdr As SqlCeDataReader
            Dim sc As SqlCeCommand

            req = "Select C.Nom AS C_Nom, M.Nom AS M_Nom "
            req &= "From Composant C "
            req &= "LEFT OUTER JOIN Marque AS M ON C.NuméroMarque = M.NuméroAuto "
            req &= "Where C.Nom = '" & nom_composant & "'"

            sc = New SqlCeCommand(req, connection_bdd_appli)

            sdr = sc.ExecuteReader

            If sdr.Read Then

                Me.TextBox_Marque.Text = sdr.Item("M_Nom").ToString
                Me.TextBox_NomComposant.Text = sdr.Item("C_Nom").ToString

            End If

            sdr.Close()

        End Sub




Toutes les réponses

  • jeudi 26 avril 2012 15:18
    Modérateur
     
     Traitée

    Avec SQL CE il n'est pas possible de faire des requêtes inter bases de données. Il faudra voir du côté de votre application pour cela. Il me semble que Linq permet de faire cela rapidement

    ++


    MCDBA | MCITP SQL Server 2005 / SQL Server 2008 | LPI Linux 1

    • Marqué comme réponse Stéphane2009 jeudi 26 avril 2012 16:25
    •  
  • jeudi 26 avril 2012 16:25
     
     Traitée

    Problème réglé

    Comme ce n'est donc pas possible avec SQL CE, et comme je n'utilise pas Linq (je n'ai jamais réussi à l'utiliser quand on utilise les options Option Strict ON et Option Explicit ON) donc  j'ai réglé mon problème en faisant 2 requêtes...

        Structure structure_vérification_composants_fs

            Dim ok As Boolean
            Dim composants_manquants As List(Of structure_composant_manquant)

        End Structure

        Structure structure_composant_manquant

            Dim NuméroFS As Integer
            Dim NuméroSousFS As Integer
            Dim NomComposant As String

        End Structure

        Function vérification_composants_fs() As structure_vérification_composants_fs

            Dim résultat As New structure_vérification_composants_fs
            Dim composant_manquant As structure_composant_manquant

            Dim req_projet, req_appli As String
            Dim sc_projet, sc_appli As SqlCeCommand
            Dim sdr_projet, sdr_appli As SqlCeDataReader

            résultat.ok = True
            résultat.composants_manquants = New List(Of structure_composant_manquant)

            req_projet = "Select NuméroFS, NuméroSousFS, NomComposant "
            req_projet &= "From Conception C, ConceptionComposants "
            req_projet &= "Where NuméroComposant = C.NuméroAuto"

            sc_projet = New SqlCeCommand(req_projet, connection_bdd_projet)

            sdr_projet = sc_projet.ExecuteReader

            While sdr_projet.Read

                req_appli = "Select NuméroAuto "
                req_appli &= "From Composant "
                req_appli &= "Where Nom = '" & sdr_projet.Item("NomComposant").ToString & "'"

                sc_appli = New SqlCeCommand(req_appli, connection_bdd_appli)

                sdr_appli = sc_appli.ExecuteReader

                If Not sdr_appli.Read Then

                    composant_manquant = New structure_composant_manquant

                    composant_manquant.NuméroFS = CInt(sdr_projet.Item("NuméroFS"))
                    composant_manquant.NuméroSousFS = CInt(sdr_projet.Item("NuméroSousFS"))
                    composant_manquant.NomComposant = sdr_projet.Item("NomComposant").ToString

                    résultat.ok = False
                    résultat.composants_manquants.Add(composant_manquant)

                End If

                sdr_appli.Close()
                sdr_appli.Dispose()
                sc_appli.Dispose()

            End While

            sdr_projet.Close()
            sdr_projet.Dispose()
            sc_projet.Dispose()

            Return résultat

        End Function

    • Marqué comme réponse Stéphane2009 jeudi 26 avril 2012 16:25
    •