IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

problème de requete avec sql2005


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 66
    Par défaut problème de requete avec sql2005
    bonjour

    j'ai un problème que je n'arrive pas à resoudre alors j'espère que qq 1 pourra m'aider.

    J'ai un recordset qui ne retourne aucun enregistrement lorsque j'execute mon code alors que dans sql directement la meme requete me retourne 4 enregistrement !!!
    Je n'ai pas de message d'erreur juste recordcount=0

    Je ne sais plus quoi faire !!!
    Pour info je suis en VB6

    Merci d'avance
    Sandra

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    ........
    lorsque j'execute mon code
    .........
    Et tu nous l'as mis ou le code pour que l'on puisse te donner un coup de mains
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 66
    Par défaut
    Bonjour

    voici le bout de code que j'execute et qui ne retourne rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Set mvarRecordsetFacture = New ADODB.Recordset
    mvarRecordsetFacture.Open sql, baseM, adOpenKeyset
    If mvarRecordsetFacture.RecordCount > 0 Then
     traitements des enregistrements 
    End if
    sql est ma requete qui fonctionne
    baseM est la chaine de connexion à la base qui est correct.

    Je ne rentre jamias dans le traitement des enregistrements car recordcount=0 (j'ai aussi essayé avec EOF et ça ne marche pas non plus ) alors que ça devrait retourner au moins 1 enregitrement.

    Merci d'avance
    Sandra

  4. #4
    Membre éprouvé
    Homme Profil pro
    Analyste développeur VB6, SQL, VB.NET, C#
    Inscrit en
    Avril 2003
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste développeur VB6, SQL, VB.NET, C#
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2003
    Messages : 111
    Par défaut
    bonjour,

    j'ai eu quelques soucis de ce genre il y a fort longtemps dans le cas d'utilisation de table temporaire sous SQL SERVER: le nombre d'enregistrements n'était pas renvoyé donc l'utilisation du .recordcount n'était pas valide.

    insérer dans la procédure stockée le code "set nocount on":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    create maProcedure 
    <parametres> 
    as 
    set nocount on 
    ...
    sous VB6, pour récupérer le nombre d'enregistrements, il faudra faire avec la recorset résultat recRdst:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim lngNbRecord As Long
    Dim recRdst as ADODB.Recordset
    ...
    lngNbRecord = recRdst.RecordCount
    cdlt,

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 66
    Par défaut
    Merci de votre réponse je vais essayer mais je n'utilise pas de table temporaire dans ma requete.

    Le pire c'est que ça marche sur le poste d'un collègue qui a SQL2005 Express mais pas chez la cliente

    Je vais refaire qq tests .

    Sandra

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 66
    Par défaut
    ça change rien

    Qq1 a une idée car là je seche completement !!!

    Sandra

  7. #7
    Membre émérite
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Par défaut
    Bonjour,

    Le chemin pour trouver la base est-il correct?
    Si le recordcount=0,c'est que tu trouves une base vide.

    Le pire c'est que ça marche sur le poste d'un collègue qui a SQL2005 Express mais pas chez la cliente
    car si celà fonctionne autre part ,le problème est peut-être ailleurs et pas nécessairement là où on le pense.

    A+ et bon courage

  8. #8
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    A essayer, pour debug
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    On Error Resume Next
    mvarRecordsetFacture.Open sql, baseM, adOpenKeyset
    mvarRecordsetFacture.MoveFirst
    If Err.Number <> 0 Then
      MsgBox "Erreur N° " & Err.Number & vbCrLf & "Description: " & vbCrLf & Err.Description
    End If
    Il faudra que tu ais paramétré dans ton éditeur avec, Outils => Options => Onglet Général,
    Récupération d'erreur => Arrêt sur les erreurs non gérées.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  9. #9
    Membre confirmé
    Inscrit en
    Mars 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 66
    Par défaut
    Bonjour,

    j'ai fait les tests avec le numéro de l'erreur mais je n'ai rien .
    Il n'y a pas d'erreurs d'execution de la requete.

    je ne sais plus quoi faire!!!

    Sandra

  10. #10
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Ta clause sql n’est peut-être pas exactement transposable en l’état dans VB6, ou tout du moins, sa syntaxe est peut-être a adapter.
    Que contient ta variable sql au moment de l’open ?

    Sinon, as-tu vraiment besoin de savoir le nombre d’enregistrement renvoyé par ton Recordset.
    Rien ne devrait empêcher de boucler de cette façon pour extraire les enregistrements.
    Bien que
    (j'ai aussi essayé avec EOF et ça ne marche pas non plus )
    des fois que tu n'ais pas bien employé cette proriété.
    Essais encor ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Set mvarRecordsetFacture = New ADODB.Recordset
    Debug.Print sql
    mvarRecordsetFacture.Open sql, baseM, adOpenKeyset
    If Not mvarRecordsetFacture.EOF Then
     Dim T As Long
     mvarRecordsetFacture.MoveFirst ' placement sur le 1° enregistrement
     Do While Not mvarRecordsetFacture.EOF
      'traitements des enregistrements
      '...............................
      mvarRecordsetFacture.MoveNext 'avance d'un enregistrement
      DoEvents
      T = T + 1
     Loop
     Debug.Print "Nbr. d'enregistrement: " & CStr(T)
     Debug.Print "RecordCount = " & CStr(mvarRecordsetFacture.RecordCount)
     mvarRecordsetFacture.Close
     Else
     Debug.Print "Hélasse, il y a bien un problème"
    End If
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  11. #11
    Membre éprouvé
    Homme Profil pro
    Analyste développeur VB6, SQL, VB.NET, C#
    Inscrit en
    Avril 2003
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste développeur VB6, SQL, VB.NET, C#
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2003
    Messages : 111
    Par défaut
    bonjour,

    ceci est un problème qui revient souvent: tester une application avec une base de données de test dans laquelle figurent des enregistrements.

    nous oublions parfois de tester notre application sur une base de données entièrement vierge (telle qu'elle serait lors d'une installation sur un nouveau site client).

    nous nous apercevons alors que la gestion n'est pas implémentée: les conséquences peuvent être désastreuses...

    cdlt,

  12. #12
    Membre émérite
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Par défaut
    Bonjour,

    Bien vu littledoudou et avec raison
    Tester avec 'rien est une bonne solution et moi de mon coté ,je n'emploie jamais le 'on error goto ou 'resume next, car j'estime qu'un logiciel
    'bien conçu n'a pasbesoin de ces commandes(sauf cas spéciaux bien sûr)

    A+ et cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de requete avec like
    Par eric062 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 21/10/2008, 17h18
  2. Problème de requete avec SUM
    Par fatiinfo dans le forum Hibernate
    Réponses: 2
    Dernier message: 27/08/2008, 16h18
  3. [Hibernate]Problème de requete avec "join fetch"
    Par gauloiskiki dans le forum Hibernate
    Réponses: 4
    Dernier message: 21/06/2006, 09h54
  4. Problème de requete avec type monétaire
    Par Pymm dans le forum ASP
    Réponses: 11
    Dernier message: 09/09/2005, 16h57
  5. Problème de requete avec Innodb
    Par silef dans le forum Requêtes
    Réponses: 3
    Dernier message: 14/04/2004, 12h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo