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

forcer un type de champ à la création de la table

10 réponses
Avatar
le Nordiste
Bonjour,

J'ai une requ=EAte cr=E9ation de table qui va bien, merci=85
Je la lanc epar un bout de code VB.
je constate qu'un champ num=E9rique
s'affiche =E0 la main en 294300003474 et apr=E9s un lancement par VB
en2,94300003474E+11 .
Comment faire pour forcer le type de donn=E9e


Merci pour votre collaboration,

le Nordiste

10 réponses

Avatar
Dom74
Bonsoir le Nordiste,

Ton champ, ne serait-til pas un numéro de série d'une machine à exporter
dans un inventaire de parc sous Access ... tenue en amont sur un client
commençant par Per.... ???

Si oui, j'ai le même problème et je n'ai pas trouvé de solution
satisfaisante...sauf à faire un copier-coller du dit champ de la base
distante vers la base locale.

Amités.

Dom74


"le Nordiste" a écrit dans le message de news:

Bonjour,

J'ai une requête création de table qui va bien, merci…
Je la lanc epar un bout de code VB.
je constate qu'un champ numérique
s'affiche à la main en 294300003474 et aprés un lancement par VB
en2,94300003474E+11 .
Comment faire pour forcer le type de donnée


Merci pour votre collaboration,

le Nordiste
Avatar
le Nordiste
Bonjour Dom74,

Tout faux c'est bétement un numéro de facture, mais peu importe, le Pb
pour moi reste entier.
La voie que tu donnes va peut étre m'éclairer.


Merci,
Avatar
Blaise Cacramp
Selon : Bonjour ou bonsoir

Choisir un type numérique qui peut contenir autant de chiffres, utiliser un
format "000000000000000"
voir s'il peut être subdivisé (année, mois, série)


Cdt, Blaise
---- ---- ----


"le Nordiste" a écrit dans le message de news:

Bonjour,

J'ai une requête création de table qui va bien, merci…
Je la lanc epar un bout de code VB.
je constate qu'un champ numérique
s'affiche à la main en 294300003474 et aprés un lancement par VB
en2,94300003474E+11 .
Comment faire pour forcer le type de donnée


Merci pour votre collaboration,

le Nordiste
Avatar
le Nordiste
> Choisir un type numérique qui peut contenir autant de chiffres, utilise r un
format "000000000000000"
voir s'il peut être subdivisé (année, mois, série)



C'est une série numérique croissante, rien à en extraire.

Comment peut on faire ça au sein de la requête CREATE ?

Plus généralement comment donner un type à un champ lors de la requ ête
CREATE

Merci pour votre aide

le Nordiste
Avatar
3stone
Salut,

le Nordiste wrote:
Choisir un type numérique qui peut contenir autant de chiffres,
utiliser un format "000000000000000"
voir s'il peut être subdivisé (année, mois, série)



C'est une série numérique croissante, rien à en extraire.

Comment peut on faire ça au sein de la requête CREATE ?

Plus généralement comment donner un type à un champ lors de la requête
CREATE



Le SQL ne propose pas les possibilités du VBA...
http://www.3stone.be/access/articles.php?lng=fr&pg&

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
le Nordiste
> > Plus généralement comment donner un type à un champ lors de la re quête
> CREATE




Désolé c'est pas une CREATE mais directement ceci :
lancé dans VB car il ty a des parametres :

'**********************************
'supprimer la table FaCourante précédente
On Error Resume Next 'Si il n'y a pas d'ancienne
table temporaire
CurrentDb.TableDefs.Delete (strTableINTO) 'Suppression de
l'ancienne table
On Error GoTo Erreur 'Reprendre le traitement normal
des erreurs


'INITIALISATION DE LA REQUÊTE
strSQL = "SELECT " _
& "UneTable.Champ4 AS PRESTATION, " _
& "UneTable.Champ6 AS DEBUT, " _
& "UneTable.Champ7 AS FIN, " _
& "UneTable.Champ10 AS MONTANT, " _
& "INTO [" & strTableINTO & "]" _
& "FROM [" & strTableFROM & "] AS UneTable " _
& "WHERE (((UneTable.Champ4)=""crit1"")" _
& "And ((UneTable.Champ4) Like ""*MES*""));"
**********************************

Je supprime la table en premier pour n'avoir que les dernieres
valeurs.

peut être suivant ton exemple faut il faire un CREATE entre la
suppr'ssion et la reprise des nouvelles données.
À moins qu'on ne puisse faire tout en un coup :

eg : & "UneTable.Champ10 AS MONTANT CURRENCY, " _

Merci pour tes conseils avisés,
J'ai fait un saut sur ton site : pas mal comme mine de renseignements.

le Nordiste
Avatar
3stone
Salut,

le Nordiste wrote:
[...]

Je supprime la table en premier pour n'avoir que les dernieres
valeurs.




C'est une mauvaise idée de supprimer une table pour la recréer.
Il faut vider une table, ainsi elle garde toutes ses propriétés.

Les bases de données qui créent des tables à tour de bras
n'ont généralement pas bénéficié d'une préparation suffisante.

Les cas de création de table doivent rester exeptionnels.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
le Nordiste
De toutes façon ça marche pas parce que ma 2éme requete trouve devant
elle une table du même nom donc erreur.

Je suis ton conseil de créer la table avant toute chose,
puis je la vide ( comment faire d'ailleurs?)

et je refais ma requète pour remplir ma table
Avatar
le Nordiste
> et je refais ma requète pour remplir ma table



voila qui est fait :

Un premier code pour initialiser la table : SQL = CREATE … lancé un e
seule fois dans la vie de la base.
Un second code qui purge la table puis insére les données du mois =
SQl : INSERT INTO…
autant de fois qu'il y a de documents sources.

PAR CONTRE un dernier probléme :
J'extrait du nom du document source le NumCpte qui se présente sous la
forme C-CCCCC
C étant des chiffres , extrait par un MID$ ou un MID, c'est le même
résultat sous VB.

Dans ma table je ne trouve que _CCCc le premier chiffre est perdu
et celui à droite est modifié.
Pourqoui et comment corriger ça ?

Merci
Avatar
le Nordiste
Pb résolu : lorsqiue j'extrait strCpteFa du nom de la table, je
rajoute des guillemets de part et d'autre

strCpteFa = """" & Mid$(strTableFROM, 27, 7) & """"


Je passe à l'efficace en abandonnat la pureté et la beauté. MAIS ÇA
MARCHE


Une autre solution à proposer ?


Merci du sacré coup de main 3stone.