PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Insertion saut de ligne champ chaîne pour faire un hajoute dynamique
Insertion saut de ligne champ chaîne pour faire un hajoute dynamique
Débuté par fornari, 12 déc. 2017 15:52 - 2 réponses
Posté le 12 décembre 2017 - 15:52
Bonjour,

J'ai un soucis lors de la modification d'un champ chaine.
Je souhaiterai ajouter un saut de ligne à une variable de type chaîne que je construit de façon dynamique.
L'une des partie de ce champ texte viens du libellé d'une variable champ.
Voici un exemple de ce que je souhaiterai obtenir :

client.nom = "toto"
client.prenom="titi"
client.adresse = "chez moi " + RC +" à mon adresse"
HAjoute(Client)

Voici comment j'ai fais mon code :

sChaine_ajout est une chaîne
nindice est un entier = 1
UneColonneTable est un Champ
//
POUR TOUTE LIGNE de TABLE_SansNom1
// table_sansnom1 contient l'import d'un fichier excel avec champ multi ligne
POUR nColonne = 1 _A_ TableOccurrence(TABLE_SansNom1, toColonne)
UneColonne <- TableEnumèreColonne(TABLE_SansNom1, nColonne)
// la première ligne contient l'intitulé des colonnes donc on ne l'insert pas dans la table client
SI nColonne>2 ALORS
// ajoute à la chaîne que les valeurs non null
SI UneColonne..Valeur <>"" ALORS
sChaine_ajout= sChaine_ajout+"client."+UneColonne..Libellé+"="""+Remplace(Remplace(UneColonne..Valeur,"""",""""""),Caract(10)," "+ " ""+ ... """)+""""+RC
FIN
FIN
FIN
sChaine_ajout= sChaine_ajout+ "HAjoute(Client)"+RC
nindice = nindice+1
FIN
Compile("InsertTable",sChaine_ajout)
ExécuteTraitement("InsertTable", trtProcedure)


Dans cet exemple je remplace le caractère 10 par le RC mais cela ne fonctionne pas lors de l'insertion dans la table le caractère RC n'est pas pris en compte et en plus il me tronque la partie après le remplace du caractère 10 à 1 caractère.

Merci de votre aide.

Christian
Membre enregistré
948 messages
Popularité : +30 (92 votes)
Posté le 12 décembre 2017 - 19:22
Coucou,

C'est in code comme sa que tu cherches ? (allez critique pas trops j'ai fait sa vite ^^)

_sCode est une chaîne
_sModel est une chaîne = [
client.%1 = "%2"
]

POUR _nIndiceTable = 1 _TO_ TableOccurrence(TABLE_SansNom1)
POUR _nIndiceColone = 3 _TO_ TableOccurrence(TABLE_SansNom1, toColonne)
_xColone est un Champ <- TableEnumèreColonne(TABLE_SansNom1, _nIndiceColone)
AVEC _xColone
SELON Vrai
CAS ..Valeur ~= ""
CONTINUE
AUTRE CAS
_sCode += [RC] + ChaîneConstruit(_sModel, ..Libellé, Replace(..Valeur, Caract(10), RC))
FIN
FIN
FIN
_sCode += [RC] + "HAjoute(Client)"
FIN
Info(_sCode)
STOP
Message modifié, 12 décembre 2017 - 19:45
Membre enregistré
36 messages
Popularité : +1 (1 vote)
Posté le 13 décembre 2017 - 16:01
Bonjour,

Il y a déjà un soucis sur le code car il ne sélectionne que la 1ère ligne du tableau table_sansnom1.
De plus si je remplace ta 1ère boucle par une boucle sur un table
: POUR TOUTE LIGNE DE Table_sansnom1
cela me génère bien la chaîne sauf que sur un champ multi ligne voila ce que cela donne
Ici je l'ai fait sur la table adhérent

POUR TOUTE LIGNE de TABLE_SansNom1
//POUR n_nIndiceTable = 1 _TO_ TableOccurrence(TABLE_SansNom1)
POUR _nIndiceColone = 3 _TO_ TableOccurrence(TABLE_SansNom1, toColonne)
_xColone est un Champ <- TableEnumèreColonne(TABLE_SansNom1, _nIndiceColone)
AVEC _xColone
SELON Vrai
CAS ..Valeur ~= ""
CONTINUE
AUTRE CAS
sChaine_ajout += [RC] + ChaîneConstruit(_sModel, ..Libellé, Replace(..Valeur, Caract(10), RC))
FIN
FIN
FIN
sChaine_ajout += [RC] + "HAjoute(Adhérent)"
//FIN
FIN
Compile("InsertTable",sChaine_ajout)
ExécuteTraitement("InsertTable", trtProcedure)


Adhérent.Ville = "paris"
Adhérent.Téléphone = "0505050505"
Adhérent.Mobile = "05050505"
Adhérent.Email = "toto@toto.fr"
Adhérent.DateNaissance = "01/01/1940"
Adhérent.Observations = "1ere ligne
2eme ligne"


Ce qui génère une erreur lors de la compilation.
Je ne trouve pas où cela beuge.