Probleme execution de requete

Résolu
djbenji81100 Messages postés 66 Date d'inscription vendredi 9 septembre 2011 Statut Membre Dernière intervention 4 juin 2012 - 18 avril 2012 à 15:49
djbenji81100 Messages postés 66 Date d'inscription vendredi 9 septembre 2011 Statut Membre Dernière intervention 4 juin 2012 - 19 avril 2012 à 13:21
Bonjour ,

Je suis en train de creer une petite application necessitant une connexion a une base de donnée .

Jusque la tous vas bien je l'est fait avec postgres.

Mais voila lors de l'execution d'une requete monsieur me mets un message d'erreur qui a le don de m'enerver !

Voila le code :

Imports System
Imports System.Management
Imports System.Windows.Forms
Imports ADODB


Public Class Fenetre
    Private chaineconnexion As String
    Private cn As New ADODB.Connection


    Private Sub Fenetre_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim req_sql As String
        Dim i As Integer
        Dim rs As New ADODB.Recordset


        chaineconnexion = "Driver={PostgreSQL ANSI};Server=localhost;Port=5432;Database=Camping_Palace;Uid=postgres;Pwd=modesty1"
        req_sql ("select nom from type_emplacement where code_emplacement " & i)

        ' For i = 1 To 2


        Try

            cn.Open(chaineconnexion)

            i = 1

            rs.Open(req_sql, cn, CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockReadOnly)



            MsgBox(rs.Fields(0).Value)


            Liste_type_emplacement.Items.Add(rs.Fields(0).Value)


            rs.Close()

            cn.Close()


        Catch ex As Exception

            MsgBox("une Exception est déclenchée" & vbCrLf & ex.Message)
            'gestion_erreur(cn)

        Finally

            cn = Nothing

        End Try

        '   Next

    End Sub
End Class


voila le message d'erreur :

"une Exception est déclenchée
BOF ou EOF est égal a true ou l'enregistrement actuel a été supprimée. L'opération demandée nécessite un enregistrement actuel . "

En regardant la requete de plus prés en l'executant sous pgadmin 3 il n'y as aucun probleme . De meme sur le logiciel lorsque je mets la valeur de code_emplacement en dur ( soit 1,2,3 ...) alors Pourquois lorsque je le marque comme ceci il n'aime pas ?

Ce n'est pas la premiere foi que je fait ce genre de requete sur visual studio 2010 mais c'est bien la premiere fois qu'il me marque ce message d'erreur .

Si quelqu'un a une idée je suis prenneur !!

Merci d'avance

4 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
18 avril 2012 à 19:36
Bonjour,

ton enregistrement est vide, regardes la requête que tu fais en pas à pas, tu verra que tu recherches l'Id 0.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
19 avril 2012 à 12:31
Bonjour,

Sur quelle ligne est déclenchée l'erreur ?
As-tu vérifié les valeurs de la ligne ?
Et si rs est vide (aucun enregistrement) ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
3
djbenji81100 Messages postés 66 Date d'inscription vendredi 9 septembre 2011 Statut Membre Dernière intervention 4 juin 2012
19 avril 2012 à 10:58
Bonjour ,

dsl du retard , mais merci pour la reponce !

exact ! j'ai donc modifier ceci mais j'ai toujour une erreur ( differente ) voila ce que j'ai changer .

j'ai meme un peu honte de ne pa avoir trouver l'erreur


   Dim req_sql As String
        Dim i As Integer
        Dim rs As New ADODB.Recordset
        chaineconnexion = "Driver={PostgreSQL ANSI};Server=localhost;Port=5432;Database=Campig_Palace;Uid=postgres;Pwd=modesty1"


        i = 1




        While i <= 2

            req_sql ("select nom from type_emplacement where code_emplacement " & i)

            Try

                cn.Open(chaineconnexion)



                rs.Open(req_sql, cn, CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockReadOnly)



                MsgBox(rs.Fields(0).Value)


                Liste_type_emplacement.Items.Add(rs.Fields(0).Value)


                rs.Close()

                cn.Close()


            Catch ex As Exception

[....]



donc il fait bien le premier tour de boucle avec la bonne info sur le msgbox , mais lors du second tour lors de la connexion avec : "cn.Open(chaineconnexion)"

j'ai ce message d'erreur :

" une Exception est déclenché"
la référence d'oblet n'est pas definie a une instance d'un objet."

sais tu d'où ça vient ?
0
djbenji81100 Messages postés 66 Date d'inscription vendredi 9 septembre 2011 Statut Membre Dernière intervention 4 juin 2012
19 avril 2012 à 13:21
Re

Donc la probleme est declenché a la ligne

" cn.Open(chaineconnexion)" lors du second passage ( au premier tour , aucun soucis j'ai pour cn : "{ADODB.ConnectionClass}" )

mais au second passage j'obtiens ( cn : "Nothing" )

donc je viens d'effectuer un test ( j'ai enlever le cn = nothing ) a la fin de mon code juste avant le End try .

Et MAINTENANT TOUS FONCTIONNES !!!


Merci beaucoup

il est vrai que je n'est pas trop l'abitude d'utiliser les espions express de visual studio pour voir les valeurs des variables .

Merci beaucoup encore une fois et bonne continuation =)

crdt
0
Rejoignez-nous