OVH Cloud OVH Cloud

erreur de programmation

5 réponses
Avatar
Cyrille DUBOS
Bonjour,

J'essaie de programmer un test de validation pour ma base,=20
mais comme je suis d=E9butant, j'ai un peu de mal.

Sur avant MAJ, j'ai =E9crit

dim intA, intB as integer

intA=3D0
intB=3Dform![frmContact].[n=B0societe]=20
'la variable intB prend la valeur en cour=20
de n=B0Societe du formulaire Contact

intA=3DDSum("[ContactHabituelOui]";"[tblContact]";"[n=B0
Soci=E9t=E9]=3DintB")
'la variable intA est la somme du champ=20
[ContactHabituelOui] de la table [tblContact] pour le=20
num=E9ro de soci=E9t=E9 contenu dans intB

if intA>1=20
then MsgBox "erreur"=20
form![frmContact].[ContactHabituelOui]=3D0=20
end if =20

'test de la valeur intA et annulation=20
de de la donn=E9e en cas d'erreur


Pourquoi =E7a ne marche pas ? Quelqu'un peut il me proposer=20
une solution ?

Par avance merci.

Cyrille

5 réponses

Avatar
Raymond [mvp]
Bonsoir.

si intB est numérique:
intA=DSum("[ContactHabituelOui]";"[tblContact]";"[n°
Société]= " & intB)
si intB est alpha:
intA=DSum("[ContactHabituelOui]";"[tblContact]";"[n°
Société]= '" & intB & "'")

en cas d'erreur il faut charger la valeur de cancel à True pour annuler
l'événement mise à jour.
il y a possibilité de simplifier ta fonction si on a les renseignements
complémentaires:
l'événement avant MAJ est-il sur un contrôle ou sur le formulaire ?
frmContact est-il le formulaire actif, celui dans lequel se trouve ta
fonction ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"Cyrille DUBOS" a écrit dans le
message de news:019c01c3bcfb$94af5e80$
Bonjour,

J'essaie de programmer un test de validation pour ma base,
mais comme je suis débutant, j'ai un peu de mal.

Sur avant MAJ, j'ai écrit

dim intA, intB as integer

intA=0
intB=form![frmContact].[n°societe]
'la variable intB prend la valeur en cour
de n°Societe du formulaire Contact

intA=DSum("[ContactHabituelOui]";"[tblContact]";"[n°
Société]=intB")
'la variable intA est la somme du champ
[ContactHabituelOui] de la table [tblContact] pour le
numéro de société contenu dans intB

if intA>1
then MsgBox "erreur"
form![frmContact].[ContactHabituelOui]=0
end if

'test de la valeur intA et annulation
de de la donnée en cas d'erreur


Pourquoi ça ne marche pas ? Quelqu'un peut il me proposer
une solution ?

Par avance merci.

Cyrille
Avatar
Anor
Bonjour,
il faut "sortir" la variable IntB de la chaîne pour en extraire sa valeur
et mettre des virgules puisque tu es dans la fenêtre visual basic editor

DSum("[ContactHabituelOui]","[tblContact]","[n° Société]=" & intB)

--
à+
Arnaud
--------------------------------------------------
*Avant toute chose* : http://users.skynet.be/mpfa/
Access Memorandum - http://memoaccess.free.fr
/Réponses souhaitées sur ce forum, merci/
--------------------------------------------------
Cyrille DUBOS :
| Bonjour,
|
| J'essaie de programmer un test de validation pour ma base,
| mais comme je suis débutant, j'ai un peu de mal.
|
| Sur avant MAJ, j'ai écrit
|
| dim intA, intB as integer
|
| intA=0
| intB=form![frmContact].[n°societe]
| 'la variable intB prend la valeur en cour
| de n°Societe du formulaire Contact
|
| intA=DSum("[ContactHabituelOui]";"[tblContact]";"[n°
| Société]=intB")
| 'la variable intA est la somme du champ
| [ContactHabituelOui] de la table [tblContact] pour le
| numéro de société contenu dans intB
|
| if intA>1
| then MsgBox "erreur"
| form![frmContact].[ContactHabituelOui]=0
| end if
|
| 'test de la valeur intA et annulation
| de de la donnée en cas d'erreur
|
|
| Pourquoi ça ne marche pas ? Quelqu'un peut il me proposer
| une solution ?
|
| Par avance merci.
|
| Cyrille
Avatar
Cyrille
Bonjour,

