Suite

Mettre à jour automatiquement la valeur du champ dans une colonne en fonction du changement apporté à une autre colonne dans la même table ?

Mettre à jour automatiquement la valeur du champ dans une colonne en fonction du changement apporté à une autre colonne dans la même table ?


Lors de l'édition, je souhaite pouvoir modifier les attributs d'un champ et permettre la mise à jour automatique d'un autre champ dans la même table attributaire.

Essentiellement, j'ai une couche avec un code, une description et des informations de légende.

J'aimerais pouvoir modifier le code et mettre à jour la description et les informations de légende avec cette modification avec sa description et ses informations de légende correctes.

Existe-t-il un moyen de le faire dans les outils d'ArcMap ou dans un script associé ?


Cela dépendra du type de base de données spatiale avec laquelle vous travaillez, par ex. shapefile, géodatabase personnelle ou fichier, ArcSDE, etc.

Si vous travaillez avec une base de données SDE sur un SGBDR traditionnel (MS SQL, ORACLE, Postgres), vous pouvez utiliser un déclencheur de base de données pour aider à mettre à jour automatiquement les champs lorsqu'un changement est apporté à un autre.

Si vous travaillez avec un fichier de formes ou pgdb/fgdb, vous n'aurez pas cette option car les déclencheurs ne sont pas pris en charge dans leurs structures de base de données.


Vous pouvez également essayer de créer une table de relations si vous travaillez à partir d'une géodatabase. Voir le lien ci-dessous :

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//004t00000006000000.htm


Vous pouvez créer un simple script de calculatrice de champ python que vous exécutez pour mettre à jour les valeurs du champ de description lorsque vous avez terminé vos modifications, voir l'exemple ci-dessous :

def checkValue(c,d) : if c == 1 : renvoie 'un' if c == 2 : renvoie 'deux' if c == 3 : renvoie 'trois' if c == 4 : renvoie 'quatre'


Les champs définis par l'utilisateur dans la classe d'entités au niveau du bureau ne peuvent pas être dynamiques. Le plus proche que vous puissiez obtenir est d'exécuter un script arcpy à la demande ou dans les délais. Vous pourriez devenir ringard avec des méthodes pour déclencher le script.


2 réponses 2

