OVH Cloud OVH Cloud

Resultat requete

3 réponses
Avatar
JCM
Bonjour a tous

Je cherche a controler l'existence d'un enregistrement=20
dans une table Access

Call MyFonctions.ExecSQL("Select * from ListeTablesIDC=20
where IDtypeIDC=3D'" & RubIDCSelect & "'", ADOrst, ADOcnx)
If Not IsNull(ADOrst("IDtypeIDC")) Then
msgBox "N'existe pas"
End If

L'enregistrement n'existe pas et pourtant le IF fait comme=20
si

Peu-etre la condition IF END IF est mal =E9crite ?

Cordialement
JCM

3 réponses

Avatar
Zoury
Salut Jean-Claude! :O)

si ton curseur est du côté client (adUseClient), tu peux vérifier le
RecordCount :
'***
If (ADOrst.RecordCount = 0) Then
Call MsgBox("n'exite pas")
End If
'***

sinon, tu peux testé si le curseur dans le recordset pointe au début ET à la
fin :
'***
If (ADOrst.BOF And ADOrst.EOF) Then
Call MsgBox("n'exite pas")
End If
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
Avatar
JCM
Re salut Zoury

Tout d'abord merci pour ta réponse sur mon problème de
cocher et décocher les noeuds du treeView, cela marche
impec

Par contre les modifs ci-dessous ne change rien au problème
cela me dit que l'enregistrement existe alors que c'est
faux

Cordialement
Jean Claude
-----Message d'origine-----
Salut Jean-Claude! :O)

si ton curseur est du côté client (adUseClient), tu peux


vérifier le
RecordCount :
'***
If (ADOrst.RecordCount = 0) Then
Call MsgBox("n'exite pas")
End If
'***

sinon, tu peux testé si le curseur dans le recordset


pointe au début ET à la
fin :
'***
If (ADOrst.BOF And ADOrst.EOF) Then
Call MsgBox("n'exite pas")
End If
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 -


http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml -


http://www.mztools.com/


.



Avatar
Zoury
> Tout d'abord merci pour ta réponse sur mon problème de
cocher et décocher les noeuds du treeView, cela marche
impec



Excellent ! :O)

Par contre les modifs ci-dessous ne change rien au problème
cela me dit que l'enregistrement existe alors que c'est
faux



j'ai mal interpréter ton problème ...

regarde cette exemple il devrait pouvoir t'aider à mieux visualiser les
possibilités :
'***
' Ajouter la référence Microsoft Data Object 2.X Library
' Module1
Option Explicit

Private Sub Main()

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

' initialise la connexion
Set cn = New ADODB.Connection
' mettre TA chaine de connexion ici..
Call cn.Open("Provider=SQLOLEDB.1;Persist Security Infoúlse;User
ID=login;PDW=password;Initial CatalogÚtabase;Data Source=server;")
' initialise le recordset
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
' on créer la table pour le test
Call cn.Execute("create table t(i int, s varchar(10))")


' ** Premier test, rs est vide
'
' on exécute la requête
Call rs.Open("select * from t", cn, adOpenForwardOnly, adLockReadOnly)
' imprime les résultats
Call PrintResults("Test rs vide", rs)


' ** Deuxième test, rs n'est pas vide,
' mais l'enregistrement ne contient que des NULL
'
' on ajoute un enregistrement à la table
Call cn.Execute("insert into t(i, s) values(null, null)")
'
' on exécute la requête
Call rs.Close
Call rs.Open("select * from t", cn, adOpenForwardOnly, adLockReadOnly)
' imprime les résultats
Call PrintResults("Test valeurs NULL", rs)


' on détruit la table et ferme les ressources
Call cn.Execute("drop table t")
Call rs.Close
Call cn.Close

End Sub

Private Sub PrintResults(ByRef Description As String, ByRef rs As
ADODB.Recordset)
Debug.Print Description
Debug.Print " rs.RecordCount : " & rs.RecordCount
Debug.Print " rs.BOF : " & rs.BOF
Debug.Print " rs.EOF : " & rs.EOF
If (rs.RecordCount > 0) Then
If (Not IsNull(rs.Fields("i"))) Then
Debug.Print " rs.Fields(""i"").Value : " & rs.Fields("i").Value
Else
Debug.Print " rs.Fields(""i"").Value : NULL"
End If
If (Not IsNull(rs.Fields("s"))) Then
Debug.Print " rs.Fields(""s"").Value : " & rs.Fields("s").Value
Else
Debug.Print " rs.Fields(""s"").Value : NULL"
End If
Else
Debug.Print " no records found"
End If
End Sub
'***


Maintenant, dans le case d'une valeur de type String qui serait NULL, tu
peux, au lieu d'employer IsNull(), concatener une chaine vide à ta valeur
avant de l'affecter..
Exemple :
'***
MyValue = rs.Fields("s").Value & "" ' évite de planter si s est null.
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/