Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Changement de type de champ Access en DAO !

5 réponses
Avatar
Via
Bonsoir à tous.

Je cherche à passer le type d'un champ sous Access de "réel simple" à
"réel double" à l'aide de ce bout de code :

Set NewTable = dBaseDeDonnées.TableDefs("CompositionEssais")
With NewTable
Set Fld = .CreateField("Pourcentage", dbDouble)
.Fields.Append Fld
End With

Or ceci me renvoie une erreur 3191 "Impossible de définir un champ plus
d'une fois", ce qui me paraît logique vu qu'il existe déjà. Mais comment
change-t-on cette propriété ?
Merci d'avance,

Via :)

5 réponses

Avatar
Via
Bonjour à tous.

Après une intense réflexion sur ce problème dans mon lit douillet où je me
retournais sans trouver le sommeil, tarabusté par cette question
existentielle... euh... crédible ?
Bref, voici :

Set NewTable = dBaseDeDonnées.TableDefs("CompositionEssais")
With NewTable
Set Fld = .Fields("Pourcentage")
Fld.Properties("Type").Value = dbDouble
End With

Seulement le petit détail qui change tout est que la propriété Type est en
lecture seule. Faut-il donc que je copie ce champ dans un champ temporaire,
le détruise et le recrée ?
Merci d'avance,

Via :)



"Via" a écrit dans le message de
news:uUMVo1$
Bonsoir à tous.

Je cherche à passer le type d'un champ sous Access de "réel simple" à
"réel double" à l'aide de ce bout de code :

Set NewTable = dBaseDeDonnées.TableDefs("CompositionEssais")
With NewTable
Set Fld = .CreateField("Pourcentage", dbDouble)
.Fields.Append Fld
End With

Or ceci me renvoie une erreur 3191 "Impossible de définir un champ plus
d'une fois", ce qui me paraît logique vu qu'il existe déjà. Mais comment
change-t-on cette propriété ?
Merci d'avance,

Via :)




Avatar
Pascal B.
Salut via,

Oui c'est la seul manière de modifier le type d'un champ, càd:

Créer un champ temporaire
Copier les donnés du champ à modifier vers le champ temporaire
Détruire le champ
Recréer le champ avec le nouveau type
Recopier les données du champ temporaire vers le nouveau champ
Détruire le champ temporaire

Amicalement
Pascal

"Via" a écrit dans le message de news:ei$
| Bonjour à tous.
|
| Après une intense réflexion sur ce problème dans mon lit douillet où je me
| retournais sans trouver le sommeil, tarabusté par cette question
| existentielle... euh... crédible ?
| Bref, voici :
|
| Set NewTable = dBaseDeDonnées.TableDefs("CompositionEssais")
| With NewTable
| Set Fld = .Fields("Pourcentage")
| Fld.Properties("Type").Value = dbDouble
| End With
|
| Seulement le petit détail qui change tout est que la propriété Type est en
| lecture seule. Faut-il donc que je copie ce champ dans un champ temporaire,
| le détruise et le recrée ?
| Merci d'avance,
|
| Via :)
|
|
|
| "Via" a écrit dans le message de
| news:uUMVo1$
| > Bonsoir à tous.
| >
| > Je cherche à passer le type d'un champ sous Access de "réel simple" à
| > "réel double" à l'aide de ce bout de code :
| >
| > Set NewTable = dBaseDeDonnées.TableDefs("CompositionEssais")
| > With NewTable
| > Set Fld = .CreateField("Pourcentage", dbDouble)
| > .Fields.Append Fld
| > End With
| >
| > Or ceci me renvoie une erreur 3191 "Impossible de définir un champ plus
| > d'une fois", ce qui me paraît logique vu qu'il existe déjà. Mais comment
| > change-t-on cette propriété ?
| > Merci d'avance,
| >
| > Via :)
| >
| >
|
|
Avatar
Via
Merci Pascal. Je suis en train de faire ça, mais j'ai encore un petit
problème. Dans Access, j'ai limité le champ à 6 décimales, et je n'arrive
pas à reproduire cela par VB :

With NewTable
Set Fld = .CreateField("Pourcentage2", dbDouble)
Fld.Size = 4
Fld.OrdinalPosition = 5
Fld.DefaultValue = 0
.Fields.Append Fld
End With

Une fois le Fields.Append exécuté, la propriété Size se met à 8, ce qui a
l'air de correspondre dans Access à Auto. Or le champ Pourcentage a son Size
à 4 !! Ce nombre de décimales ne correspond donc pas à la propriété Size.
Comment puis-je le modifier ?
Merci d'avance pour vos réponses !

Via :)



"Pascal B." <pascbr{_AROBASE_}hotmail{_POINT_}com> a écrit dans le message
de news:
Salut via,

Oui c'est la seul manière de modifier le type d'un champ, càd:

Créer un champ temporaire
Copier les donnés du champ à modifier vers le champ temporaire
Détruire le champ
Recréer le champ avec le nouveau type
Recopier les données du champ temporaire vers le nouveau champ
Détruire le champ temporaire

Amicalement
Pascal

"Via" a écrit dans le message de


