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
- Modifié Stéphane2009 mercredi 25 avril 2012 08:57
- Modifié Stéphane2009 mercredi 25 avril 2012 08:59
- Modifié Stéphane2009 mercredi 25 avril 2012 09:00
Toutes les réponses
-
jeudi 26 avril 2012 15:18Modérateur
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
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

