Ms Access

Résolu
cs_colby Messages postés 126 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 14 novembre 2022 - 5 janv. 2016 à 07:09
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

--

1 réponse

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 5/01/2016 à 08:21
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.
0
cs_colby Messages postés 126 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 14 novembre 2022
Modifié par cs_colby le 10/02/2016 à 11:58
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211 > cs_colby Messages postés 126 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 14 novembre 2022
Modifié par ucfoutu le 11/02/2016 à 10:29
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
0
Rejoignez-nous