OVH Cloud OVH Cloud

Créer un objet QueryDef

7 réponses
Avatar
simon
Bonjour a tous,

Voici une partie de mon codage


' Si la requête NouvelleRequête existe, la supprime.
For Each qdf In db1.QueryDefs
If qdf.Name = "NouvelleRequête" Then
db1.QueryDefs.Delete qdf.Name
End If
Next qdf

chSQL = "SELECT * FROM [Soumission_2006] WHERE (Numéro = " &
txtnumero_Projet.Text & ")"

' Crée un objet QueryDef.
Set qdf = db1.CreateQueryDef("NouvelleRequête", chSQL)

Set db1 = Nothing


je voulais savoir comment mettre mon txtnumero_projet.text entre guillemet
et non entre crochet. car quand j'ouvre ma base de donnée....et que j'ouvre
ma requete "NouvelleRequête" et bien mon critere ressemble a sa [TEST] mais
je voudrait qu'il soit comme sa "TEST"

y a t'il une facon de changer sa ---> chSQL = "SELECT * FROM
[Soumission_2006] WHERE (Numéro = " & txtnumero_Projet.Text & ")"

Merci

7 réponses

Avatar
Jean-Marc
"simon" a écrit dans le message de
news:%
Bonjour a tous,

Voici une partie de mon codage


' Si la requête NouvelleRequête existe, la supprime.
For Each qdf In db1.QueryDefs
If qdf.Name = "NouvelleRequête" Then
db1.QueryDefs.Delete qdf.Name
End If
Next qdf

chSQL = "SELECT * FROM [Soumission_2006] WHERE (Numéro = " &
txtnumero_Projet.Text & ")"

' Crée un objet QueryDef.
Set qdf = db1.CreateQueryDef("NouvelleRequête", chSQL)

Set db1 = Nothing


je voulais savoir comment mettre mon txtnumero_projet.text entre


guillemet
et non entre crochet. car quand j'ouvre ma base de donnée....et que


j'ouvre
ma requete "NouvelleRequête" et bien mon critere ressemble a sa [TEST]


mais
je voudrait qu'il soit comme sa "TEST"

y a t'il une facon de changer sa ---> chSQL = "SELECT * FROM
[Soumission_2006] WHERE (Numéro = " & txtnumero_Projet.Text & ")"



Hello,
il faut rajouter en plus des simples quotes, comme ceci:

chSQL = "SELECT * FROM [Soumission_2006] WHERE (Numéro = '" &
txtnumero_Projet.Text & & "'" & ")"


Ceci permet à la base de voir que la valeur de ton critère est une
chaine
de caractères. Les simples quotes (') sont la norme en SQL pour entourer
les chaines de caractères.

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
Avatar
Gloops
Salut,

J'aime bien la fonction G, comme guillemets

Public Function G(strArgu As String) As String
G = VBA.Chr$(34) + strArgu + VBA.Chr$(34)
End Function

chSQL = "SELECT * FROM [Soumission_2006] " + _
"WHERE (Numero = " + G(txtnumero_Projet.text) + ")"

Note que j'ai fui le nom de champ qui comporte un accent, suite à de
mauvais souvenirs liés à une question de caractères accentués dans une
requête.
_______________
simon a écrit :
je voulais savoir comment mettre mon txtnumero_projet.text entre guillemet
et non entre crochet. car quand j'ouvre ma base de donnée....et que j'ouvre
ma requete "NouvelleRequête" et bien mon critere ressemble a sa [TEST] mais
je voudrait qu'il soit comme sa "TEST"

y a t'il une facon de changer sa ---> chSQL = "SELECT * FROM
[Soumission_2006] WHERE (Numéro = " & txtnumero_Projet.Text & ")"

Merci




Avatar
simon
Bonjour a vous deux,
j'ai essaiyer vos truc et sa fonctionne super bien.
Maintenant j'aurai une autre petite question ..
mon codage ressemble a sa

chSQL = "SELECT * FROM [Soumission_2006],[Entrepreneur]" + _
"WHERE (Numéro = " + G(txtnumero_Projet.Text) + ")"

comment lier la table Entrepreneur.Nom_Entrepreneur a
Soumission_2006.Nom_Du_Client
j'ai essayer avec

INNER JOIN Entrepreneur ON Soumission_2006.Nom_Du_Client =
Entrepreneur.Nom_Entrepreneur

mais je ses pas trop ou l'ajouter il me marque toujour des erreurs :(

quelqu'un autre une iddée de la syntaxe exate

Merci de votre aide

"Gloops" a écrit dans le message de news:

Salut,

J'aime bien la fonction G, comme guillemets

Public Function G(strArgu As String) As String
G = VBA.Chr$(34) + strArgu + VBA.Chr$(34)
End Function

chSQL = "SELECT * FROM [Soumission_2006] " + _
"WHERE (Numero = " + G(txtnumero_Projet.text) + ")"

Note que j'ai fui le nom de champ qui comporte un accent, suite à de
mauvais souvenirs liés à une question de caractères accentués dans une
requête.
_______________
simon a écrit :
je voulais savoir comment mettre mon txtnumero_projet.text entre
guillemet et non entre crochet. car quand j'ouvre ma base de donnée....et
que j'ouvre ma requete "NouvelleRequête" et bien mon critere ressemble a
sa [TEST] mais je voudrait qu'il soit comme sa "TEST"

y a t'il une facon de changer sa ---> chSQL = "SELECT * FROM
[Soumission_2006] WHERE (Numéro = " & txtnumero_Projet.Text & ")"

Merci




Avatar
Jean-Marc
"simon" a écrit dans le message de
news:
Bonjour a vous deux,
j'ai essaiyer vos truc et sa fonctionne super bien.
Maintenant j'aurai une autre petite question ..
mon codage ressemble a sa

chSQL = "SELECT * FROM [Soumission_2006],[Entrepreneur]" + _
"WHERE (Numéro = " + G(txtnumero_Projet.Text) + ")"

comment lier la table Entrepreneur.Nom_Entrepreneur a
Soumission_2006.Nom_Du_Client
j'ai essayer avec

INNER JOIN Entrepreneur ON Soumission_2006.Nom_Du_Client > Entrepreneur.Nom_Entrepreneur

mais je ses pas trop ou l'ajouter il me marque toujour des erreurs :(

quelqu'un autre une iddée de la syntaxe exate

Merci de votre aide



Hello,

Tu peux simplement ajouter un AND à ta clause WHERE, comme ceci:

SELECT * FROM entrepreneur, soumission
WHERE
numero= "xxx" AND
Entrepreneur.Nom_Entrepreneur = Soumission_2006.Nom_Du_Client

Tu devrais mettre le nom de la table devant le champ numero, et
ne pas utiliser de caractères accentués dans tes noms de tables
ou de champs.

On peut aussi faire avec INNER JOIN, mais je trouve qu'alors c'est
moins lisible.

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
Avatar
Gloops
Jean-Marc a écrit :
Les simples quotes (') sont la norme en SQL pour entourer
les chaines de caractères.



Ah oui, c'est vrai. Heureusement que les guillemets passent aussi le
plus souvent, car on a plus souvent des adresses comme "10, rue
d'Antiope" ou "12, rue du Vent d'Autan" que
'15, rue de "Mignonne allons voir si la Rose ..."'
Avatar
Gloops
Jean-Marc a écrit :
"simon" a écrit dans le message de
news:
Bonjour a vous deux,
j'ai essaiyer vos truc et sa fonctionne super bien.
Maintenant j'aurai une autre petite question ..
mon codage ressemble a sa

chSQL = "SELECT * FROM [Soumission_2006],[Entrepreneur]" + _
"WHERE (Numéro = " + G(txtnumero_Projet.Text) + ")"

comment lier la table Entrepreneur.Nom_Entrepreneur a
Soumission_2006.Nom_Du_Client
j'ai essayer avec

INNER JOIN Entrepreneur ON Soumission_2006.Nom_Du_Client >> Entrepreneur.Nom_Entrepreneur

mais je ses pas trop ou l'ajouter il me marque toujour des erreurs :(

quelqu'un autre une iddée de la syntaxe exate

Merci de votre aide



Hello,

Tu peux simplement ajouter un AND à ta clause WHERE, comme ceci:

SELECT * FROM entrepreneur, soumission
WHERE
numero= "xxx" AND
Entrepreneur.Nom_Entrepreneur = Soumission_2006.Nom_Du_Client

Tu devrais mettre le nom de la table devant le champ numero, et
ne pas utiliser de caractères accentués dans tes noms de tables
ou de champs.

On peut aussi faire avec INNER JOIN, mais je trouve qu'alors c'est
moins lisible.



Tu as peut-être bien raison.

Sinon, de mémoire, il me semble que ça ressemble à

SELECT * FROM Entrepreneur
INNER JOIN Soumission_2006
ON Entrepreneur.Nom_Entrepreneur = Soumission_2006.Nom_du_Client
WHERE Soumission_2006.Numero = "xxx"

Si les tables ne sont pas dans le bon ordre de part et d'autre de INNER
JOIN ça risque de coincer. En mettant OUTER JOIN on les inverse.

Si je ne m'abuse le numéro est un numéro de soumission.
En général une bonne pratique est d'une part de démarrer chaque nom de
champ par un préfixe de trois lettres qui représente la table, d'autre
part d'utiliser des noms de champs aussi explicites que possible.

ON Entrepreneur.entNomEntrepreneur = Soumission_2006.souNomDuClient
WHERE Soumission_2006.souNumeroSoumission = "xxx"

Du reste comme cela on repère rapidement les clefs externes, puisque le
préfixe n'est pas celui de la table où se trouve le champ. (ci-dessus ce
n'était peut-être pas un bon exemple alors)

Quand la base supporte les majuscules ça permet de s'en servir pour
expliciter les mots différents dans un nom de champ sans avoir à
s'embêter avec des espaces qui obligent à mettre des crochets, ou des
caractères de soulignement qui disparaissent dans certains copier-coller.

Enfin bon ça c'est un truc à décider au départ, c'est sûr que si le
champ s'appelle Nom_Entrepreneur, on aura un problème en l'appelant
entNomEntrepreneur.
Avatar
Gloops
Argh, j'étais censé ne citer que deux lignes, et le temps de taper ma
réponse j'ai oublié d'effacer ce qu'il y avait en trop.

En avant pour le défilement à la souris ...
Désolé.