Ms Access [Résolu]

Signaler
Messages postés
124
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
29 mai 2020
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour,
J'ai utilisé un code de cs_Le Pivert pour créer une base access. Mais je voudrais appliquer un format au champ "ID" pour avoir une série au format "0000001" ainsi de suite. La création de la base étant faite par code comment y ajouter par code le format du champ?
Merci d'avance

--

1 réponse

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
230
Bonjour,
La création dynamique d'une table Access ne permet à ma connaissance pas de définir un format de champ. Elle ne permet de définir que les éléments suivants :
- table (le nom à lui donner)
- champ (noms du champ)
- type à donner au champ
- longueur du champ en caractères (pour les champs texte)
- index du champ (Clause CONSTRAINT)
- indexmultichamp (Clause CONSTRAINT)
Rappelons que de toutes manières : le format d'un champ (que l'on peut définir manuellement dans Access), n'affecte en rien l'enregistrement de la donnée du champ. Il n'est utilisé que lors de l'affichage d'un jeu d'enregistrement résultant d'une requête.
Rien ne t'empêche donc d'extraire la donnée, puis de l'afficher toi-même au format que tu souhaites.
Pour info, sous VB6 :
  toto = "12"
MsgBox Format(toto, "0#####")

affichera "000012"
M'étonnerait que l'équivalent VB.Net n'existe pas
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Messages postés
124
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
29 mai 2020

merci ucfoutu
Tout en cherchant j'ai composé deux petites fonctions et cela marche. Si correction il y a n'hesite pas. merci encore

Function ZeroAgaucheSerie(ByVal Numero As String) As String
Dim I, Vide As Integer : Dim Remplir As String = "" : Vide = Len(Trim(Numero))
If Vide < 10 Then
For I = 1 To 10 - Vide
Remplir = "0" & Remplir
Next I
End If
ZeroAgaucheSerie = Remplir & Numero
End Function

Function RemplcerZeroSerie(ByVal Numero As String) As String
Dim I, Vide As Integer : Dim Remplir As String = "" : Vide = Len(Trim(Numero))
If Vide < 10 Then
For I = 1 To 10 - Vide
Remplir = "" & Remplir
Next I
End If
RemplcerZeroSerie = Remplir & Numero
End Function

Merci
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
230 >
Messages postés
124
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
29 mai 2020

Que veux-tu que je te dise ?
J'en reste tout simplement baba !
Qu'est donc une telle plaisanterie qu'effectue (dans ta 2ème fonction) :
If Vide < 10 Then
For I = 1 To 10 - Vide
Remplir = "" & Remplir
Next I
End If

Qui fait que remplir, vide au départ, est toujours vide in fine ....
A tout hasard (car je devine) "" n'est pas " "

PS : ce ne sont pourtant pas les fonction de VB qui manquent pour formater directement une chaîne de caractères, sans boucle !

Ouvrir MSDN (sur ta machine) et y lire ce que je trouve sur le Net (je n'ai pas MSDN de VB.Net sur ma machine) :
https://msdn.microsoft.com/fr-fr/library/system.string.format%28v=vs.110%29.aspx