Merci de vos conseils.
Voici les renseignements complémentaires, l'évènement
avant MAJ est sur un contôle du formulaire, et frmContact
est le sousformulaire actif.

Voilà, je suis curieux de voir comment faire plus simple

Cyrille


-----Message d'origine-----
Bonsoir.

si intB est numérique:
intA=DSum("[ContactHabituelOui]";"[tblContact]";"[n°
Société]= " & intB)
si intB est alpha:
intA=DSum("[ContactHabituelOui]";"[tblContact]";"[n°
Société]= '" & intB & "'")

en cas d'erreur il faut charger la valeur de cancel à
True pour annuler

l'événement mise à jour.
il y a possibilité de simplifier ta fonction si on a les
renseignements

complémentaires:
l'événement avant MAJ est-il sur un contrôle ou sur le
formulaire ?

frmContact est-il le formulaire actif, celui dans lequel
se trouve ta

fonction ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"Cyrille DUBOS" a
écrit dans le

message de news:019c01c3bcfb$94af5e80$
Bonjour,

J'essaie de programmer un test de validation pour ma base,
mais comme je suis débutant, j'ai un peu de mal.

Sur avant MAJ, j'ai écrit

dim intA, intB as integer

intA=0
intB=form![frmContact].[n°societe]
'la variable intB prend la valeur en cour
de n°Societe du formulaire Contact

intA=DSum("[ContactHabituelOui]";"[tblContact]";"[n°
Société]=intB")
'la variable intA est la somme du champ
[ContactHabituelOui] de la table [tblContact] pour le
numéro de société contenu dans intB

if intA>1
then MsgBox "erreur"
form![frmContact].[ContactHabituelOui]=0
end if

'test de la valeur intA et annulation
de de la donnée en cas d'erreur


Pourquoi ça ne marche pas ? Quelqu'un peut il me proposer
une solution ?

Par avance merci.

Cyrille


.



Avatar
Raymond [mvp]
Tu peux faire ainsi:

Private Sub ContactHabituelOui_BeforeUpdate(Cancel As Integer)
If DSum("[ContactHabituelOui]", "[tblContact]", "[n°Société]= '" &
Me.[n°Societe] & "'" ) > 1 Then
MsgBox "erreur"
Me.[ContactHabituelOui] = 0
Cancel = True
End If
End Sub

si N°société est numérique, supprimer les '


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"Cyrille" a écrit dans le message de
news:f00701c3bd77$4bc6e630$
Bonjour,

Merci de vos conseils.
Voici les renseignements complémentaires, l'évènement
avant MAJ est sur un contôle du formulaire, et frmContact
est le sousformulaire actif.

Voilà, je suis curieux de voir comment faire plus simple

Cyrille
Avatar
Charles ERNST
Si [ContactHabituelOui] est un champ de type oui/non, alors
DSum("[ContactHabituelOui]";"[tblContact]";"[n°
Société]=intB") aura une valeur négative et il faudra faire le test : if
intA > -1


"Cyrille DUBOS" a écrit dans le
message de news:019c01c3bcfb$94af5e80$
Bonjour,

J'essaie de programmer un test de validation pour ma base,
mais comme je suis débutant, j'ai un peu de mal.

Sur avant MAJ, j'ai écrit

dim intA, intB as integer

intA=0
intB=form![frmContact].[n°societe]
'la variable intB prend la valeur en cour
de n°Societe du formulaire Contact

intA=DSum("[ContactHabituelOui]";"[tblContact]";"[n°
Société]=intB")
'la variable intA est la somme du champ
[ContactHabituelOui] de la table [tblContact] pour le
numéro de société contenu dans intB

if intA>1
then MsgBox "erreur"
form![frmContact].[ContactHabituelOui]=0
end if

'test de la valeur intA et annulation
de de la donnée en cas d'erreur


Pourquoi ça ne marche pas ? Quelqu'un peut il me proposer
une solution ?

Par avance merci.

Cyrille