Problèmes de mise à jour SQL dans MS Access - Operation doit utiliser une requête pouvant être mise à jour

J'ai une requête select qui fait de la manipulation d'un texte essentiellement reformater un champ de sorte que je peux regarder dans une autre table:

Si ma première table si j'ai un champ comme "J1/2" il regarde l'ID d'un enregistrement dans une table différente avec J1 et J2 dans les champs appropriés.

Tout cela fonctionne bien.

Maintenant je veux mettre à jour la table d'origine donc je n'ai pas à faire des recherches à l'aide de cette manipulation de chaînes de plus, mais mes tentatives de requêtes de mise à jour à la fin avec "l'Opération doit utiliser une requête de mise à jour"

Des idées?

Mon instruction SELECT:

SELECT DISTINCT
t1.DD,
t1.TN,
t1.DD & " J" & MID(t1.TN,2,1) AS CalculatedStart,
t1.DD & " J" & MID(t1.TN,4,1) AS CalculatedEnd,
t2.ID
FROM t1 INNER JOIN t2
ON (t1.DD & " J" & MID(t1.TN,2,1)=t2.StartLink)
AND (t1.DD & " J" & MID(t1.TN,4,1)=t2.EndLink)
WHERE t1.TN Like "J?/?"
AND t1.DD Like "M*";

Rappeler - ce qui fonctionne bien, et j'ai le nécessaire t2.ID de sortir à l'autre bout.

Donc je veux faire quelque chose comme:

UPDATE t1 SET t2ID = (
    SELECT Query1.ID
    FROM Query1
    WHERE t1.DD=Query1.DD
    AND t1.TN=Query1.TN
    )
WHERE t1.TN Like "J?/?"
AND t1.DD Like "M*";

Seulement cela échoue. C'est dans MS Access lui-même donc je ne peux pas imaginer un réel problème d'autorisations comme la plupart de "l'Opération doit utiliser une requête de mise à jour" les problèmes semblent être.

EDIT: en Essayant de simplifier les cas qui ne fonctionne pas.

Cette requête de mise à JOUR est très bien:

UPDATE t1
SET t2ID="Unknown"
WHERE TN LIKE "J?/?"
AND DD LIKE "M*";

Ce un échec (Merci Goedke - cet exemple évidemment échoue parce que la sous-requête renvoie plus que 1 résultat. J'ai eu trop simpliste pour essayer de trouver mon problème)

UPDATE t1
SET t2ID=(SELECT ID FROM t2)
WHERE TN LIKE "J?/?"
AND DD LIKE "M*";

Moi aussi je viens d'avoir mes sous-requête syntaxe incorrecte, d'une certaine façon?

EDIT: Cette instruction SELECT est trop belle:

SELECT t1.OA, t1.DD, t1.TN, t1.HATRIS,
    query1.DD, query1.TN, query1.ID
FROM t1 INNER JOIN query1
ON t1.DD=query1.DD
AND t1.TN=query1.TN

En outre, à l'aide de compter sur l'instruction select ci-dessus montre qu'il y a exactement 1 ID retourné par (DD,TN) combinaison

EDIT:

Le cas le plus simple, j'ai maintenant à l'aide de diverses instructions SELECT, j'ai un tableau à 2 colonnes de la clé primaire de t1 et de la valeur que je veux insérer dans t1.

Je n'ai pas encore semblent écrire

UPDATE t1 SET t1.f2 = (SELECT t2.f2 FROM t2 WHERE t2.f1 = t1.f1)

où t1 est la clé primaire est la f1. Même l'ajout d'OÙ t1.f1 IN (SELECT f1 à PARTIR de t2) n'aide pas. (Ajouté pour éliminer la possibilité que la sous-requête renvoie 0 résultats)

source d'informationauteur