OVH Cloud OVH Cloud

Existence dans une table

2 réponses
Avatar
Erwan
Bonjour

Quel est le moyen le plus efficace de tester en VBA s'il=20
existe un enregitrement dont le champs1 =E0 la valeur1 ET=20
le champs2 =E0 la valeur2?

(Une fonction qui recrache simplement true or false me=20
suffit largement)

Merci d'avance

2 réponses

Avatar
Gafish
Bonjour,

Si tu pars dans l'optique d'une fonction qui renvoit true ou false, le plus
simple c'est peut etre de passer en paramètre de ta fonction les deux noms
de champs et les deux valeurs, tu fais un recordset basé sur une requête
avec ces quatre paramètres, et tu regardes si le recordcount est supérieur à
0.
Si oui tu renvois true.
Par exemple (non testé) :

function TstPresence (Champ1 as string, Val1 as string, Champ2 as string,
Val2 as string) as boolean

dim dbscurrent as database
set dbscurrent = opendatabase(currentdb.name)
dim rstTst as recordset
set rstTst = dbscurrent.openrecordset("SELECT * FROM [TaTable] WHERE " &
Champ1 & "=" & Val1 & " AND " & Champ2 & "=" & Val2 & ";")
If rstTst.recordcount > 0 then
TstPresence = True
Else
TstPresence = False
End If

set rstTst = nothing
set dbscurrent = nothing

end function

Pense juste à mettre des ' si tes champs sont de type texte.

Arnaud

"Erwan" a écrit dans le message de
news:3ded01c49fec$79341090$
Bonjour

Quel est le moyen le plus efficace de tester en VBA s'il
existe un enregitrement dont le champs1 à la valeur1 ET
le champs2 à la valeur2?

(Une fonction qui recrache simplement true or false me
suffit largement)

Merci d'avance
Avatar
Gafish
Les apostrophes c'est ici :

WHERE " & Champ1 & "= ' " & Val1 & " ' AND " & Champ2 & "= ' " & Val2 & " '
; "

j'ai mis des espaces expres pour des questions de lisibilité, mais il faut
les enlever.

Arnaud

a écrit dans le message de
news:49a501c49ff0$a5902030$
Merci ! Ou cça les apostrophes???
-----Message d'origine-----
Bonjour,

Si tu pars dans l'optique d'une fonction qui renvoit
true ou false, le plus

simple c'est peut etre de passer en paramètre de ta
fonction les deux noms

de champs et les deux valeurs, tu fais un recordset basé
sur une requête

avec ces quatre paramètres, et tu regardes si le
recordcount est supérieur à

0.
Si oui tu renvois true.
Par exemple (non testé) :

function TstPresence (Champ1 as string, Val1 as string,
Champ2 as string,

Val2 as string) as boolean

dim dbscurrent as database
set dbscurrent = opendatabase(currentdb.name)
dim rstTst as recordset
set rstTst = dbscurrent.openrecordset("SELECT * FROM
[TaTable] WHERE " &

Champ1 & "=" & Val1 & " AND " & Champ2 & "=" & Val2
& ";")

If rstTst.recordcount > 0 then
TstPresence = True
Else
TstPresence = False
End If

set rstTst = nothing
set dbscurrent = nothing

end function

Pense juste à mettre des ' si tes champs sont de type
texte.


Arnaud

"Erwan" a écrit
dans le message de

news:3ded01c49fec$79341090$
Bonjour

Quel est le moyen le plus efficace de tester en VBA s'il
existe un enregitrement dont le champs1 à la valeur1 ET
le champs2 à la valeur2?

(Une fonction qui recrache simplement true or false me
suffit largement)

Merci d'avance


.