news:ei$
| Bonjour à tous.
|
| Après une intense réflexion sur ce problème dans mon lit douillet où


je me
| retournais sans trouver le sommeil, tarabusté par cette question
| existentielle... euh... crédible ?
| Bref, voici :
|
| Set NewTable = dBaseDeDonnées.TableDefs("CompositionEssais")
| With NewTable
| Set Fld = .Fields("Pourcentage")
| Fld.Properties("Type").Value = dbDouble
| End With
|
| Seulement le petit détail qui change tout est que la propriété Type


est en
| lecture seule. Faut-il donc que je copie ce champ dans un champ


temporaire,
| le détruise et le recrée ?
| Merci d'avance,
|
| Via :)
|
|
|
| "Via" a écrit dans le message de
| news:uUMVo1$
| > Bonsoir à tous.
| >
| > Je cherche à passer le type d'un champ sous Access de "réel simple"


à
| > "réel double" à l'aide de ce bout de code :
| >
| > Set NewTable = dBaseDeDonnées.TableDefs("CompositionEssais")
| > With NewTable
| > Set Fld = .CreateField("Pourcentage", dbDouble)
| > .Fields.Append Fld
| > End With
| >
| > Or ceci me renvoie une erreur 3191 "Impossible de définir un champ


plus
| > d'une fois", ce qui me paraît logique vu qu'il existe déjà. Mais


comment
| > change-t-on cette propriété ?
| > Merci d'avance,
| >
| > Via :)
| >
| >
|
|




Avatar
Pascal B.
Re-Bonjour via,

La proprité Size ne détermine pas le nombre de décimal.
Il sert à définir le nombre de caractères dans un champs texte et est ignoré pour les champs de type numérique.
Que je sache, il n'y a pas de proprités, en DAO, qui définissent le nombre de decimal.
C'est propre à Accèss pour l'affichage des nombres.
Tu devras toi-même définir dans ton programme le format lors de l'affichage. Exemple:

Text1 = Format(MaTable("MonChamp"), "# ##0.00")

Pascal

PS: La propriété Size indique le nombre d'octets qu'occupe le champs dans la base de données:

Size = 1 pour un dbByte ou dbBoolean
Size = 2 pour un dbInteger
Size = 4 pour un dbLong ou dbSingle
Size = 8 pour un dbDouble
Size = 1 à 255 pour un dbText
....


"Via" a écrit dans le message de news:
| Merci Pascal. Je suis en train de faire ça, mais j'ai encore un petit
| problème. Dans Access, j'ai limité le champ à 6 décimales, et je n'arrive
| pas à reproduire cela par VB :
|
| With NewTable
| Set Fld = .CreateField("Pourcentage2", dbDouble)
| Fld.Size = 4
| Fld.OrdinalPosition = 5
| Fld.DefaultValue = 0
| .Fields.Append Fld
| End With
|
| Une fois le Fields.Append exécuté, la propriété Size se met à 8, ce qui a
| l'air de correspondre dans Access à Auto. Or le champ Pourcentage a son Size
| à 4 !! Ce nombre de décimales ne correspond donc pas à la propriété Size.
| Comment puis-je le modifier ?
| Merci d'avance pour vos réponses !
|
| Via :)
|
|
|
| "Pascal B." <pascbr{_AROBASE_}hotmail{_POINT_}com> a écrit dans le message
| de news:
| > Salut via,
| >
| > Oui c'est la seul manière de modifier le type d'un champ, càd:
| >
| > Créer un champ temporaire
| > Copier les donnés du champ à modifier vers le champ temporaire
| > Détruire le champ
| > Recréer le champ avec le nouveau type
| > Recopier les données du champ temporaire vers le nouveau champ
| > Détruire le champ temporaire
| >
| > Amicalement
| > Pascal
| >
| > "Via" a écrit dans le message de
| news:ei$
| > | Bonjour à tous.
| > |
| > | Après une intense réflexion sur ce problème dans mon lit douillet où
| je me
| > | retournais sans trouver le sommeil, tarabusté par cette question
| > | existentielle... euh... crédible ?
| > | Bref, voici :
| > |
| > | Set NewTable = dBaseDeDonnées.TableDefs("CompositionEssais")
| > | With NewTable
| > | Set Fld = .Fields("Pourcentage")
| > | Fld.Properties("Type").Value = dbDouble
| > | End With
| > |
| > | Seulement le petit détail qui change tout est que la propriété Type
| est en
| > | lecture seule. Faut-il donc que je copie ce champ dans un champ
| temporaire,
| > | le détruise et le recrée ?
| > | Merci d'avance,
| > |
| > | Via :)
| > |
| > |
| > |
| > | "Via" a écrit dans le message de
| > | news:uUMVo1$
| > | > Bonsoir à tous.
| > | >
| > | > Je cherche à passer le type d'un champ sous Access de "réel simple"
| à
| > | > "réel double" à l'aide de ce bout de code :
| > | >
| > | > Set NewTable = dBaseDeDonnées.TableDefs("CompositionEssais")
| > | > With NewTable
| > | > Set Fld = .CreateField("Pourcentage", dbDouble)
| > | > .Fields.Append Fld
| > | > End With
| > | >
| > | > Or ceci me renvoie une erreur 3191 "Impossible de définir un champ
| plus
| > | > d'une fois", ce qui me paraît logique vu qu'il existe déjà. Mais
| comment
| > | > change-t-on cette propriété ?
| > | > Merci d'avance,
| > | >
| > | > Via :)
| > | >
| > | >
| > |
| > |
| >
| >
|
|
Avatar
Via
Re merci Pascal ! Aucun problème pour le Format(), il suffit effectivement
de faire ses enregistrements et ses affichages avec un formatage à 6
décimales et hop ça tourne.
Ceci dit, pour que tout soit carré, si quelqu'un a l'info pour modifier
cette propriété (nombre de décimales pour un numérique dans Access), ça
m'intéresse, alors n'hésitez pas !!!

