Ms Access [Résolu]

cs_colby 111 Messages postés mardi 10 mai 2005Date d'inscription 23 mars 2018 Dernière intervention - 5 janv. 2016 à 07:09 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention
- 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 

Votre réponse

3 réponses

ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 5/01/2016 à 08:21
0
Utile
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 111 Messages postés mardi 10 mai 2005Date d'inscription 23 mars 2018 Dernière intervention - 10 févr. 2016 à 11:52
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 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention > cs_colby 111 Messages postés mardi 10 mai 2005Date d'inscription 23 mars 2018 Dernière intervention - 11 févr. 2016 à 10:19
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.