Suppression d'enregistrements dans un scenario OffLine

Étiquetté : 

  • Suppression d'enregistrements dans un scenario OffLine

    Posté par Michel LAPLANE (MVP Microsoft Visio) sur 8 avril 2022 à 11h53

    Bonjour,

    Dans un scenario Offline, je voudrais pouvoir supprimer des enregistrements d’une table DataVerse à partir d’une collection d’éléments supprimés.

    Le code lorsque je rafraichi ma BrowseGallery est le suivant

    If(Connection.Connected,n// Remove deleted recordnForAll(colLocalPersonnesToDelete,Remove([@OffLineTestDataVerses],LookUp([@OffLineTestDataVerses],Nom=[@Nom])););n// Clean the todelete collectionnClear(colLocalPersonnesToDelete);nSaveData(colLocalPersonnesToDelete,"cacheLocalPersonnestoDelete");​​

    Cela de marche pas, la table OffLineTestDataVerses n’est pas mise à jour.

    J’ai aussi essayé

    If( Connection.Connected,  n// Re move The deleted recordnRemove([@OffLineTestDataVerses],colLocalPersonnesToDelete);   n// Clean the todelete collection    nClear(colLocalPersonnesToDelete);    nSaveData(colLocalPersonnesToDelete,"cacheLocalPersonnestoDelete");​

    Cela de marche pas non plus, la table OffLineTestDataVerses n’est pas mise à jour.

    J’ai encore essayé

    If(Connection.Connected,    n// Remove deleted record nRemoveIf([@OffLineTestDataVerses],Filter(colLocalPersonnesToDelete,Nom=colLocalPersonnesToDelete[@Nom]) );n// Clean the todelete collection  nClear(colLocalPersonnesToDelete);SaveData(colLocalPersonnesToDelete,"cacheLocalPersonnestoDelete");​n

    Cela ne marche pas non plus.

    Avez-vous des suggestions ?

    Merci

    PostID=bYE5OHD4IcI8rcz

    R3dKap a répondu Il y a 7 mois, 2 semaines 1 Membre · 3 Réponses
  • 3 Réponses
  • R3dKap

    Membre
    8 avril 2022 à 15h11

    Salut @Michel,

    Alors le dernier (avec le RemoveIf()) c’est normal qu’il ne marche pas car la 2è condition est censée être une condition et non pas une table.

    Les 2 autres devraient fonctionner par contre.

    Le premier n’est pas génial en termes de perfs car on fait une boucle et on supprime les éléments un par un.

    Le deuxième est la meilleure solution, si colLocalPersonnesToDelete a bien la même structure de ta table OfflineTestDataverses.

    Est-ce que ta collection colLocalPersonnesToDelete a bien la même structure que ta table et est-ce que les éléments sont bien “entiers” dedans (càd toutes colonnes renseignées, comme dans la table) ?

    Tu n’as pas activé les options sur ta table qui empêche de supprimer un enregistrement s’il est lié dans une table ?

    Essaie peut-être de tester l’opération de suppression avec le Remove() de ton 2è test en le mettant directement sur un bouton (sans le test du mode offline) pour voir déjà s’il fonctionne…

    CommentID=ivncvsIYJzEExls, PostID=bYE5OHD4IcI8rcz

    • Michel LAPLANE (MVP Microsoft Visio)

      Membre
      11 avril 2022 à 12h05

      Effectivement la structure de colLocalPersonnesToDelete ne contenait que les champs de ma table mais pas les champs invisibles de la table dataverse (_ownerid_value,offlinetestdataverse_AsyncOperation, …). En alimentant la table colLocalPersonnesToDelete avec un lookup dans mon EditForm, cela marche avec la deuxième approche.

      Du coup, je ne comprenais pas pourquoi la première approche qui fait le lookup ne fonctionnait pas. Après plusieurs tests il semblerait qu’il faille nommer la collection racine du ForAll.

      ForAll(ncolLocalPersonnesToDelete As colInLoop,    Remove([@OffLineTestDataVerses], LookUp([@OffLineTestDataVerses],Nom = colInLoop[@Nom]));n);

      C’est vrai que ce n’est pas optimal.

      Peut-être qu’il serait préférable de créer la colLocalPersonnesToDelete avec une structure de ma table DataVerse sur le OnStart, ce qui fait que quand je l’alimenterai elle aura déjà la bonne structure et la deuxième approche marchera.

      Merci pour ton aide

      SubCommentID=GrdVgPgRfZKCqzY, CommentID=ivncvsIYJzEExls, PostID=bYE5OHD4IcI8rcz

  • R3dKap

    Membre
    11 avril 2022 à 12h26

    L’utilisation systématique du As dans le ForAll() est une bonne pratique… 😉

    CommentID=IKLhvJ28rW7DH8S, PostID=bYE5OHD4IcI8rcz

Connectez-vous pour répondre.