Ms Access [Résolu]

Messages postés
111
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
23 mars 2018
- - Dernière réponse : ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 11 févr. 2016 à 10:19
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

--
Afficher la suite 

1 réponse

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
215
0
Merci
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.
cs_colby
Messages postés
111
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
23 mars 2018
-
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
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
215 > cs_colby
Messages postés
111
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
23 mars 2018
-
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
Commenter la réponse de ucfoutu