[R] Erreur lorsqu'une requete SQL ne trouve rien

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Utilisateur 3309 supprimé
Status : Hors ligne

[R] Erreur lorsqu'une requete SQL ne trouve rien

#1

Message par Utilisateur 3309 supprimé »

Bonjour, j'ai un petit probleme lorsqu'une requete SQL ne retourne rien j'ai un message d'erreur.

Voici le code que j'utilise:

Code : Tout sélectionner

    $query = "SELECT * FROM articles WHERE code ='J0250'"

    $adoCon = ObjCreate("ADODB.Connection")
    $adoCon.Open("Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=" & $dbname) ;Use this line if using MS Access 2003 and lower
    ;$adoCon.Open ("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $dbname) ;Use this line if using MS Access 2007 and using the .accdb file extension
    $adoRs = ObjCreate("ADODB.Recordset")
    $adoRs.CursorType = 1
    $adoRs.LockType = 3
    $adoRs.Open($query, $adoCon)

    $Code = $adoRs.Fields(0).value
Mais lorsque la requete SQL ne trouve pas ce que je recherche, cette ligne donne une erreur:
$Code = $adoRs.Fields(0).value
The requested action with this object has failed

Donc comment gérer l'affaire lorsque la requette ne trouve rien dans la base ?
Modifié en dernier par Utilisateur 3309 supprimé le dim. 27 mai 2012 12:12, modifié 1 fois.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Erreur lorsqu'une requete SQL ne trouve rien

#2

Message par jchd »

C'est simple : s'assurer que l'on n'accède pas à l'aveugle un objet non existant.

Code : Tout sélectionner

    If $AdoRs.EOF Then
        $AdoRs = 0
        Return SetError( <code(s) indiquant un résultat vide> )
    Else
        ; traitement du resultset
    EndIf
 
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Utilisateur 3309 supprimé
Status : Hors ligne

Re: [..] Erreur lorsqu'une requete SQL ne trouve rien

#3

Message par Utilisateur 3309 supprimé »

Ok merci, j'ai compris le principe :D

j'ai fait comme ceci et ca a l'air de focntionner:

Code : Tout sélectionner

If Not $adoRs.EOF Then

$Code = $adoRs.Fields(0).value
.
.
.
Else
   MsgBox(1,"Erreur","Article inexistant dans la base de données")
EndIf
 
Modifié en dernier par Utilisateur 3309 supprimé le dim. 27 mai 2012 11:56, modifié 1 fois.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Erreur lorsqu'une requete SQL ne trouve rien

#4

Message par jchd »

L'erreur vient peut-être d'avant, on bien MS n'implémente pas EOF() pour Access (et puis Access :lol: ) .
Que donne un test d'erreur (If @error then ConsoleWrite(...) ) sur les instructions précédentes ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Utilisateur 3309 supprimé
Status : Hors ligne

Re: [..] Erreur lorsqu'une requete SQL ne trouve rien

#5

Message par Utilisateur 3309 supprimé »

j'ai édité mon message précédent. ca fonctionne bien de cette manière 8)
Répondre