[ACCESS] Effectuer un calcul dans un champ texte ???

Effectuer un calcul dans un champ texte ??? [ACCESS] - SQL/NoSQL - Programmation

Marsh Posté le 28-06-2002 à 15:04:48    

Salut !
 
je voudrais effectuer un calcul dans un champ texte pour ne pas avoir à me taper le calcul à la main puis le saisir dans mon champ...
 
je voudrais donc taper un truc du genre = 2555 + 366 et quand je fais entrer, bim ça me fait le calcul et ça me l'enregistre dans ma base...
 
la fonction Eval permet calculer la valeur d'une expression contenue dans une chaine... c'est une piste mais après comment je fais ?
 
pour ceux qui savent pas où qui n'ont rien compris à ce que je dis, ben bon week end quand même !  :)

Reply

Marsh Posté le 28-06-2002 à 15:04:48   

Reply

Marsh Posté le 28-06-2002 à 15:14:52    

salut tu ne pourrras pas ... il faut que tu convertisses ta chaine en numérique via une fonction en vb du genre  
Cint(tachaine)
Après tu pourras alors faire des calculs....
:jap:

Reply

Marsh Posté le 28-06-2002 à 15:16:37    

Ya une époque, j'ai fait un truc comme ça en Access,
en utilisant la calculette Windows  
et en lui injectant la chaine de caractères tapées dans
un champ texte  
Dim RetVal
' Exécute la calculatrice.
RetVal = Shell("C:\WINDOWS\CALC.EXE", 1)

Reply

Marsh Posté le 28-06-2002 à 15:31:47    

C'est faisable mais c'est vraiement tordu. Il faut passer par VB, mais j'imagine que tu as prévu le coup ?
 
En VB, donc, tu utilise instr pour localiser le "+" et tu prends tous les caracteres avant que tu stoques dans une variable et tous les caractéres aprés que tu stoque aussi dans une autre variable. Tu convertis au préalable ta chaine via Cint avant de stoquer. il ne te reste plus qu'à gérer l'évènement de la touche ENTRER .
 :hello:

Reply

Marsh Posté le 28-06-2002 à 16:00:35    

merci pour votre aide !
 
vttman2 -> j'avais pensé à ça mais le problème c'est que je ne fais pas à chaque fois des calculs (la plupart du temps j'ai directement mes valeurs) donc ce n'est pas nécessaire d'ouvrir la calculette pour taper une valeur.
 
kik -> en fait je ne vois pas trop comment faire car dès que je quitte le champ ou que je tape sur entrer, il me dit valeur incorrecte pour ce champ... avant même d'appeler ma fonction j'ai l'impression...
 

Reply

Marsh Posté le 28-06-2002 à 16:48:06    

grosset a écrit a écrit :

Salut !
 
je voudrais effectuer un calcul dans un champ texte pour ne pas avoir à me taper le calcul à la main puis le saisir dans mon champ...
 
je voudrais donc taper un truc du genre = 2555 + 366 et quand je fais entrer, bim ça me fait le calcul et ça me l'enregistre dans ma base...
 
la fonction Eval permet calculer la valeur d'une expression contenue dans une chaine... c'est une piste mais après comment je fais ?
 
pour ceux qui savent pas où qui n'ont rien compris à ce que je dis, ben bon week end quand même !  :)




 
Tu tapes tous tes 2 chiffres dans 2 champs et tu fais un UPDATE d'un troisieme champ. Tu drop ensuite les 2 colonnes.

Reply

Marsh Posté le 28-06-2002 à 16:52:55    

salut dariz et merci du coup de main !
 
je crois que la fonction Eval calcule directement la valeur d'une expression sous forme de chaine et renvoie un entier.
 
je fais appel à une macro sur l'événement sortie :
 
je fais un DéfinirValeur qui est sensé faire ça : [mon_champ] = Eval[mon_champ]
 
mais ça ne fonctionne pas, il me dit "valeur incorrecte pour ce champ"...

Reply

Marsh Posté le 28-06-2002 à 16:55:48    

salut Smaragdus !
 
je ne peu pas faire ça c'est dans un tableau avec plein de colonne et ça surchargerait trop le truc
 
en plus, le mec doit pouvoir faire plusiseurs sortes d'opérations avec plusieurs opérandes
 
merci

Reply

Marsh Posté le 28-06-2002 à 17:01:34    

j'ai encadré mon DéfinirValeur par 2 boites de dialogues et le message d'erreur "valeur incorrecte pour ce champ" s'affiche avant l'ouverture de la premiere... il vérifie le type de donnée saisie avant de poursuivre... et forcément comme c'est du texte au lieu d'une valeur numérique ça lui plait pas

Reply

Marsh Posté le 29-06-2002 à 11:50:05    

Ben moi je ferais simplement ça :
 
tu as une boite de saisie qui s'appelle texte0
 
tu assignes un macro qui s'exécute quand on quitte le champs :
 
Private Sub Texte0_Exit(Cancel As Integer)
Me.Texte0 = Eval(Me.Texte0)
End Sub
 
comme ça ta formule (1+1) est remplacée par 2.

Reply

Marsh Posté le 29-06-2002 à 11:50:05   

Reply

Marsh Posté le 29-06-2002 à 12:21:06    

j'ai touvé une solution :
 
je me crée un champ texte par dessus le champ numérique, je fais le calcul (avec eval) et l'affichage du résultat dans ce champ texte (en même temps je met à jour le champ numérique).
 
Mais le problème est que quand je met à jour (quand je dis que le champs numérique prend pour valeur celle du champ texte que je converti), il modifie toute la colonne ! et non pas juste l'enregistrement que je veux...
 
mais bon c'est pas méchant faut qe je vois...
 
merci de votre aide !!!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed