2010-05-05 4 views
0

Hey, j'ai du mal à copier la clé primaire dans un autre champ dans Access. Ce n'est pas pertinent, mais je précise ce que je compare.Copie de la clé primaire dans un autre champ dans Access

... WHERE Tunniste=" & [Tarkiste] & "" 

Tunniste = clé primaire, Autonumber, ID (généré par Access.)

Tarkiste = Ceci est le champ que je veux le copier pour le comparer.

Je suis ouvert aux suggestions, j'ai déjà essayé avec Form_Load, en utilisant le code suivant.

Private Sub Form_Load() 

DoCmd.RunSQL "UPDATE Korut SET [Tarkiste]=('" & Tunniste & "');" 

End Sub 

Mais cette copié la même clé pour toutes les entrées dans le champ « Tarkiste ».

En toute simplicité, je veux une copie 1: 1 du champ "Tunniste" à "Tarkiste", quelle que soit la méthode utilisée.

Commencé à partir de cette question. File Picker Replaces All Rows With The Same Choice.

+0

@BashLover: Je donne +1 à Toni pour la réponse correcte, mais je vous suggère de lire ma réponse car il y a quelques points que vous pourriez trouver utiles. – Unreason

Répondre

1

Si les deux champs sont dans la même table, vous pouvez le faire:

DoCmd.RunSQL "UPDATE Korut SET [Tarkiste]=[Tunniste]" 

Et son sûr qu'il fonctionne!

+0

Merci, cela a fonctionné, cette communauté rochers =) Je vais sûrement aider d'autres personnes sur mon domaine de connaissances sur les questions sans réponse. – HoxDef

0

Pour mieux comprendre ce qui se passe est

La valeur unique est mis à jour dans chaque ligne parce que la chaîne de votre requête est calculée lors du chargement du formulaire. A ce moment la variable Tunniste obtient une valeur du contrôle auquel elle est liée (dans votre cas, probablement le contrôle qui pointe vers le champ dans le jeu d'enregistrements de la même table).

Donc, en supposant Tunniste est 1 pour l'enregistrement en cours sur la base de données Form_Load finit par exécuter une requête

UPDATE Korut SET [Tarkiste]=('1'); 

UPDATE Korut SET [Tarkiste]=[Tunniste]; 

fera une bonne chose.

A noter:

  • vous pouvez (devez) tester et construire votre commande SQL indépendamment des événements de forme (surtout si non des paramètres de requête dépendent des valeurs dans la forme, liés ou non liés); SQL en cours d'exécution se produit dans son propre espace
  • utilisation requêteur visuelle pour mettre en pratique vos compétences SQL (passer en mode SQL et arrière pour comprendre ce qui se passe)
  • lire sur la façon dont les données sont liés à la forme
  • vous êtes mettre à jour tous les enregistrements de la table chaque fois qu'un formulaire se charge et (s'il s'agit d'un formulaire d'édition normal) ce n'est pas optimal (vous pouvez au moins ajouter une condition WHERE pour définir le [Tarkiste] uniquement si les valeurs sont différentes), cette échelle va mal
  • vous semblez utiliser des types de données différents pour le même champ et la conversion silencieuse; cela peut se retourner contre vous

Peut-être qu'expliquer ce que vous essayez d'obtenir vous apportera de meilleurs conseils.

Questions connexes