OVH Cloud OVH Cloud

req sql

4 réponses
Avatar
vincent chinazzi
Acces me dit comme erreur 'erreur 3012 req1 déjà créé' apartie du code
suivant et je ne voit pas l'erreur
merci de votre aide

Private Sub test_Click()
Dim sqlstr As String
Dim wherestr As String
Dim req As QueryDef

sqlstr = "SELECT formateurs.formateur, lieux.lieu, matieres.matiere,
types.type, editeurs.editeur, documents.intitule, auteurs.Auteur "
sqlstr = sqlstr & "FROM auteurs INNER JOIN (lieux INNER JOIN (types INNER
JOIN (formateurs INNER JOIN (matieres INNER JOIN (editeurs INNER JOIN
documents ON editeurs.editeur = documents.editeur) ON matieres.matiere =
documents.matiere) ON formateurs.formateur = documents.formateur) ON
types.type = documents.type) ON lieux.lieu = documents.lieu) ON
auteurs.Auteur = documents.auteur "

'zone de liste formateur modifiable0
If Not IsNull(Me.Modifiable0) Then
wherestr = wherestr & "formateurs.formateur='" & Me.Modifiable0 & "' AND "
End If

'zone de liste lieux modifiable2
If Not IsNull(Me.Modifiable2) Then
wherestr = wherestr & "lieux.lieu='" & Me.Modifiable2 & "' AND "
End If

'zone de liste matiere modifiable4
If Not IsNull(Me.Modifiable4) Then
wherestr = wherestr & "matieres.matiere='" & Me.Modifiable4 & "' AND "
End If

'zone de liste type modifiable11
If Not IsNull(Me.Modifiable11) Then
wherestr = wherestr & "types.type='" & Me.Modifiable11 & "' AND "
End If

'zone de liste editeurs modifiable13
If Not IsNull(Me.Modifiable13) Then
wherestr = wherestr & "auteurs.Auteur='" & Me.Modifiable13 & "' AND "
End If

'zone de liste auteur modifiable15
If Not IsNull(Me.Modifiable15) Then
wherestr = wherestr & "editeurs.editeur='" & Me.Modifiable15 & "';"
End If

If Len(wherestr) > 0 Then
wherestr = Left(wherestr, Len(wherestr) - 6)
End If
sqlstr = sqlstr & " Where " & wherestr
'Stop
On Error GoTo Errtest_Click
Set req = CurrentDb.QueryDefs("Req1")
req.SQL = sqlstr
DoCmd.OpenReport "formateurs", acViewPreview
Fintest_Click:
Exit Sub
Errtest_Click:
Set req = CurrentDb.CreateQueryDef("Req1", sqlstr)
Resume Fintest_Click
End Sub

4 réponses

Avatar
Gafish
Bonjour aussi

vincent chinazzi wrote:
Acces me dit comme erreur 'erreur 3012 req1 déjà créé' apartie du code
suivant et je ne voit pas l'erreur
merci de votre aide


Essaye de supprimer ta requête Req1 en début de traitement, si elle existe
déja il ne pourra pas la créer, d'où le message.
Ca devrait aller avec cette ligne de code :
DoCmd.DeleteObject acQuery, "Req1"

Arnaud
--
Charte du forum : http://users.skynet.be/mpfa/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
vincent chinazzi
Merci, j'ai mis la commande "DoCmd.DeleteObject acQuery, "Req1" aprés la
construction de ma chaine sql
sqlstr = sqlstr & " Where " & wherestr
maintenant il me dit : erreur 7874 impossible de trouver l'objet req1
je tiens ma base a disposition si vous le voulez


"Gafish" a écrit dans le message de news:
#
Bonjour aussi

vincent chinazzi wrote:
Acces me dit comme erreur 'erreur 3012 req1 déjà créé' apartie du code
suivant et je ne voit pas l'erreur
merci de votre aide


Essaye de supprimer ta requête Req1 en début de traitement, si elle existe
déja il ne pourra pas la créer, d'où le message.
Ca devrait aller avec cette ligne de code :
DoCmd.DeleteObject acQuery, "Req1"

Arnaud
--
Charte du forum : http://users.skynet.be/mpfa/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr





Avatar
Gilbert
Bonjour,

Voici ce que j'utilise dans un formulaire ou autre

If ChercherRequete(MaRequete, MaDb.Name) Then
MaDb.QueryDefs(MaRequete).SQL = strTmp
Else
Set rqte_Tmp = MaDb.CreateQueryDef(MaRequete, strTmp)
End If


Il faut ajouter dans un module :

Public Function ChercherRequete(strRequeteName As String, Optional NomBase
As String) As Boolean
Dim Db As DAO.Database
Dim i As Integer
If NomBase = "" Then
Set Db = DBEngine.Workspaces(0).Databases(0)
Else
Set Db = DBEngine.Workspaces(0).OpenDatabase(NomBase)
End If
ChercherRequete = False
Db.QueryDefs.Refresh
For i = 0 To Db.QueryDefs.Count - 1
If strRequeteName = Db.QueryDefs(i).Name Then 'la requete existe
ChercherRequete = True
Exit For
End If
Next i
Set Db = Nothing
End Function


--
Gilbert


"vincent chinazzi" a écrit dans le message
de news:
Merci, j'ai mis la commande "DoCmd.DeleteObject acQuery, "Req1" aprés la
construction de ma chaine sql
sqlstr = sqlstr & " Where " & wherestr
maintenant il me dit : erreur 7874 impossible de trouver l'objet req1
je tiens ma base a disposition si vous le voulez


"Gafish" a écrit dans le message de news:
#
Bonjour aussi

vincent chinazzi wrote:
Acces me dit comme erreur 'erreur 3012 req1 déjà créé' apartie du code
suivant et je ne voit pas l'erreur
merci de votre aide


Essaye de supprimer ta requête Req1 en début de traitement, si elle
existe
déja il ne pourra pas la créer, d'où le message.
Ca devrait aller avec cette ligne de code :
DoCmd.DeleteObject acQuery, "Req1"

Arnaud
--
Charte du forum : http://users.skynet.be/mpfa/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr









Avatar
vincent chinazzi
merci pour votre aide mais je pense que l'erreur est au niveau de la
construction de la clause where. je tiens a votre disposition ma base au
format zip
encore merci pour toutes vos aides
"Gilbert" a écrit dans le message de news:

Bonjour,

Voici ce que j'utilise dans un formulaire ou autre

If ChercherRequete(MaRequete, MaDb.Name) Then
MaDb.QueryDefs(MaRequete).SQL = strTmp
Else
Set rqte_Tmp = MaDb.CreateQueryDef(MaRequete, strTmp)
End If


Il faut ajouter dans un module :

Public Function ChercherRequete(strRequeteName As String, Optional NomBase
As String) As Boolean
Dim Db As DAO.Database
Dim i As Integer
If NomBase = "" Then
Set Db = DBEngine.Workspaces(0).Databases(0)
Else
Set Db = DBEngine.Workspaces(0).OpenDatabase(NomBase)
End If
ChercherRequete = False
Db.QueryDefs.Refresh
For i = 0 To Db.QueryDefs.Count - 1
If strRequeteName = Db.QueryDefs(i).Name Then 'la requete existe
ChercherRequete = True
Exit For
End If
Next i
Set Db = Nothing
End Function


--
Gilbert


"vincent chinazzi" a écrit dans le message
de news:
Merci, j'ai mis la commande "DoCmd.DeleteObject acQuery, "Req1" aprés la
construction de ma chaine sql
sqlstr = sqlstr & " Where " & wherestr
maintenant il me dit : erreur 7874 impossible de trouver l'objet req1
je tiens ma base a disposition si vous le voulez


"Gafish" a écrit dans le message de news:
#
Bonjour aussi

vincent chinazzi wrote:
Acces me dit comme erreur 'erreur 3012 req1 déjà créé' apartie du
code




suivant et je ne voit pas l'erreur
merci de votre aide


Essaye de supprimer ta requête Req1 en début de traitement, si elle
existe
déja il ne pourra pas la créer, d'où le message.
Ca devrait aller avec cette ligne de code :
DoCmd.DeleteObject acQuery, "Req1"

Arnaud
--
Charte du forum : http://users.skynet.be/mpfa/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr