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 :

[VB] - Requête SQL


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 160
    Par défaut [VB] - Requête SQL
    Bonjour à tous,

    J'ai une appli VB qui utilise une BD FileMaker pro 5.5. Mon souci est que la requête ci-après me retourne toujours quoi qu'il arrive "-1"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "select count(*) from " & TronqueFichier(LireINI(SectFile, "fichier")) & " where code_article=" & Chr(34) & "ME007" & Chr(34) & ""), cnx
    Mes objets ADO fonctionnent car j'ai un insert qui fonctionne très bien. En loccurrence ici je dois faire un insert si et seulement si le numéro que je veux insérer n'existe pas déjà dans la base.

    Ma requête ici est : "select count(*) from GT_Inventaire_BouteilleARI where code_article="ME007"

    Dans ce cas elle devrait me retourner environ 1300. Pourquoi me retourne t-elle uniquement -1 ?

    Merci d'avance pour votre soutien.

    Guillaume.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 160
    Par défaut
    En complément voici ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Function existeDDSIS(numDDSIS As String) As Boolean
        dsTmp.Open ("select count(*) from " & TronqueFichier(LireINI(SectFile, "fichier")) & " where code_article=" & Chr(34) & "ME007" & Chr(34) & ""), cnx
        MsgBox Trim$(" & Chr(34) & 'ME007' & Chr(34) & ")
        MsgBox Trim$(Str$(dsTmp.RecordCount))
        If dsTmp.RecordCount > 0 Then
            existeDDSIS = True
            dsTmp.Close
        Else
            existeDDSIS = False
            dsTmp.Close
        End If
    End Function
    Et voici l'interface :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    Private Sub acquisition()
    Dim ret() As String
        If fonction.SaisieArticle(TxtScan.Text, ret) Then
            If Not fonction.existeDDSIS(TxtScan.Text) Then
                Dim codeArticle As String
                Dim n°sdis As String
                Dim n°ddsis As String
                codeArticle = UCase$(Left$(TxtScan.Text, 5))
                n°sdis = Right$(TxtScan.Text, 4)
                n°ddsis = UCase$(TxtScan.Text)
                Call fonction.enregistreAcquisition(codeArticle, "test", n°ddsis)
                If fonction.existeDDSIS(TxtScan.Text) Then
                    Call Beep(Ok)
                    Lblmessage.Text = "Article ajouté dans la base !"
                Else
                    Call Beep(erreur)
                    Lblmessage.Text = "Une erreur est survenue ..."
                End If
            Else
                Call fonction.Beep(erreur)
                Lblmessage.Text = "Le numéro DDSIS : " & TxtScan.Text & " existe déjà dans la base de données !"
            End If
        Else
            Call fonction.Beep(erreur)
            Lblmessage.Text = "Le numéro DDSIS n'a pas un format valide !"
        End If
    End Sub

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 160
    Par défaut
    J'ai modifié ma fonction. Je viens de me rendre compte qu'elle génère une erreur je crois. Mais où est l'erreur ???

    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
    Public Function existeDDSIS(numDDSIS As String) As Boolean
        'Initialisation du RecordSet
        If dsTmp.State <> adStateClosed Then dsTmp.Close
        dsTmp.Open ("select count(code_article) from " & TronqueFichier(LireINI(SectFile, "fichier")) & " where code_article=" & Chr(34) & "ME007" & Chr(34) & ""), cnx
        On Error GoTo erreur
        If dsTmp.RecordCount > 0 Then
            existeDDSIS = True
            dsTmp.Close
        Else
            existeDDSIS = False
            dsTmp.Close
        End If
    erreur:
        existeDDSIS = False
        MsgBox "ADOManager.existeDDSIS:erreur" & vbCr & vbCr & Err.Description, vbCritical
    End Function

  4. #4
    Membre éprouvé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Par défaut
    J'ai modifié ma fonction. Je viens de me rendre compte qu'elle génère une erreur je crois. Mais où est l'erreur ???
    Je te repose la question
    Fais un msgbox de ta requête pour voir s'il n'y a pas d'erreur de syntaxe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     msgbox "select count(code_article) from " & TronqueFichier(LireINI(SectFile, "fichier")) & " where code_article=" & Chr(34) & "ME007" & Chr(34) & ""

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 160
    Par défaut
    Je viens de voir en mettant des goto erreur partout que j'avais un autre problème dès le commencement. En effet j'ai une procédure init() qui fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Sub Init()
        On Error GoTo Erreur
        If cnx.State <> adStateClosed Then
            cnx.Close
        End If
        cnx.ConnectionString = "DRIVER={FileMaker Pro};FILEDSN=" & App.Path & "\ff.dsn;PASSWORD=" & LireINI("main", "mdp")
        cnx.Open
    Erreur:
        MsgBox "ADOManager.init:erreur" & vbCr & vbCr & Err.Description, vbCritical
    End Sub
    Etant donné que j'ai le msgBox qui s'affiche, y'a un souci. Mais ça fait pas mal de temps que je suis dessus et je vois pas ou est le problème. En plus de cela, dans l'interface suivante, j'ai un insert qui passe très bien alors ma connexion est censé ne pas être ouverte puisque erreur comme je l'ai dit plus haut...

    De l'aide !

    Merci à toi en tout cas

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 160
    Par défaut
    sinon la synthaxe de la requête est impeccable ...

  7. #7
    Membre éprouvé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Par défaut
    Pourquoi appeler des fonctions dans la chaine de connexion ? Tu peux juste les récuprérer dans des variables pour rendre ton code plus lisible.

    En faisant par exemple pour le mot de passe : pwd = LireINI("main", "mdp")

Discussions similaires

  1. Requête SQL
    Par Leludo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/07/2024, 15h41
  2. [ DB2 ] [ AS400] requête sql
    Par zinaif dans le forum DB2
    Réponses: 6
    Dernier message: 23/08/2008, 19h42
  3. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  4. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26
  5. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 11h37

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