Via :)


"Pascal B." <pascbr{_AROBASE_}hotmail{_POINT_}com> a écrit dans le message
de news:
Re-Bonjour via,

La proprité Size ne détermine pas le nombre de décimal.
Il sert à définir le nombre de caractères dans un champs texte et est


ignoré pour les champs de type numérique.
Que je sache, il n'y a pas de proprités, en DAO, qui définissent le nombre


de decimal.
C'est propre à Accèss pour l'affichage des nombres.
Tu devras toi-même définir dans ton programme le format lors de


l'affichage. Exemple:

Text1 = Format(MaTable("MonChamp"), "# ##0.00")

Pascal

PS: La propriété Size indique le nombre d'octets qu'occupe le champs dans


la base de données:

Size = 1 pour un dbByte ou dbBoolean
Size = 2 pour un dbInteger
Size = 4 pour un dbLong ou dbSingle
Size = 8 pour un dbDouble
Size = 1 à 255 pour un dbText
....


"Via" a écrit dans le message de


news:
| Merci Pascal. Je suis en train de faire ça, mais j'ai encore un petit
| problème. Dans Access, j'ai limité le champ à 6 décimales, et je


n'arrive
| pas à reproduire cela par VB :
|
| With NewTable
| Set Fld = .CreateField("Pourcentage2", dbDouble)
| Fld.Size = 4
| Fld.OrdinalPosition = 5
| Fld.DefaultValue = 0
| .Fields.Append Fld
| End With
|
| Une fois le Fields.Append exécuté, la propriété Size se met à 8, ce qui


a
| l'air de correspondre dans Access à Auto. Or le champ Pourcentage a son


Size
| à 4 !! Ce nombre de décimales ne correspond donc pas à la propriété


Size.
| Comment puis-je le modifier ?
| Merci d'avance pour vos réponses !
|
| Via :)
|
|
|
| "Pascal B." <pascbr{_AROBASE_}hotmail{_POINT_}com> a écrit dans le


message
| de news:
| > Salut via,
| >
| > Oui c'est la seul manière de modifier le type d'un champ, càd:
| >
| > Créer un champ temporaire
| > Copier les donnés du champ à modifier vers le champ temporaire
| > Détruire le champ
| > Recréer le champ avec le nouveau type
| > Recopier les données du champ temporaire vers le nouveau champ
| > Détruire le champ temporaire
| >
| > Amicalement
| > Pascal
| >
| > "Via" a écrit dans le message de
| news:ei$
| > | Bonjour à tous.
| > |
| > | Après une intense réflexion sur ce problème dans mon lit douillet



| je me
| > | retournais sans trouver le sommeil, tarabusté par cette question
| > | existentielle... euh... crédible ?
| > | Bref, voici :
| > |
| > | Set NewTable = dBaseDeDonnées.TableDefs("CompositionEssais")
| > | With NewTable
| > | Set Fld = .Fields("Pourcentage")
| > | Fld.Properties("Type").Value = dbDouble
| > | End With
| > |
| > | Seulement le petit détail qui change tout est que la propriété


Type
| est en
| > | lecture seule. Faut-il donc que je copie ce champ dans un champ
| temporaire,
| > | le détruise et le recrée ?
| > | Merci d'avance,
| > |
| > | Via :)
| > |
| > |
| > |
| > | "Via" a écrit dans le message de
| > | news:uUMVo1$
| > | > Bonsoir à tous.
| > | >
| > | > Je cherche à passer le type d'un champ sous Access de "réel


simple"
| à
| > | > "réel double" à l'aide de ce bout de code :
| > | >
| > | > Set NewTable dBaseDeDonnées.TableDefs("CompositionEssais")
| > | > With NewTable
| > | > Set Fld = .CreateField("Pourcentage", dbDouble)
| > | > .Fields.Append Fld
| > | > End With
| > | >
| > | > Or ceci me renvoie une erreur 3191 "Impossible de définir un


champ
| plus
| > | > d'une fois", ce qui me paraît logique vu qu'il existe déjà. Mais
| comment
| > | > change-t-on cette propriété ?
| > | > Merci d'avance,
| > | >
| > | > Via :)
| > | >
| > | >
| > |
| > |
| >
| >
|
|