Phpmyadmin ok pas access

cs_LABAUDE Messages postés 15 Date d'inscription samedi 19 juillet 2003 Statut Membre Dernière intervention 4 janvier 2006 - 16 sept. 2005 à 17:24
DuckyLuke Messages postés 28 Date d'inscription lundi 4 novembre 2002 Statut Membre Dernière intervention 30 septembre 2005 - 22 sept. 2005 à 17:19
Bonjour,

Impossible de convertir la requete suivante fonctionnant avec phpmyadmin en requete pour un site en asp et une base access. Pouvez vous m'aider?

SELECT DISTINCT (
dictionary_keywords.label_fr
), dictionary_concepts.id_indices, dictionary_keywords.id
FROM dictionary_keywords
INNER JOIN dictionary_concepts ON dictionary_keywords.id_concepts = dictionary_concepts.id
WHERE left( dictionary_keywords.label_fr, 1 ) = 'A' AND (
(
(
dictionary_concepts.id_indices
) = 1
)
)
GROUP BY dictionary_keywords.label_fr
ORDER BY dictionary_keywords.label_fr LIMIT 0 , 30

Dans ma page asp, j'ai écrit :
SELECT DISTINCT (dictionary_keywords.label_fr), dictionary_concepts.id_indices, dictionary_keywords.id FROM dictionary_keywords INNER JOIN dictionary_concepts ON dictionary_keywords.id_concepts = dictionary_concepts.id WHERE left(dictionary_keywords.label_fr,1)='A' AND (((dictionary_concepts.id_indices)=1)) GROUP BY dictionary_keywords.label_fr ORDER BY dictionary_keywords.label_fr;

J'obtiens le message d'erreur suivant :
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][Pilote ODBC Microsoft Access] Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée 'id_indices' comme une partie de la fonction d'agrégat.

Lorsque je lance cette requete dans access, j'ai le message d'erreur suivant :

Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée <nom> comme une partie de la fonction d'agrégat. (Erreur 3122)

Merci pour votre aide et j'espere qu'il y a une solution...

8 réponses

DuckyLuke Messages postés 28 Date d'inscription lundi 4 novembre 2002 Statut Membre Dernière intervention 30 septembre 2005
22 sept. 2005 à 11:30
Essaye de virer ton "GROUP BY ... HAVING ..." et mets un simple WHERE à la place... ;)

Tu peux pas faire un GROUP BY sur un élément que tu ne retrouves pas dans ton HAVING... Sur ce coup, MySQL est beaucoup trop permissif...

La bonne requête, c'est donc:

SELECT dictionary_keywords.label_fr, dictionary_concepts.id_indices, dictionary_keywords.id
FROM dictionary_concepts INNER JOIN dictionary_keywords ON dictionary_concepts.id = dictionary_keywords.id_concept
WHERE (Left(dictionary_keywords.label_fr,1))="A" AND ((dictionary_concepts.id_indices)="1")
ORDER BY dictionary_keywords.label_fr;
0
DuckyLuke Messages postés 28 Date d'inscription lundi 4 novembre 2002 Statut Membre Dernière intervention 30 septembre 2005
22 sept. 2005 à 12:03
Essaye de virer ton "GROUP BY ... HAVING ..." et mets un simple WHERE à la place... ;)

Tu peux pas faire un GROUP BY sur un élément que tu ne retrouves pas dans ton HAVING... Sur ce coup, MySQL est beaucoup trop permissif...

La bonne requête, c'est donc:

SELECT dictionary_keywords.label_fr, dictionary_concepts.id_indices, dictionary_keywords.id
FROM dictionary_concepts INNER JOIN dictionary_keywords ON dictionary_concepts.id = dictionary_keywords.id_concept
WHERE (Left(dictionary_keywords.label_fr,1))="A" AND ((dictionary_concepts.id_indices)="1")
ORDER BY dictionary_keywords.label_fr;
0
cs_LABAUDE Messages postés 15 Date d'inscription samedi 19 juillet 2003 Statut Membre Dernière intervention 4 janvier 2006
22 sept. 2005 à 12:39
J'ai modifié la requete, pour suivre tes conseils, mais j'ai le message d'erreur ci dessous :
SQLkeywords "SELECT dictionary_keywords.label_fr, dictionary_concepts.id_indices, dictionary_keywords.id FROM dictionary_concepts INNER JOIN dictionary_keywords ON dictionary_concepts.id dictionary_keywords.id_concept WHERE (Left(dictionary_keywords.label_fr,1))='"& u_letter &"' AND ((dictionary_concepts.id_indices)=1) ORDER BY dictionary_keywords.label_fr;"

