2010-06-13 4 views
1

J'utilise Access et ai ce SQLSQL, combinant le résultat

SELECT land.id, land.official_name, vaksiner.vaksiner 
FROM land INNER JOIN (vaksiner INNER JOIN land_sykdom ON vaksiner.id = land_sykdom.sykdom)  ON land.kort = land_sykdom.land 
ORDER BY land.official_name 

Le SQL me donne un résultat comme celui-ci:

id official_name vaksiner 

1  a    A 
1  a    C  
2  b    A 
2  b    B 
2  b    C 

Mais je veux combiner le résultat afin qu'il ressemble comme ceci:

id official_name vaksiner 

1  a    A, C 
2  b    A, B, C 
+0

Je n'ai pas téléchargé cela mais il semble qu'il puisse faire ce dont vous avez besoin? http://www.rogersaccesslibrary.com/forum/generic-function-to-concatenate-child-records_topic16.html –

+0

Si vous utilisez VBA ou un autre langage d'interface, il est probablement plus facile de le faire dans un langage procédural. – dkretz

Répondre

1

fonction ConcatRelated de Voir Allen Browne (Concatenate values from related records)

Si vous enregistrez votre requête existante en tant que qryVaksinerRaw, vous pouvez générer une nouvelle requête comme celle-ci pour produire les résultats souhaités.

SELECT DISTINCT 
    id, 
    official_name, 
    ConcatRelated("vaksiner","qryVaksinerRaw","id = " & [id]) AS vaksiner 
FROM qryVaksinerRaw; 

Pour ajouter la fonction à un module, copie la fonction de la page Web en commençant par

Public Function ConcatRelated(strField As String, _ 

et de continuer à inclure

End Function 

Ensuite, collez le texte copié dans votre module .

Remarque ConcatRelated() sera alors disponible pour les requêtes exécutées à partir d'Access. Cependant, comme toute fonction VBA personnalisée, elle ne peut pas être utilisée dans des requêtes exécutées depuis l'extérieur d'Access (comme ASP classique, .Net, etc.)

+0

Je l'ai essayé mais je ne pouvais pas le faire fonctionner. Comment l'ajoutez-vous à Access? Quelle fonction dois-je coller dans le module (en se référant à la 3ème étape sur "Comment utiliser la fonction http://allenbrowne.com/func-concat.html)? – Newbie

+0

Merci, maintenant ça marche! – Newbie