OVH Cloud OVH Cloud

ConcatForQuery

4 réponses
Avatar
laurent_deslandes
J'ai une table TbHybPays avec comme champ NumExp et Pays.
Je souhaite faire une requête qui regroupe tous les pays et qui
concatène les NumExp.
Ex :
FRANCE 1-2-3-4
ITALIE 5-6-7-8

J'ai donc créé une requête avec 2 champs :
1- Pays
2- Résultat: ConcatForQuery("Pays";[Pays];"NumExp";"TbHybPays";"/")

Enfin, j'ai créé un module faisant référence à la fonction dont voici
le code :

Function ConcatForQuery(strRegroup As String, fldRegroup As String, _
strConcat As String, strTable As String, _
Optional strSep As String = "/") As String
Dim db As Database
Dim rst As Recordset
Dim strResult As String
Dim strRst As String
Set db = CurrentDb()
strRst = "Select * From [" & strTable & "] " _
& "Where [" & strRegroup & "] = """ & fldRegroup & """;"
Set rst = db.OpenRecordset(strRst, dbOpenDynaset)
With rst
If Not .BOF Then
.MoveFirst
Do Until .EOF
If strResult = "" Then
strResult = .Fields(strConcat)
Else
strResult = strResult & strSep & .Fields(strConcat)
End If
.MoveNext
Loop
End If
End With
rst.Close: Set rst = Nothing
db.Close: Set db = Nothing
ConcatForQuery = strResult
End Function

Lorsque je lance la requête, j'ai une erreur de compilation.
Est ce que quelqu'un pourrait me dire où j'ai l'erreur.

Merci d'avance.

4 réponses

Avatar
Gafish
Bonjour,

Et l'erreur est signalé sur une ligne précise ?
Si non lance une compilation à la main et tu verras en cas d'erreur la ligne
qui ne lui convient pas. Dis nous laquelle.

Arnaud

Zea wrote:
J'ai une table TbHybPays avec comme champ NumExp et Pays.
Je souhaite faire une requête qui regroupe tous les pays et qui
concatène les NumExp.
Ex :
FRANCE 1-2-3-4
ITALIE 5-6-7-8

J'ai donc créé une requête avec 2 champs :
1- Pays
2- Résultat: ConcatForQuery("Pays";[Pays];"NumExp";"TbHybPays";"/")

Enfin, j'ai créé un module faisant référence à la fonction dont voici
le code :

Function ConcatForQuery(strRegroup As String, fldRegroup As String, _
strConcat As String, strTable As String, _
Optional strSep As String = "/") As String
Dim db As Database
Dim rst As Recordset
Dim strResult As String
Dim strRst As String
Set db = CurrentDb()
strRst = "Select * From [" & strTable & "] " _
& "Where [" & strRegroup & "] = """ & fldRegroup & """;"
Set rst = db.OpenRecordset(strRst, dbOpenDynaset)
With rst
If Not .BOF Then
.MoveFirst
Do Until .EOF
If strResult = "" Then
strResult = .Fields(strConcat)
Else
strResult = strResult & strSep & .Fields(strConcat)
End If
.MoveNext
Loop
End If
End With
rst.Close: Set rst = Nothing
db.Close: Set db = Nothing
ConcatForQuery = strResult
End Function

Lorsque je lance la requête, j'ai une erreur de compilation.
Est ce que quelqu'un pourrait me dire où j'ai l'erreur.

Merci d'avance.


Avatar
laurent_deslandes
Le probléme de compilation se fait sur la ligne :
Dim db As Database
L'erreur est : Type défini par utilisateur non défini.
Que dois-je définir?

Merci.
Avatar
Gafish
Dans ton module, tu vas dans outils...references et tu coches la case
Microsoft DAO x.x Object Library

(avec x.x des chiffres qui varient selon la version que tu as)

Arnaud

Zea wrote:
Le probléme de compilation se fait sur la ligne :
Dim db As Database
L'erreur est : Type défini par utilisateur non défini.
Que dois-je définir?

Merci.


Avatar
laurent_deslandes
Bonjour et merci pour ton aide.
Effectivement, cela a permis de résoudre l'erreur.
Malheureusement, j'ai maintenant une erreur (Erreur "Incompatibilité
de type") sur la ligne : "Set rst = db.OpenRecordset(strRst,
dbOpenDynaset)"
En cherchant sur le forum, j'ai vu qu'il fallait changer le type de la
variable "rst" de "Recordset" en "object". Et là, effectivement, cela
marche.

Pourquoi est-ce que "Recordset" n'est pas reconnu sur ma machine?

D'avance merci.

"Gafish" wrote in message news:...
Dans ton module, tu vas dans outils...references et tu coches la case
Microsoft DAO x.x Object Library

(avec x.x des chiffres qui varient selon la version que tu as)

Arnaud

Zea wrote:
Le probléme de compilation se fait sur la ligne :
Dim db As Database
L'erreur est : Type défini par utilisateur non défini.
Que dois-je définir?

Merci.