Erreur de compilation Microsoft VBScript error '800a0401'
Fin d'instruction attendue
/iisHelp/common/500-100.asp, line 11 Dim objASPError, blnErrorWritten, strServername, strServerIP, strRemoteIP Dim strMethod, lngPos, datNow, strQueryString, strURL
--------------------------------------------------------------------------^


Microsoft OLE DB Provider for ODBC Drivers error '80040e10'
[Microsoft][Pilote ODBC Microsoft Access] Trop peu de paramètres. 1 attendu.
/mondiv3/mi_fr/centre.asp, line 83
0
DuckyLuke Messages postés 28 Date d'inscription lundi 4 novembre 2002 Statut Membre Dernière intervention 30 septembre 2005
22 sept. 2005 à 12:55
Teste déjà la requête en laissant ton label_fr en fixe ("A").

Essaye aussi en virant les simples quotes:

...Left(dictionary_keywords.label_fr,1))="& u_letter &" AND ((dictionary...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_LABAUDE Messages postés 15 Date d'inscription samedi 19 juillet 2003 Statut Membre Dernière intervention 4 janvier 2006
22 sept. 2005 à 15:33
J'ai essayé avec le A uniquement... et ca ne marche pas... Ma page est programmée en asp


La requete suivante fonctionne mais j'ai des doublons donc ca ne me satisfait pas :


SQLkeywords "SELECT DISTINCT (dictionary_keywords.label_fr), dictionary_concepts.id_indices, dictionary_keywords.id FROM dictionary_keywords INNER JOIN dictionary_concepts ON dictionary_keywords.id_concepts dictionary_concepts.id WHERE left(dictionary_keywords.label_fr,1)='"& u_letter &"' AND (((dictionary_concepts.id_indices)=1)) ORDER BY dictionary_keywords.label_fr;"

Voici la partie de code qui pose probleme :

<%
for counter = 65 to 90
' for next routine to create hyperlinks alphabetically targeted
' to the current page
%>
?u_letter=&#<%= counter %>;">;.gif" width="14" height="14" border="0">,
<% next %>

<%
if request.QueryString("u_letter") ="" then
else
u_letter=trim(request.querystring("u_letter"))
'if the user clicked a link then search the db
if u_letter<>"" then
' La requête qui va bien ;)SQLkeywords "SELECT DISTINCT (dictionary_keywords.label_fr), dictionary_concepts.id_indices, dictionary_keywords.id FROM dictionary_keywords INNER JOIN dictionary_concepts ON dictionary_keywords.id_concepts dictionary_concepts.id WHERE left(dictionary_keywords.label_fr,1)='"& u_letter &"' AND (((dictionary_concepts.id_indices)=1)) ORDER BY dictionary_keywords.label_fr;"'SQLkeywords "SELECT dictionary_keywords.label_fr, dictionary_concepts.id_indices, dictionary_keywords.id FROM dictionary_concepts INNER JOIN dictionary_keywords ON dictionary_concepts.id dictionary_keywords.id_concept WHERE (Left(dictionary_keywords.label_fr,1))='"& u_letter &"' AND ((dictionary_concepts.id_indices)=1) ORDER BY dictionary_keywords.label_fr;"'SQLkeywords "SELECT DISTINCT(dictionary_keywords.label_fr), MAX(dictionary_concepts.id_indices), max(dictionary_keywords.id) FROM dictionary_keywords as dictionary_keywords, dictionary_concepts as dictionary_concepts WHERE dictionary_keywords.id_concepts dictionary_concepts.id AND dictionary_keywords.label_fr = '"& u_letter &"' AND dictionary_concepts.id_indices = 1 GROUP BY dictionary_concepts.id_indices, dictionary_keywords.id ORDER BY dictionary_keywords.label_fr;"
' Récupère le recordset
Set keywords = server.createobject("ADODB.Recordset")
keywords.Open SQLkeywords, conn, 3, 3
'if the search ends in no results display a
'no results found mesage
if keywords.eof then
%>
Il n'y a aucun mot commençant par la lettre <%= u_letter %>
<%
else
%>
&nbsp;,
D,
A,
T,
C,
L,

<%
do while not keywords.eof
'display all observations found
%>
----

"><%= keywords("label_fr") %>,
<%
' La requête qui va bien ;)
SQLdefinition = "SELECT definition_fr FROM dictionary_keywords WHERE dictionary_keywords.id=" & keywords("id") & ""
' Récupère le recordset
Set definition = server.createobject("ADODB.Recordset")
definition.Open SQLdefinition, Conn, 3, 3
if definition("definition_fr")="" then
else
response.write ""
end if
definition.close : set definition = nothing
%>,
<%
SQLannuaire1 = "SELECT id_keyword FROM company_object_card_index_keywords WHERE company_object_card_index_keywords.id_keyword=" & keywords("id") & ""
' Récupère le recordset
Set annuaire1 = server.createobject("ADODB.Recordset")
annuaire1.Open SQLannuaire1, Conn, 3, 3
IF NOT annuaire1.EOF THEN
response.write ""
else
SQLannuaire2 = "SELECT id_keyword FROM company_object_card_paper_keywords WHERE company_object_card_paper_keywords.id_keyword=" & keywords("id") & ""
' Récupère le recordset
Set annuaire2 = server.createobject("ADODB.Recordset")
annuaire2.Open SQLannuaire2, Conn, 3, 3
IF NOT annuaire2.EOF THEN
response.write ""
else
SQLannuaire3 = "SELECT id_keyword FROM company_free_keywords WHERE company_free_keywords.id_keyword=" & keywords("id") & ""
' Récupère le recordset
Set annuaire3 = server.createobject("ADODB.Recordset")
annuaire3.Open SQLannuaire2, Conn, 3, 3
IF NOT annuaire3.EOF THEN
response.write ""
else
end if
annuaire3.close : set annuaire3 = nothing
end if
annuaire2.close : set annuaire2 = nothing
end if
annuaire1.close : set annuaire1 = nothing
%>,
<%
' La requête qui va bien ;)
SQLtemoignage = "SELECT id_keyword FROM company_object_expert_release_keywords WHERE company_object_expert_release_keywords.id_keyword=" & keywords("id") & ""
' Récupère le recordset
Set temoignage = server.createobject("ADODB.Recordset")
temoignage.Open SQLtemoignage, Conn, 3, 3
IF NOT temoignage.EOF THEN
response.write ""
else
end if
temoignage.close : set temoignage = nothing
%>,
<%
' La requête qui va bien ;)
SQLadvice = "SELECT advice_fr FROM dictionary_keywords WHERE dictionary_keywords.id=" & keywords("id") & ""
' Récupère le recordset
Set advice = server.createobject("ADODB.Recordset")
advice.Open SQLadvice, Conn, 3, 3
if advice("advice_fr")="" then
else
response.write ""
end if
advice.close : set advice = nothing
%>,
<%
' La requête qui va bien ;)
SQLliensutiles = "SELECT comment_fr FROM dictionary_keywords WHERE dictionary_keywords.id=" & keywords("id") & ""
' Récupère le recordset
Set liensutiles = server.createobject("ADODB.Recordset")
liensutiles.Open SQLliensutiles, Conn, 3, 3
if liensutiles("comment_fr")="" then
else
response.write ""
end if
liensutiles.close : set liensutiles = nothing
%>,

<%
keywords.movenext
loop
end if ' end check for obs
end if ' end check for user input
%>
<%
keywords.close : set keywords = nothing
%>
<%
end if
%></td>
0
DuckyLuke Messages postés 28 Date d'inscription lundi 4 novembre 2002 Statut Membre Dernière intervention 30 septembre 2005
22 sept. 2005 à 15:49
Entre ta requête qui fonctionne et celle que je propose, 2 trucs diffèrent:
- le DISTINCT
- la jointure que tu fais dans un sens et moi dans l'autre.

Essaye de jongler en modifiant l'un ou l'autre... Sinon, je ne vois pas... (et sans enregistrements pour faire des tests, c'est pas très facile... :P )

SQLkeywords "SELECT DISTINCT (dictionary_keywords.label_fr), dictionary_concepts.id_indices, dictionary_keywords.id FROM dictionary_keywords INNER JOIN dictionary_concepts ON dictionary_keywords.id_concepts dictionary_concepts.id WHERE left(dictionary_keywords.label_fr,1)='"& u_letter &"' AND (((dictionary_concepts.id_indices)=1)) ORDER BY dictionary_keywords.label_fr;"
'SQLkeywords "SELECT dictionary_keywords.label_fr, dictionary_concepts.id_indices, dictionary_keywords.id FROM dictionary_concepts INNER JOIN dictionary_keywords ON dictionary_concepts.id dictionary_keywords.id_concept WHERE (Left(dictionary_keywords.label_fr,1))='"& u_letter &"' AND ((dictionary_concepts.id_indices)=1) ORDER BY dictionary_keywords.label_fr;"
0
cs_LABAUDE Messages postés 15 Date d'inscription samedi 19 juillet 2003 Statut Membre Dernière intervention 4 janvier 2006
22 sept. 2005 à 16:05
Est ce que je peux t'envoyer ma base vierge et la page est asp sur ton email?

Si oui, quel est ton email?
0
DuckyLuke Messages postés 28 Date d'inscription lundi 4 novembre 2002 Statut Membre Dernière intervention 30 septembre 2005
22 sept. 2005 à 17:19
Je te l'envoie en MP
0
Rejoignez-nous