fguappi
Messages postés2Date d'inscriptionmardi 8 août 2006StatutMembreDernière intervention 2 septembre 2006
-
1 sept. 2006 à 10:11
fguappi
Messages postés2Date d'inscriptionmardi 8 août 2006StatutMembreDernière intervention 2 septembre 2006
-
2 sept. 2006 à 14:02
Bonjour,
Je travaille actuellement sur un projet et j'ai un souci avec une requete SQL qui fonctionne sous sa forme originale mais que je n'arrive pas à remanier syntaxiquement sous VB 6.
Voici la requête sous sa forme originale :
SELECT PERMIS.IDPERMIS, TYPE_AUTORISATION.CODETYPE, PERMIS.NUMPERMIS, PROVENANCE.CODEPROVENANCE, PERMIS.DATEDEPOT, PERMIS.CODEPOSTAL, [NOM_VOIE]![NOMVOIE] & ", " & [NATURE_VOIE]![LIBVOIE] & IIf(IsNull([PREFIXE_VOIE]![Prefixe]),""," " & [PREFIXE_VOIE]![Prefixe]) AS myAdresseFROM (NOM_VOIE RIGHT JOIN (PREFIXE_VOIE RIGHT JOIN (NATURE_VOIE RIGHT JOIN T_VOIE ON NATURE_VOIE.IDNATUREVOIE T_VOIE.IdNatureVoie) ON PREFIXE_VOIE.IdPrefixe T_VOIE.IdPrefixeVoie) ON NOM_VOIE.IDNom_Voie = T_VOIE.IdNomVoie) RIGHT JOIN (PROVENANCE RIGHT JOIN (TYPE_AUTORISATION RIGHT JOIN (PERMIS LEFT JOIN (ADRESSE RIGHT JOIN AFFECTE ON ADRESSE.IDADRESSE = AFFECTE.IDADRESSE) ON PERMIS.IDPERMIS = AFFECTE.IDPERMIS) ON TYPE_AUTORISATION.IDTYPE = PERMIS.IDTYPE) ON PROVENANCE.IDPROVENANCE = PERMIS.IDPROVENANCE) ON T_VOIE.IdTvoie = ADRESSE.IDVOIE;
Sous VB cela donne :
tsql = "SELECT PERMIS.IDPERMIS, TYPE_AUTORISATION.CODETYPE, PERMIS.NUMPERMIS,"
tsql = tsql + " PROVENANCE.CODEPROVENANCE, PERMIS.DATEDEPOT, PERMIS.CODEPOSTAL,"
tsql = tsql + " [NOM_VOIE]![NOMVOIE] & " + "'', ''" + " & [NATURE_VOIE]![LIBVOIE] & "
tsql = tsql + "IIf(IsNull([PREFIXE_VOIE]![Prefixe])," + "''" + "''" + "," + "'' ''" + " & [PREFIXE_VOIE]![Prefixe]) AS myAdresse"
tsql = tsql + " FROM (NOM_VOIE RIGHT JOIN (PREFIXE_VOIE RIGHT JOIN (NATURE_VOIE" tsql tsql + " RIGHT JOIN T_VOIE ON NATURE_VOIE.IDNATUREVOIE T_VOIE.IdNatureVoie)" tsql tsql + " ON PREFIXE_VOIE.IdPrefixe T_VOIE.IdPrefixeVoie) ON NOM_VOIE.IDNom_Voie = T_VOIE.IdNomVoie)"
tsql = tsql + " RIGHT JOIN (PROVENANCE RIGHT JOIN (TYPE_AUTORISATION"
tsql = tsql + " RIGHT JOIN (PERMIS LEFT JOIN (ADRESSE RIGHT JOIN AFFECTE" tsql tsql + " ON ADRESSE.IDADRESSE AFFECTE.IDADRESSE) ON PERMIS.IDPERMIS = AFFECTE.IDPERMIS)" tsql tsql + " ON TYPE_AUTORISATION.IDTYPE PERMIS.IDTYPE) ON PROVENANCE.IDPROVENANCE = PERMIS.IDPROVENANCE)" tsql tsql + " ON T_VOIE.IdTvoie ADRESSE.IDVOIE;"
A l'execution de la requete tsql, j'ai constament l'erreur suivante
Erreur de syntaxe (opérateur absent) dans l'expression ''' & [NATURE_VOIE]![LIBVOIE] & IIf(IsNull([PREFIXE_VOIE]![Prefixe]),'''','' '' & [PREFIXE_VOIE]![Prefixe])'.
Je suis dessus depuis plus de 2 heures et j'accepterais bien un peu d'aide
Merci d'avance
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013129 1 sept. 2006 à 10:17
Cela donnerai plutôt un truc du genre :
tsql = "SELECT PERMIS.IDPERMIS, TYPE_AUTORISATION.CODETYPE, PERMIS.NUMPERMIS,
PROVENANCE.CODEPROVENANCE, PERMIS.DATEDEPOT, PERMIS.CODEPOSTAL,
[NOM_VOIE]![NOMVOIE] & "", "" & [NATURE_VOIE]![LIBVOIE] &
IIf(IsNull([PREFIXE_VOIE]![Prefixe]),"""","" "" &
[PREFIXE_VOIE]![Prefixe]) AS myAdresse
FROM (NOM_VOIE RIGHT JOIN
(PREFIXE_VOIE RIGHT JOIN (NATURE_VOIE RIGHT JOIN T_VOIE ON
NATURE_VOIE.IDNATUREVOIE = T_VOIE.IdNatureVoie) ON
PREFIXE_VOIE.IdPrefixe T_VOIE.IdPrefixeVoie) ON NOM_VOIE.IDNom_Voie T_VOIE.IdNomVoie) RIGHT JOIN (PROVENANCE RIGHT JOIN (TYPE_AUTORISATION
RIGHT JOIN (PERMIS LEFT JOIN (ADRESSE RIGHT JOIN AFFECTE ON
ADRESSE.IDADRESSE AFFECTE.IDADRESSE) ON PERMIS.IDPERMIS AFFECTE.IDPERMIS) ON TYPE_AUTORISATION.IDTYPE = PERMIS.IDTYPE) ON
PROVENANCE.IDPROVENANCE PERMIS.IDPROVENANCE) ON T_VOIE.IdTvoie ADRESSE.IDVOIE"
Il te suffit de double les doubles quote de ta requête afin que vb n'en mettre qu'un seul
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 2 sept. 2006 à 01:54
Bizarre ta syntaxe avec des doubles ' devant et derrière tes virgules"
Bizarre les & en plein milieu de la syntaxe SQL
Remplace les " destinés à SQL par des '.
Garde les " pour délimiter les chaines VB.
Exemple :
tsql = "Select monChamp From maTable Where monChamp Like '%" & monTextBox.Text & "%'"
(en vert le VB, en bleu le SQL)
Rappel : Sous VB, la concaténation de chaine se fait avec & (et pas +) : Le + marche ... jusqu'au jour où ça marchera pas.
Rappel : TOUS les noms de tables ou champs (...) comportant des caractères spéciaux (accents, espace, souligné, ...) doivent être mis entre crochets [ et ]
Ce qui devrait être le cas (entre autre) de [TYPE_AUTORISATION]
En SQL, le caractère _ remplace une lettre/chiffre (le ? du DOS)
Le % remplace tous les caractères qui suivent ou précèdent (le * du DOS)