OVH Cloud OVH Cloud

Comment faire une requête dépendant d'un champs de formulaire avec SQL2000Server

2 réponses
Avatar
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 ????

Merci d'avance pour votre aide

2 réponses

Avatar
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
Avatar
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....

Dim strSQL As String

Retour:

strSQL = "SELECT [ID - Item], Catégorie, Compagnie, [Description - FR],
[Prochain Cost] FROM Produits"

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