Utilisez plutôt un déclencheur BEFORE et définissez la colonne mise à jour en attribuant une valeur à NEW.updated (il s'agirait d'une simple affectation, pas d'une UPDATE ). De cette façon, vous ne déclencherez pas de mises à jour supplémentaires.

Votre corps de déclenchement ressemblera simplement à

J'utilise généralement les déclencheurs AFTER uniquement pour modifier autre tables, AVANT de modifier la nouvelle ligne (ou mise à jour), ou de supprimer DELETE .

Si, comme dans votre cas, vous souhaitez modifier le champ mis à jour chaque fois que l'enregistrement a été modifié, vous n'avez pas besoin d'un déclencheur.


Première, vous devez être conscient de la sortie de la différence de deux dates doit être en jours ou en mois ou en années comme un Numéro!

Si vous définissez le type de données renvoyé par cette formule comme DateTime, cela fonctionnerait mais cela fonctionnerait logiquement afficher les données invalides.

Donc, la différence doit être affichée comme nombre Pas comme format de date !

Pour obtenir la différence entre aujourd'hui et la date de retard via cette formule de colonne calculée

  • Ajoute un nouvel objet.
  • Mettre à jour l'élément existant.
  • Mettez à jour la colonne calculée elle-même dans le paramètre de liste !

Pour mettre à jour quotidiennement la colonne calculée

Essayez de créer un Politique de rétention pour exécuter un flux de travail qui met à jour les éléments de la liste quotidiennement !!

Ou au lieu d'utiliser la colonne calculée, utilisez JSlink comme mentionné dans Jours passés depuis la création de l'élément de liste - SharePoint Online 2013


Détecter si une seule colonne change dans un déclencheur

J'ai un déclencheur après mise à jour qui met en file d'attente les ID d'enregistrement dans une autre table pour un traitement ultérieur à une date ultérieure. Il utilise insert pour obtenir les identifiants des enregistrements à traiter.

J'aimerais maintenant exclure certains enregistrements mis en file d'attente dans cette table si le seul changement a été apporté à une colonne particulière. Si d'autres colonnes au-delà de cette colonne sont modifiées, je souhaite toujours mettre l'enregistrement en file d'attente.

Comment puis-je identifier si une seule colonne particulière a été modifiée ?

J'ai jeté un œil à UPDATE(), mais il semble que je devrais répertorier toutes les 47 autres colonnes de la table, ce que j'aimerais éviter.

COLUMNS_UPDATED tel qu'utilisé dans Comment utiliser COLUMNS_UPDATED pour vérifier si certaines colonnes sont mises à jour ? semblait prometteur, mais je n'arrive pas à le faire fonctionner. La colonne que je veux exclure a le ColumnID 30. D'après mes calculs, cela me donne un bitmask entier de 536,870,912 ( SÉLECTIONNER PUISSANCE(2, 30 - 1) ).

La calculatrice de Windows me dit qu'il est correct d'avoir le 30ème bit défini.

Lorsque j'ai effectué une mise à jour uniquement sur la colonne que je souhaite exclure, COLUMNS_UPDATED () est retourné 0x000000200040. Cela donne un motif qui suggère que deux colonnes complètement différentes ont été mises à jour. Identifiants de colonne 7 (2^(7-1)=64) et 22 (2^(22-1)=2 097 152).

Je ne suis pas sûr que cela vaille la peine de poursuivre cette approche. Il semble que ce serait une comparaison facile pour ramasser les modifications apportées à d'autres domaines.

METTRE À JOUR: J'ai eu recours à une comparaison de CHECKSUM avec d'autres champs entre inséré et supprimé. Je préférerais ne pas utiliser cette approche car cela pourrait causer des problèmes si d'autres champs sont ajoutés à la table à l'avenir. Il est également possible qu'une collision de hachage se produise.


Nous pouvons lier des feuilles de calcul et mettre à jour les données automatiquement. Un lien est une formule dynamique qui extrait des données d'une cellule d'une feuille de calcul et met automatiquement à jour ces données dans une autre feuille de calcul. Ces feuilles de calcul de liaison peuvent se trouver dans le même classeur ou dans un autre classeur.

Une feuille de travail s'appelle le feuille de calcul source, d'où ce lien extrait les données automatiquement, et l'autre feuille de calcul s'appelle le feuille de calcul de destination qui contient cette formule de lien et où les données sont mises à jour automatiquement.

Rappelles toi une chose que le formatage des cellules de la feuille de calcul source et de la feuille de calcul de destination doit être le même, sinon le résultat pourrait être vu différemment et peut prêter à confusion.

Deux méthodes pour lier des données dans différentes feuilles de calcul

Nous pouvons lier ces deux feuilles de calcul en utilisant deux méthodes différentes.

  1. Copier et coller le lien
    • À partir de la feuille de calcul source, sélectionnez la cellule qui contient des données ou que vous souhaitez lier à une autre feuille de calcul et copiez-la en appuyant sur le bouton Copie bouton de la Domicile onglet ou appuyez sur CTRL+C.
    • Accédez à la feuille de calcul de destination et cliquez sur la cellule dans laquelle vous souhaitez lier la cellule de la feuille de calcul source. Sur le Domicile onglet, cliquez sur la flèche déroulante de Pâte, et sélectionnez Coller le lien dans « Autres options de collage ». Ou faites un clic droit dans la cellule de la feuille de calcul de destination et choisissez Coller le lien de Options de collage.
    • sauver le travail ou retournez au classeur source et appuyez sur ESC sur le clavier pour supprimer la bordure autour de la cellule copiée et enregistrer le travail.

  • Dans la feuille de calcul de destination, cliquez sur la cellule qui contiendra la formule de lien et entrez un signe égal (=)
  • Accédez à la feuille source et cliquez sur la cellule qui contient les données et appuyez sur Entrée sur le clavier. Enregistrez votre travail.

En utilisant ces deux méthodes, nous pouvons lier une feuille de calcul et mettre à jour les données automatiquement en fonction de vos besoins. Dans cet article, nous allons discuter de quelques exemples en utilisant les cas suivants.

Mettre à jour la cellule d'une feuille de calcul en fonction d'une cellule d'une autre feuille

Supposons que nous ayons une valeur de 200 dans la cellule A1 sur Sheet1 et que nous voulions mettre à jour la cellule A1 sur Sheet2 à l'aide de la formule de liaison. Nous pouvons le faire en utilisant les deux mêmes méthodes que nous avons couvertes.

Utilisation de la méthode copier-coller du lien

Copiez la valeur de cellule de 200 de la cellule A1 sur Sheet1.

Allez à Sheet2, cliquez dans la cellule A1 et cliquez sur la flèche déroulante de Pâte bouton sur le Domicile onglet et sélectionnez Coller le lien bouton. Il va générer un lien en entrant automatiquement la formule =Feuille1!A1 .

Ou cliquez avec le bouton droit dans la cellule de la feuille de calcul de destination, Sheet2, et choisissez Coller le lien de Options de collage: Il générera automatiquement la formule de liaison.

Saisie manuelle de la formule

Nous pouvons entrer la formule de liaison manuellement dans la cellule A1 de la feuille de calcul de destination Sheet2 pour mettre à jour les données en les tirant de la cellule A1 de Sheet1.

Dans la cellule A1 de Sheet2, entrez manuellement un signe égal (=) et accédez à Sheet1 et cliquez sur la cellule A1 et appuyez sur la touche ENTRÉE de votre clavier. La formule de liaison suivante sera mise à jour dans la feuille de destination qui reliera la cellule A1 des deux feuilles.
=Feuille1!A1

Mettre à jour la cellule sur une feuille uniquement si la première feuille remplit une condition

En entrant manuellement la formule de liaison, nous pouvons mettre à jour les données dans la cellule A1 de Sheet2 en fonction d'une condition si la valeur de cellule de A1 sur Sheet1 est supérieure à 200. Nous pouvons le faire en entrant cette condition logique dans une fonction SI. Si la cellule A1 de la feuille Sheet1 remplit cette condition, la fonction SI renvoie la valeur de la cellule A1 de la feuille Sheet2, sinon elle renverra une cellule vide.

Voici la formule pour lier les cellules des deux feuilles en fonction de cette condition. Nous entrerons cette formule manuellement dans la cellule A1 de Sheet2
=SI(Feuille1!A1>200,Feuille1!A1"")

Mettre à jour la cellule d'une feuille à partir d'une autre feuille avec une liste déroulante

Supposons que nous ayons une liste déroulante dans la cellule A1 de Sheet1 et que nous puissions mettre à jour la cellule A1 sur Sheet2 en entrant la formule de lien dans la cellule A1 sur Sheet2.

Dans la cellule A1 sur Sheet2, nous entrerons manuellement cette formule de liaison pour mettre à jour les données automatiquement en fonction de la valeur de la cellule sélectionnée dans la liste déroulante.
=Feuille1!A1

Lier des données dans un ensemble de données réel est plus complexe et dépend de votre situation. Vous devrez peut-être utiliser des techniques autres que celles énumérées ci-dessus. Si vous êtes pressé et souhaitez que votre problème soit résolu par un expert Excel, essayez notre service. Les experts sont disponibles pour vous aider 24h/24 et 7j/7. La première question est gratuite.


Fonction de correctif Powerapps pour obtenir l'identifiant de l'élément

Supposons qu'au moment de la création d'un nouvel élément dans la liste SharePoint, vous souhaitiez obtenir l'ID de cet élément.

Pour obtenir l'identifiant de l'article à l'aide de la fonction de correctif de Powerapps, vous devez prendre un Bouton (Créer un nouvel article et obtenir l'ID d'article) et définir un Variable sur son SurSélection propriété comme :

La formule est presque similaire à celle ci-dessus (PowerApps Patch Sharepoint List New Item). La seule différence est que vous devez définir une variable (ID de l'article) qui vous aidera à obtenir l'identifiant de cet élément.

Prends-en un Étiqueter (Insérer -> Label) et définissez la variable (ID de l'article) sur son Texte propriété comme :

ID de l'article = Nom de la variable

Prévisualisez l'application et cliquez sur le bouton (Créer un nouvel élément et obtenir l'ID d'élément) pour créer un nouvel élément dans la liste SharePoint. En même temps, dans l'étiquette, vous pouvez voir l'ID de cet élément créé, comme indiqué ci-dessous.

De plus, si vous vérifiez dans la liste SharePoint, vous pouvez voir le même ID de l'élément nouvellement créé.


Pourquoi vous pourriez utiliser la fonction IF()

En mode base de données, beaucoup de données sont définies par type. De cette façon, vous n'avez besoin que d'un seul champ pour la valeur réelle. Vous pouvez également le faire avec Excel, comme indiqué dans Figure A. Ce tableau simplifié utilise un seul champ de valeur et définit chaque valeur comme un débit ou un crédit. Dans Excel, vous pouvez également voir cela comme deux colonnes de valeur, une pour les débits et une pour les crédits, et aucun champ de type de transaction car identifié par chaque en-tête de colonne.

Nous devons diviser les valeurs de la colonne D en deux colonnes, en fonction des types de transaction de débit et de crédit.

Si vous héritez d'une feuille qui ressemble à celle de Figure A, mais vous voulez une feuille plus traditionnelle où les deux types de transactions sont dans des colonnes différentes, vous n'êtes pas bloqué. Vous pouvez d'abord essayer Text to Columns, mais dans ce cas, cette fonctionnalité ne fonctionnera pas car elle fonctionne avec une seule colonne. Vous ne pouvez pas l'utiliser pour diviser des valeurs en fonction d'une valeur conditionnelle dans une deuxième colonne. Au lieu de cela, nous utiliserons deux fonctions IF(), une pour le débit et une pour le crédit.

La fonction SI() utilise la forme suivante :

état est une valeur ou une expression qui équivaut à vrai ou faux et le vrai et faux les arguments identifient ce qui se passe quand état est vrai ou faux, respectivement. Maintenant, utilisons cette fonction.


Excel - Utilisation des fonctions RECHERCHEV et RECHERCHEH

Ce document explique les fonctions de RECHERCHEV et RECHERCHEH et comment les utiliser dans une feuille de calcul. Il peut être utilisé dans toutes les versions de Microsoft Excel.

RECHERCHEV et RECHERCHEH sont des fonctions d'Excel qui vous permettent de rechercher un tableau de données en fonction de ce que l'utilisateur a fourni et de donner les informations appropriées à partir de ce tableau.

Si vous disposez d'un tableau de numéros d'identification d'étudiant, de noms d'étudiants et de notes, vous pouvez configurer Excel de sorte que si un numéro d'identification d'étudiant est fourni par l'utilisateur, il parcoure le tableau et affiche le nom et la note de l'étudiant.

RECHERCHEV vous permet de rechercher une table configurée verticalement. Autrement dit, toutes les données sont configurées dans des colonnes et chaque colonne est responsable d'un type de données. Dans l'exemple du dossier étudiant, il y aurait une colonne de données distincte pour les noms des étudiants, une pour les numéros d'identification des étudiants, etc.

HLOOKUP est exactement la même fonction, mais recherche des données qui ont été formatées par des lignes au lieu de colonnes.

Le format de la fonction RECHERCHEV est : RECHERCHEV(lookup_value,table_array,col_index_num,range_lookup).

Le valeur_recherche est l'entrée de l'utilisateur. C'est la valeur que la fonction utilise pour la recherche. Si vous recherchez dans une table par le numéro d'identification de l'étudiant, la valeur_recherche est la cellule qui contient le numéro d'identification de l'étudiant saisi en cours de recherche.

Le tableau_tableau est la zone de cellules dans laquelle se trouve le tableau. Cela inclut non seulement la colonne sur laquelle la recherche est effectuée, mais les colonnes de données pour lesquelles vous allez obtenir les valeurs dont vous avez besoin. Revenons à l'exemple, table_array inclurait non seulement la colonne du numéro d'identification de l'étudiant, mais également les colonnes des noms et des notes des étudiants.

Le col_index_num est la colonne de données qui contient la réponse que vous voulez. Si votre table est configurée comme : colonne 1 - Numéro d'identification de l'étudiant, colonne 2 - Noms des étudiants, colonne 3 - Notes et que vous avez entré un numéro d'identification de l'étudiant et que vous souhaitez récupérer la note qui a été reçue pour cette personne, le col_index_num serait 3. 3 est le numéro de colonne de la colonne de données pour la RÉPONSE que vous essayez de rechercher.

Range_lookup est une valeur VRAI ou FAUX. Lorsqu'elle est définie sur TRUE, la fonction de recherche donne la correspondance la plus proche de la valeur lookup_value sans dépasser la valeur lookup_value. Lorsqu'il est défini sur FALSE, une correspondance exacte doit être trouvée avec lookup_value ou la fonction renverra #N/A. Notez que cela nécessite que la colonne contenant la valeur lookup_value soit formatée dans l'ordre croissant.

Pour utiliser l'assistant de fonction pour insérer une fonction RECHERCHEV :

  1. Sélectionnez la cellule qui contiendra la réponse à RECHERCHEV et accédez à la boîte de dialogue Insérer une fonction, qui dépend de la version d'Excel que vous utilisez :
    • Pour Excel 2007 et 2010 : accédez à la Formule onglet sur le ruban et choisissez Insérer une fonction.
    • Pour Excel 2003 et versions antérieures : sélectionnez Insérer -> Une fonction.

Sous le Catégorie de fonction, choisissez soit Tous ou alors Recherche & Référence.

Sous le Nom de la fonction, sélectionnez RECHERCHEV, et frapper d'accord.

L'assistant de fonction pour RECHERCHEV s'affichera alors. Les 4 valeurs évoquées ci-dessus (lookup_value, table_array, col_index_num, range_lookup) sont requises par la fonction. Chaque ligne pour chaque valeur requise. Si vous placez le curseur dans la première ligne pour lookup_value, en dessous, il explique quelle est la valeur lookup_value pour votre référence. Des informations similaires s'affichent lorsque le curseur se trouve dans l'un des autres champs.

Saisissez la valeur lookup_value en tapant le numéro de la cellule ou en sélectionnant la cellule sur la feuille de calcul.

Entrez dans le tableau_tableau en tapant les numéros des cellules ou en sélectionnant le groupe de cellules sur la feuille de calcul.

Entrez le numéro de la colonne qui contient les données que vous souhaitez obtenir dans la zone col_index_num.

Entrez dans le champ range_lookup la valeur TRUE si la fonction doit accepter la valeur la plus proche de votre lookup_value sans la dépasser ou FALSE si une correspondance exacte est requise.


Comment puis-je définir automatiquement la &ldquolast update&rdquo cellule dans les feuilles de calcul Google Docs ?

Comment puis-je définir automatiquement la cellule "dernière mise à jour" dans les feuilles de calcul Google Docs ?

Je souhaite créer une colonne dans laquelle la valeur des cellules sera automatiquement définie lors de la dernière modification de cette ligne. Est-ce possible? Comment puis-je faire cela / quelle option dois-je utiliser pour définir cela ?

Je vois une solution de contournement pour MS Excel, mais je pense que Google Docs devrait avoir quelque chose de similaire, n'est-ce pas ? (doigts croisés)

Nous avons plusieurs personnes qui éditent une grande feuille. Nous pouvons voir l'historique des révisions, mais ce serait mieux si nous avions également une colonne des dates de "dernière mise à jour".


* Veuillez essayer un numéro de page inférieur.

* Veuillez saisir uniquement des chiffres.

* Veuillez essayer un numéro de page inférieur.

* Veuillez saisir uniquement des chiffres.

Signaler un abus

2 personnes ont trouvé cette réponse utile

Super! Merci pour vos commentaires.

Êtes-vous satisfait de cette réponse?

Merci pour vos commentaires, cela nous aide à améliorer le site.

Êtes-vous satisfait de cette réponse?

Tout d'abord, vous ne devez vous interfacer avec les données que via des formulaires liés, jamais dans la feuille de données brute d'une table ou d'une requête.

En supposant que la zone de liste déroulante est liée à une colonne de clé étrangère qui référence la clé primaire d'une table référencée à partir de laquelle la valeur que vous souhaitez afficher est dérivée, dans la grande majorité des cas, vous ne devez stocker que la valeur de la clé étrangère dans la table de référencement. Vous pouvez afficher les valeurs d'une ou plusieurs colonnes non clés de la table référencée de plusieurs manières, par ex.

1. Renvoyez les colonnes pertinentes de la table référencée dans la requête RowSource de la zone de liste déroulante et en tant que propriété ControlSource d'un ou plusieurs contrôles indépendants du formulaire, référencez la propriété Column de la zone de liste déroulante. Ceci est basé sur zéro, donc pour référencer la troisième colonne, par exemple, vous référenceriez Column(2) de la zone de liste déroulante. Vous en trouverez un exemple dans le fichier Images.zip dans mon dossier de bases de données publiques à l'adresse :

Ce fichier de démonstration illustre différentes manières d'attacher des images aux enregistrements, mais il se trouve que le formulaire d'adresses qu'il utilise comme exemple comprend une zone de texte Comté qui fait référence à une zone de liste déroulante Ville avec :

pour afficher le comté dans lequel se trouve la ville sélectionnée.

2. Une autre façon est de simplement baser le formulaire sur une requête qui joint les tables de référencement et référencées sur les clés, et de renvoyer les colonnes non clés de la table référencée dans la requête. Vous pouvez ensuite lier des contrôles à ceux-ci dans le formulaire. Pour rendre les contrôles en lecture seule, définissez leur propriété Locked sur True (Oui) et leur propriété Enabled sur False (No). NB les clés doivent être correctement indexées.

L'exception à ce qui précède est lorsque la valeur de la colonne dans la table référencée peut changer au fil du temps, mais vous voudriez que la valeur dans la table de référencement reste fixe comme celle au moment où la ligne a été insérée. Un exemple est le UnitPrice d'un produit dans une table Products qui est référencé à partir d'une table OrderDetails. Comme vous ne voudriez pas que les commandes existantes reflètent les modifications de prix ultérieures, vous devez dans ce cas également inclure une colonne UnitPrice dans OrderDetails et lui attribuer le prix unitaire actuel de Products dans la procédure événementielle AfterUpdate d'un contrôle ProductID, par ex.

_____________________
Ken Sheridan,
Cannock, Angleterre

"Ne l'écrivez pas tant que vous ne l'avez pas compris" - Richard Feynman


Voir la vidéo: Tworzenie tabel cz. 1