Bonjour,
Je prépare une exportation de mes tables en fichiers csv délimités par point-virgule; comme j'ai des champs [VARCHAR] je voudrais interdire la saisie du point-virgule dans ceux-ci - Point-virgule ou autre caractère choisi.
Existe-t-il une méthode simple ou dois-je passer par une macro qui contrôle les caractères après chaque saisie ?
Je ne demande pas la macro, juste savoir si c'est possible autrement.
Merci d'avance
[Résolu]Interdire caractère dans champ texte
Modérateur : Vilains modOOs
Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
-
- Membre lOOyal
- Messages : 35
- Inscription : 28 mai 2019 08:53
[Résolu]Interdire caractère dans champ texte
Dernière modification par camil le 01 juil. 2019 10:02, modifié 1 fois.
LibreOffice 6.3.5 X64 - Windows 10
-
- IdOOle de la suite
- Messages : 25181
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: Interdire caractère dans champ texte
Déjà à l'origine, le séparateur dans un CSV, c'est la virgule.
Si tu lis la définition dans Wikipédia, tu verras que pour contourner le problème, les champs texte doivent être délimités par des guillemets.
Et si le champ lui-même des guillemets, ils sont doublés.
L'export de table en CSV est disponible via une extension : https://forum.openoffice.org/fr/forum/v ... 18&t=49582
Si tu lis la définition dans Wikipédia, tu verras que pour contourner le problème, les champs texte doivent être délimités par des guillemets.
Et si le champ lui-même des guillemets, ils sont doublés.
L'export de table en CSV est disponible via une extension : https://forum.openoffice.org/fr/forum/v ... 18&t=49582
-
- Membre cOOnfirmé
- Messages : 297
- Inscription : 09 sept. 2010 19:06
Re: Interdire caractère dans champ texte
Bonjour camil,
Si tu veux t'orienter sur une macro, voici un bout de code qui contrôle avant une action si un caractère interdit existe (ici = ?). Le code est activé par un bouton avec l'événement Exécuter l'action. Le champ à contrôler est dans une grille.
A tester
Si tu veux t'orienter sur une macro, voici un bout de code qui contrôle avant une action si un caractère interdit existe (ici = ?). Le code est activé par un bouton avec l'événement Exécuter l'action. Le champ à contrôler est dans une grille.
A tester
Code : Tout sélectionner
Sub CaractInterdits(oEv as Object)
Dim oGrille as Object,oForm As Object
Dim propFich(0) As New com.sun.star.beans.PropertyValue
Dim sRep as String, strQR as String
Dim intx As Variant
Dim LaDate As String, sInput As String
Dim iPos As Integer, iPosN As Integer
sRep = getDirectory(ThisDatabaseDocument.getURL)
sRep = sRep & "S-rép1/S-s-Rép2/" ' chaîne des s/rép pour la recherche (si nécessaire)
oForm = oEv.Source.Model.Parent
oGrille = oForm.getByName("MainForm_Grid")
' On teste déjà les données à la recherche de caractères interdits
MsgBox ("Reherche des caractéres interdits. ",0,) = 0
With oForm
.AfterLast
.beforeFirst
For intx = 0 to .Rowcount -1
.next
strQR = oGrille.getByName("Nom de la grille").CurrentValue
sInput = strQR
iPos = Instr(sInput,"?") '? est le caractére interdit recherché
If iPos > 0 Then 'si oui on sort
iposN = Instr(sInput, "Né(e)" ' champ de la recherche
iPosN = iPosN - 2
LaDate = Left(sInput, iPosN)
MsgBox ("Caractère interdit détecté = ? dans " & LaDate & " Vous devez fermer le formulaire, modifier votre saisie et recommencer! " , 16,) = 6
Exit Sub
End If
Next
End With
End Sub
Function getDirectory(URLPath As String) As String
Dim parts As Variant
parts = split(URLPath, "/")
parts(UBound(parts())) = ""
getDirectory = join(parts, "/")
End Function
La modération vous a écrit: ne pas poursuivre ici.
Nous vous rappelons que cette section n'est pas dédiée aux macros.
Lorsque vous avez une proposition en ce sens, merci d'orienter le demandeur vers la section appropriée sans donner de réponse ici.
LO version 7.4.5.1 sous windows 10 et 11 standard, java 1.8.0_341
-
- Membre lOOyal
- Messages : 35
- Inscription : 28 mai 2019 08:53
Re: Interdire caractère dans champ texte
Bon d'accord, C de CSV signifie comma, je n'avais jamais fait le rapprochement... C'est vrai que lorsqu'on importe un csv LibreOffice demande de préciser le caractère délimitant.Dude a écrit :Déjà à l'origine, le séparateur dans un CSV, c'est la virgule.
Si tu lis la définition dans Wikipédia, tu verras que pour contourner le problème, les champs texte doivent être délimités par des guillemets.
Et si le champ lui-même des guillemets, ils sont doublés.
J'arrête donc d'appeller csv le fichier que je veux produire, ça sera un TXT - Pour l'instant j'ai choisi le chr(124), je ne sais pas quel nom il porte, celui-là;
Je ne veux pas utiliser une extension mais une macro.Dude a écrit :L'export de table en CSV est disponible via une extension : https://forum.openoffice.org/fr/forum/v ... 18&t=49582
En fait je bricole suite à ce fil :https://forum.openoffice.org/fr/forum/v ... =9&t=60451 - J'utilise Firebird intégré.
Je veux un bouton dans un formulaire qui enchaîne "Export vers TXT - Vider les tables - Réimport des données", pour voir si il y a un gain de volume sur la base.
Je viens juste de réussir l'export, me reste à faire l'import, je ne peux rien en dire de plus à cet instant. J'irai là-bas dire ce que ça donne quand j'aurai bouclé.
Dernière modification par camil le 01 juil. 2019 11:48, modifié 1 fois.
LibreOffice 6.3.5 X64 - Windows 10
-
- Membre lOOyal
- Messages : 35
- Inscription : 28 mai 2019 08:53
Re: Interdire caractère dans champ texte
La modération vous a écrit: ne pas poursuivre ici.
Nous vous rappelons que cette section n'est pas dédiée aux macros.
Lorsque vous avez une proposition en ce sens, merci d'orienter le demandeur vers la section appropriée sans donner de réponse ici.
Je n'avais pas prêté attention à votre message.
Je suis là parce que je bataille avec Firebird, mais j'arrête le tir ici...
Merci à plonge pour le bout de code, il va m'être utile
LibreOffice 6.3.5 X64 - Windows 10
-
- IdOOle de la suite
- Messages : 25181
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: Interdire caractère dans champ texte
Déjà expliqué ici : https://forum.openoffice.org/fr/forum/v ... =9&t=60451camil a écrit : pour voir si il y a un gain de volume sur la base.
La documentation de FireBird sur GFix mentionne qu'il n'y a pas besoin de compresser.
La méthode de nettoyage consiste simplement à effectuer une sauvegarde de la base de données.
-
- Membre lOOyal
- Messages : 35
- Inscription : 28 mai 2019 08:53
Re: Interdire caractère dans champ texte
Oui, je surveille ce sujet aussi.Dude a écrit :Déjà expliqué ici : https://forum.openoffice.org/fr/forum/v ... =9&t=60451
Mais je ne vois pas comment sauvegarder une base intégrée.Dude a écrit :La méthode de nettoyage consiste simplement à effectuer une sauvegarde de la base de données.
LibreOffice 6.3.5 X64 - Windows 10