Comment faire une requête dépendant d'un champs de formulaire avec SQL2000Server
2 réponses
Flavien
Bonjour,
Ayant migr=E9 ma base de donn=E9e sur SQLServer, je rencontre=20
un soucis pour la syntaxe des requ=EAtes dans la partie=20
WHERE pour un champs sp=E9cifique dans un formulaire.
Ancienne requ=EAte avec Jet :
SELECT DISTINCTROW Commandes.*, Client=E8le.NomSoci=E9t=E9
FROM Client=E8le INNER JOIN Commandes ON=20
Client=E8le.R=E9fClient =3D Commandes.R=E9fClient
WHERE ((Commandes.R=E9fClient =3D forms ! [Commandes par=20
client] ! R=E9fClient));
Tentative SQL2000:
SELECT dbo.Commandes.*, dbo.Client=E8le.NomSoci=E9t=E9
FROM dbo.Client=E8le INNER JOIN dbo.Commandes ON=20
dbo.Client=E8le.R=E9fClient =3D dbo.Commandes.R=E9fClient
WHERE ????
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Daniel Carollo
Bonjour Flavien!
SQL Server ne sait rien des formulaires ou autres objets d'Access. Il va vous falloir sortir le parametre de la requete. Pour cela, vous pouvez - soit employer une procedure stockee ou une vue, declarer le parametre dans la definition de l'objet, affecter la valeur, puis lancer la requete. - soit construire la requete de facon dynamique, en enchainant le premier bout de requete et la valeur du controle (et non pas le nom du controle).
J'espere que ca vous donne des pistes pour continuer.
-- Daniel :-)
Computing Technologies International - www.computing-tech.com - We provide solutions...
"Flavien" wrote in message news:0b8d01c39883$93010080$ Bonjour, Ayant migré ma base de donnée sur SQLServer, je rencontre un soucis pour la syntaxe des requêtes dans la partie WHERE pour un champs spécifique dans un formulaire.
Ancienne requête avec Jet :
SELECT DISTINCTROW Commandes.*, Clientèle.NomSociété FROM Clientèle INNER JOIN Commandes ON Clientèle.RéfClient = Commandes.RéfClient WHERE ((Commandes.RéfClient = forms ! [Commandes par client] ! RéfClient));
Tentative SQL2000:
SELECT dbo.Commandes.*, dbo.Clientèle.NomSociété FROM dbo.Clientèle INNER JOIN dbo.Commandes ON dbo.Clientèle.RéfClient = dbo.Commandes.RéfClient WHERE ????
Merci d'avance pour votre aide
Bonjour Flavien!
SQL Server ne sait rien des formulaires ou autres objets d'Access. Il va
vous falloir sortir le parametre de la requete. Pour cela, vous pouvez
- soit employer une procedure stockee ou une vue, declarer le parametre dans
la definition de l'objet, affecter la valeur, puis lancer la requete.
- soit construire la requete de facon dynamique, en enchainant le premier
bout de requete et la valeur du controle (et non pas le nom du controle).
J'espere que ca vous donne des pistes pour continuer.
--
Daniel :-)
Computing Technologies International - www.computing-tech.com - We
provide solutions...
"Flavien" <anonymous@discussions.microsoft.com> wrote in message
news:0b8d01c39883$93010080$a101280a@phx.gbl...
Bonjour,
Ayant migré ma base de donnée sur SQLServer, je rencontre
un soucis pour la syntaxe des requêtes dans la partie
WHERE pour un champs spécifique dans un formulaire.
Ancienne requête avec Jet :
SELECT DISTINCTROW Commandes.*, Clientèle.NomSociété
FROM Clientèle INNER JOIN Commandes ON
Clientèle.RéfClient = Commandes.RéfClient
WHERE ((Commandes.RéfClient = forms ! [Commandes par
client] ! RéfClient));
Tentative SQL2000:
SELECT dbo.Commandes.*, dbo.Clientèle.NomSociété
FROM dbo.Clientèle INNER JOIN dbo.Commandes ON
dbo.Clientèle.RéfClient = dbo.Commandes.RéfClient
WHERE ????
SQL Server ne sait rien des formulaires ou autres objets d'Access. Il va vous falloir sortir le parametre de la requete. Pour cela, vous pouvez - soit employer une procedure stockee ou une vue, declarer le parametre dans la definition de l'objet, affecter la valeur, puis lancer la requete. - soit construire la requete de facon dynamique, en enchainant le premier bout de requete et la valeur du controle (et non pas le nom du controle).
J'espere que ca vous donne des pistes pour continuer.
-- Daniel :-)
Computing Technologies International - www.computing-tech.com - We provide solutions...
"Flavien" wrote in message news:0b8d01c39883$93010080$ Bonjour, Ayant migré ma base de donnée sur SQLServer, je rencontre un soucis pour la syntaxe des requêtes dans la partie WHERE pour un champs spécifique dans un formulaire.
Ancienne requête avec Jet :
SELECT DISTINCTROW Commandes.*, Clientèle.NomSociété FROM Clientèle INNER JOIN Commandes ON Clientèle.RéfClient = Commandes.RéfClient WHERE ((Commandes.RéfClient = forms ! [Commandes par client] ! RéfClient));
Tentative SQL2000:
SELECT dbo.Commandes.*, dbo.Clientèle.NomSociété FROM dbo.Clientèle INNER JOIN dbo.Commandes ON dbo.Clientèle.RéfClient = dbo.Commandes.RéfClient WHERE ????
Merci d'avance pour votre aide
Yannick Croteau
C'est possible d'inclure des champs de formulaire dans une requête pour agir sur une base SQLServer, mais seulement en base VBA
ça doit resemblé un peu à ceci....
Ceci est un petit exemple de mon code personnel...
Dim DC As ADODB.connection Dim Rs As New ADODB.Recordset Set DC = CurrentProject.connection Set RS = New ADODB.Recordset
RS.Open "SELECT * FROM [Facturation - Série] WHERE [No Facture] = " & Me.[No de Facturation], DC, adOpenDynamic, adLockOptimistic
'après il est possible de faire que bon te semble avec le recordset.... If rs.recordcount > 0 then .... End if
RS.close Set RS = Nothing DC.Close Set DC = Nothing
' Pour changer le source de recordset d'un sous formulaire ou un formulaire ça pourrait ressemblé à ceci....
If IsNull(Me.FiltreCat) = False Then strSQL = strSQL & " WHERE (Catégorie = N'" & Me.FiltreCat & "')" End If
If IsNull(Me.FiltreCom) = False Then If IsNull(Me.FiltreCat) Then strSQL = strSQL & " WHERE (Compagnie = N'" & Me.FiltreCom & "')" Else strSQL = strSQL & " AND (Compagnie = N'" & Me.FiltreCom & "')" End If End If
Me.RecordSource = strSQL
If (me.Recordcount < 1) And (IsNull(Me.FiltreCat) = False Or IsNull(Me.FiltreCom) = False) Then MsgBox "Aucun enregistrement satisfait votre sélection", vbOKOnly, "Aucun enregistrement" Me.FiltreCat = Null Me.FiltreCom = Null GoTo retour End If
' Tout simplement.... 'J'espère t'avoir aidé un peu, mais pour ce qui est du reste, Danel dit vrai. 'Yannick
"Flavien" a écrit dans le message de news:0b8d01c39883$93010080$ Bonjour, Ayant migré ma base de donnée sur SQLServer, je rencontre un soucis pour la syntaxe des requêtes dans la partie WHERE pour un champs spécifique dans un formulaire.
Ancienne requête avec Jet :
SELECT DISTINCTROW Commandes.*, Clientèle.NomSociété FROM Clientèle INNER JOIN Commandes ON Clientèle.RéfClient = Commandes.RéfClient WHERE ((Commandes.RéfClient = forms ! [Commandes par client] ! RéfClient));
Tentative SQL2000:
SELECT dbo.Commandes.*, dbo.Clientèle.NomSociété FROM dbo.Clientèle INNER JOIN dbo.Commandes ON dbo.Clientèle.RéfClient = dbo.Commandes.RéfClient WHERE ????
Merci d'avance pour votre aide
C'est possible d'inclure des champs de formulaire dans une requête pour agir
sur une base SQLServer, mais seulement en base VBA
ça doit resemblé un peu à ceci....
Ceci est un petit exemple de mon code personnel...
Dim DC As ADODB.connection
Dim Rs As New ADODB.Recordset
Set DC = CurrentProject.connection
Set RS = New ADODB.Recordset
RS.Open "SELECT * FROM [Facturation - Série] WHERE [No Facture] = " &
Me.[No de Facturation], DC, adOpenDynamic, adLockOptimistic
'après il est possible de faire que bon te semble avec le recordset....
If rs.recordcount > 0 then
....
End if
RS.close
Set RS = Nothing
DC.Close
Set DC = Nothing
' Pour changer le source de recordset d'un sous formulaire ou un
formulaire ça pourrait ressemblé à ceci....
If IsNull(Me.FiltreCat) = False Then
strSQL = strSQL & " WHERE (Catégorie = N'" & Me.FiltreCat & "')"
End If
If IsNull(Me.FiltreCom) = False Then
If IsNull(Me.FiltreCat) Then
strSQL = strSQL & " WHERE (Compagnie = N'" & Me.FiltreCom & "')"
Else
strSQL = strSQL & " AND (Compagnie = N'" & Me.FiltreCom & "')"
End If
End If
Me.RecordSource = strSQL
If (me.Recordcount < 1) And (IsNull(Me.FiltreCat) = False Or
IsNull(Me.FiltreCom) = False) Then
MsgBox "Aucun enregistrement satisfait votre sélection", vbOKOnly,
"Aucun enregistrement"
Me.FiltreCat = Null
Me.FiltreCom = Null
GoTo retour
End If
' Tout simplement....
'J'espère t'avoir aidé un peu, mais pour ce qui est du reste, Danel dit
vrai.
'Yannick
"Flavien" <anonymous@discussions.microsoft.com> a écrit dans le message de
news:0b8d01c39883$93010080$a101280a@phx.gbl...
Bonjour,
Ayant migré ma base de donnée sur SQLServer, je rencontre
un soucis pour la syntaxe des requêtes dans la partie
WHERE pour un champs spécifique dans un formulaire.
Ancienne requête avec Jet :
SELECT DISTINCTROW Commandes.*, Clientèle.NomSociété
FROM Clientèle INNER JOIN Commandes ON
Clientèle.RéfClient = Commandes.RéfClient
WHERE ((Commandes.RéfClient = forms ! [Commandes par
client] ! RéfClient));
Tentative SQL2000:
SELECT dbo.Commandes.*, dbo.Clientèle.NomSociété
FROM dbo.Clientèle INNER JOIN dbo.Commandes ON
dbo.Clientèle.RéfClient = dbo.Commandes.RéfClient
WHERE ????
If IsNull(Me.FiltreCat) = False Then strSQL = strSQL & " WHERE (Catégorie = N'" & Me.FiltreCat & "')" End If
If IsNull(Me.FiltreCom) = False Then If IsNull(Me.FiltreCat) Then strSQL = strSQL & " WHERE (Compagnie = N'" & Me.FiltreCom & "')" Else strSQL = strSQL & " AND (Compagnie = N'" & Me.FiltreCom & "')" End If End If
Me.RecordSource = strSQL
If (me.Recordcount < 1) And (IsNull(Me.FiltreCat) = False Or IsNull(Me.FiltreCom) = False) Then MsgBox "Aucun enregistrement satisfait votre sélection", vbOKOnly, "Aucun enregistrement" Me.FiltreCat = Null Me.FiltreCom = Null GoTo retour End If
' Tout simplement.... 'J'espère t'avoir aidé un peu, mais pour ce qui est du reste, Danel dit vrai. 'Yannick
"Flavien" a écrit dans le message de news:0b8d01c39883$93010080$ Bonjour, Ayant migré ma base de donnée sur SQLServer, je rencontre un soucis pour la syntaxe des requêtes dans la partie WHERE pour un champs spécifique dans un formulaire.
Ancienne requête avec Jet :
SELECT DISTINCTROW Commandes.*, Clientèle.NomSociété FROM Clientèle INNER JOIN Commandes ON Clientèle.RéfClient = Commandes.RéfClient WHERE ((Commandes.RéfClient = forms ! [Commandes par client] ! RéfClient));
Tentative SQL2000:
SELECT dbo.Commandes.*, dbo.Clientèle.NomSociété FROM dbo.Clientèle INNER JOIN dbo.Commandes ON dbo.Clientèle.RéfClient = dbo.Commandes.RéfClient WHERE ????