IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

4D Discussion :

Empêcher la mise à jour des références 4D Write


Sujet :

4D

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 14
    Points : 9
    Points
    9
    Par défaut Empêcher la mise à jour des références 4D Write
    Bonsoir à tous,

    Je suis en train de migrer une base vers une nouvelle structure. C'est une migration/refonte, qui implique évidemment des changements de nom de table et de nom de champs.

    Je me heurte à un problème de taille lors de l'import des champs BLOB contenant une zone 4D Write de l'ancienne structure vers la nouvelle structure.

    En effet, une fois l'import des BLOB 4D Write effectué (aucun souci de ce côté là), et lors de l'ouverture du formulaire de la nouvelle structure contenant la zone 4D Write, ce dernier essaie de convertir chaque ancienne référence vers un champ dans le document par un équivalent dans la nouvelle structure.

    Mais étant donné que la majorité des tables et noms de champs ont changé, les références se retrouvent "cassées".

    J'espère que mon explication est assez claire, car là, je bloque...

    Merci à ceux qui auraient une ébauche de solution...

    Cordialement

    - Mac OS 10.6
    - 4D v11.4

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Points : 27
    Points
    27
    Par défaut
    Le plus simple est de figer les références des zones write dans l'ancienne structure avant d'ouvrir le data avec la nouvelle.

    Sinon un peu laborieux, une procédure qui va chercher toutes références dans une zone write et qui remplace par les nouveaux champs. C'est jouable quand les références sont des champs mais si il y a des formules, ça complique un peu plus.

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Merci pour les pistes.

    Pour la première, j'avais déjà essayé, mais il me semble que "figer les références" est plutôt "figer les valeurs"... dans le sens où les références sont remplacées par les valeurs...

    Ce qui me conviendrait le mieux serait donc la deuxième solution, mais je n'ai pas trouvé le moyen de "figer" les références, même sous forme de texte (je voudrais juste le nom du champ référencé), les références aux champs de l'ancienne structure...

    Est-ce possible d'exporter une zone 4D Write sous forme de texte sans remplacer les références par les valeurs ?

    Autre exemple, si je fais un copier-coller d'une zone 4D Write de l'ancienne vers la nouvelle structure, les références sont conservées. Mais dès que j'enregistre le blob et le réouvre, les références sont cassées...

  4. #4
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Hello,

    je confirme donc, "figer le document" est bien pour figer les valeurs. C'est à dire que les références à des champs sont remplacées par leurs valeurs, et il est ensuite impossible de retrouver les champs référencés.

    je réitère donc ma question : y a t'il un moyen d'exporter une zone 4D Write où les références sont sous forme de texte, de telle sorte qu'il soit possible ensuite d'effectuer une sorte de "rechercher-remplacer" pour mettre à jour ces références vers les nouveaux noms des champs ?

    Merci...

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Comment changer les champs de fusion (références insérées ) dans une zone 4D write
    Voici un bout de code qui devrait vous y aider

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    $vLI_OBJ_nb:=WR Compter ($vLI_ZONE_WRT_he;wr nb objets )
     
    Si ($vLI_OBJ_nb>0)
     
    	Boucle ($vLI_cmpt_2;1;$vLI_OBJ_nb)
    		$vBO_To_Update:=Vrai
    		WR SELECTIONNER ($vLI_ZONE_WRT_he;1;$vLI_cmpt_2)
    		WR LIRE REFERENCE ($vLI_ZONE_WRT_he;$Table;$Champ;$vTX_FSN_nom;$Type)
     
    		Au cas ou 
    			: ($vTX_FSN_nom="@u_Tab@")
     
    				$vTX_FSN_nom:=Remplacer chaine($vTX_FSN_nom;"u_TAb";"TBox_utl_TAB")
    				WR SELECTIONNER ($vLI_ZONE_WRT_he;1;$vLI_cmpt_2)
    				WR INSERER VARIABLE ($vLI_ZONE_WRT_he;$vTX_FSN_nom)
     
    			: ($vTX_FSN_nom="@u_RC@")
     
    				$vTX_FSN_nom:=Remplacer chaine($vTX_FSN_nom;"u_RC";"TBox_utl_RC")
    				WR SELECTIONNER ($vLI_ZONE_WRT_he;1;$vLI_cmpt_2)
    				WR INSERER VARIABLE ($vLI_ZONE_WRT_he;$vTX_FSN_nom)
     
    			: ($vTX_FSN_nom="@u_quot@")
     
    				$vTX_FSN_nom:=Remplacer chaine($vTX_FSN_nom;"u_TAb";"TBox_utl_QUOT")
    				WR SELECTIONNER ($vLI_ZONE_WRT_he;1;$vLI_cmpt_2)
    						WR INSERER VARIABLE ($vLI_ZONE_WRT_he;$vTX_FSN_nom)
     
    			: ($vTX_FSN_nom="@u_Trait@")
     
    				$vTX_FSN_nom:=Remplacer chaine($vTX_FSN_nom;"u_TAb";"TBOX_Trait")
    				WR SELECTIONNER ($vLI_ZONE_WRT_he;1;$vLI_cmpt_2)
    				WR INSERER VARIABLE ($vLI_ZONE_WRT_he;$vTX_FSN_nom)
     
     
    			Sinon 
    				$vBO_To_Update:=Faux
    			Fin de cas 
     
    	Fin de boucle
    Par principe : NE JAMAIS METTRE D'INSERTION DE CHAMP EN DIRECT DANS 4D WRITE...

  6. #6
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Merci Bernard pour ce code, il me sera utile !

    Mais pour épiloguer, mon "problème" est bien que 4D stocke dans le blob les références à des champs par je pense un couple "N° table:N° champ".

    Donc quand j'importe ce blob dans une nouvelle structure (où les tables et les champs sont numérotés différemment), le blob n'est pas automatiquement mis à jour (et comment le pourrait-il ?).

    Je me retrouve donc avec des références qui sont syntaxiquement correctes (toujours ce couple "N° table:N° champ"), mais ne correspondent plus au contexte de la nouvelle structure...

    Bref, je pense que je vais bidouiller, en remplaçant dans l'ancienne structure les références à des champs par un "code" style wiki, importer le tout dans la nouvelle structure, puis remplacer ce code "wiki" par les nouvelles références.

    Dommage que 4D ne propose pas cette solution à l'exportation d'un blob contenant une zone 4D Write.

    @+
    Merci à tous pour vos réponses

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Mise à jour des références par VBA
    Par jpg75014 dans le forum VBA Access
    Réponses: 2
    Dernier message: 16/06/2011, 17h31
  2. Réponses: 10
    Dernier message: 03/03/2009, 11h46
  3. [JTable] mise à jour des données
    Par tripop dans le forum Composants
    Réponses: 3
    Dernier message: 04/02/2009, 18h52
  4. Mise à jour des tables liées + TIMESTAMP
    Par Homegrown dans le forum Access
    Réponses: 11
    Dernier message: 25/04/2005, 21h52
  5. Comment empêcher la mise à jour d'un contrôle à l'écran ?
    Par JojoLaFripouille dans le forum Composants VCL
    Réponses: 4
    Dernier message: 19/09/2003, 12h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo