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 :

requête SQL : Type incompatible


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 19
    Points : 12
    Points
    12
    Par défaut requête SQL : Type incompatible
    Bonjour à tous !!
    J'ai un petit souci : le résultat de la requête est le suivant : 'Erreur d'exécution '13' Type incompatible'

    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
    Private Sub Form_Load()
    Dim req As Integer
    Dim rstpret As New Recordset
    Dim NumM As Integer
    Dim code As Integer
     
    code = frmretour.lstretour.ItemData(frmretour.lstretour.ListIndex)
    NumM = frmretour.cbomembre.ItemData(frmretour.cbomembre.ListIndex)
     
    req = " SELECT * FROM Pret WHERE Code= " & code & " AND NumM = " & NumM & ""
    rstpret.Open req, Cnx
    Do While Not rstpret.EOF
        If IsNull(rstpret("DateRetour")) Then
            txtnom.Text = frmretour.cbomembre.Text
            txtdate.Text = rstpret("DateEmprunt")
            txtduree = CDate(Date) - rstpret("DateEmprunt")
        End If
        rstpret.MoveNext
    Loop
     
    rstpret.Close
    End Sub
    Dans ma table Prêt, NumM et Code sont de type Numérique entier.

    Je précise que que les noms des variables et de la table sont corrects (respect des majuscules...).
    Je dois avouer que je ne sais pas pquoi

    Merci d'avance

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    code = frmretour.lstretour.ItemData(frmretour.lstretour.ListIndex)
    NumM = frmretour.cbomembre.ItemData(frmretour.cbomembre.ListIndex)
    Dans ta table, oui, mais là ?

  3. #3
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 62
    Points : 71
    Points
    71
    Par défaut evidemment que le type est incompatible!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    req = " SELECT * FROM Pret WHERE Code= " & code & " AND NumM = " & NumM & ""
    ça veut dire que req est du type String!
    et puis je trouve ton code un peu touffu.
    je t'en propose un autre tout à l'heure

    Édité par zazaraignée

  4. #4
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 62
    Points : 71
    Points
    71
    Par défaut le pb vient au niveau de tes déclarations
    mets plutot

    Édité par zazaraignée

  5. #5
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 62
    Points : 71
    Points
    71
    Par défaut sinon fais moi signe
    si ça ne marche pas explique moi ce que ton code doit faire et je vais essayer de le faire à ma manière.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 19
    Points : 12
    Points
    12
    Par défaut quel con mais quel con...:roll:
    je suis un abruti ...c'était évidemment le type qui n'allait pas...
    dsl pour le dérangement ^^

    POur l'aspect touffu , j'ai fait du copier/coller , il n'a pas pris l'indentation des lignes de code et j'ai enlevé tous les commentaires...

    Merci encore

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 19
    Points : 12
    Points
    12
    Par défaut puis-je abuser? :oops:
    tant que j'y suis....
    j'ai un autre problème...
    j'exécute soi cette requête :
    auj étant la date du jour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    req2 = "insert into OBJET values(" & code & ", '" & txttitre.Text & "',#" & auj & "#, " & original & "," & fr & ", " & donneur & "," & CodeSup & "," & CodeLang & ")"
    soi celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    req2 = "insert into OBJET (Code, Titre, DateEntree, Original, Fr, NumM, CodeSup) values (" & code & ", '" & txttitre.Text & "', #" & auj & "#, " & original & ", " & fr & ", " & donneur & "," & CodeSup & ")"
    Dans les 2 cas, le message d'erreur est :
    "Aucune valeur donnée pour un ou plusieurs des paramètres requis."

    J'utilise une simple base Access.
    pareil...je ne vois pas pquoi...

  8. #8
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 62
    Points : 71
    Points
    71
    Par défaut Voici l'erreur "#"
    essaie plutot ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    req2 = "insert into OBJET values(" & code & ", '" & txttitre.Text & "'," & chr(35) & auj & chr(35) & " , " & original & "," & fr & ", " & donneur & "," & CodeSup & "," & CodeLang & ")"
    si tes types sont bien déclarés ça devarait marcher.
    je te suis....

    Édité par zazaraignée

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    non , toujours le même message...

  10. #10
    Membre habitué Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Points : 139
    Points
    139
    Par défaut
    Le problème n'est pas un problème de syntaxe ou de présentation de valeur, mais une ABSENCE de données : l'un des paramètres est vide.

    On ne sait pas ce que représentent les variables donneur, codesup, etc. D'après le texte de la requête, ce sont des valeurs numériques.

    Or si dans le code elles n'ont pas explicitement été déclarées comme telle par un Dim ... As integer (par exemple), leur valeur par défaut est une chaine vide. Idem si ce sont les contenus de textbox par exemple.

    Dans ce cas, la requete INSERT va envoyer la clause VALEURS avec certaines chaines vides, ce qui est interdit. Par exemple, si le troisième paramètre est un variant et qu'il n'a pas été initialisé, on aura :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... VALEURS ('ABC', 12, , 23)
    Si on ne veut pas remplir une valeur de champ numérique, il faut mettre Null à la place. Dans l'exemple précédent cela donnerait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... VALEURS ('ABC', 12, Null, 23)
    Attention, pas de guillemets autour de Null.

    De même, par défaut Access n'accepte pas les chaines vides dans les champs texte. Il est donc nécessaire de tester la valeur de la chaine avant d'écrire la requête. Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     sReq = "INSERT INTO Table VALUES (" & Iif(sVar = "", "Null", "'" & sVar & "'") & ")"
    Si sVar est vide, on aura :
    INSERT INTO Table VALUES (Null)
    sinon on aura :
    INSERT INTO Table VALUES ('Valeur de sVar')

    J'espère avoir été clair... Un conseil : en cas de difficulté, mettre un point d'arrêt sur la ligne Rs.Open..., et lors de l'arrêt aller dans la fenêtre de debogage et taper Print req2. La plupart du temps, la lecture du texte de la requête suffit à trouver le problème.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 192
    Points : 113
    Points
    113
    Par défaut
    Tu as aussi une autre solution : tu précises les colonnes qui contiennent des données

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO table1 (col1, col2, col3)
    VALUES (val1, val2, val3)

Discussions similaires

  1. [VBA] [SQL] Type incompatible dans le critère
    Par alex.a dans le forum Access
    Réponses: 13
    Dernier message: 19/01/2008, 12h19
  2. [Requête/SQL]Pb de "quote" avec un type memo
    Par Tintou dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 26/04/2007, 16h47
  3. [VB6] - Requête SQL et type de champs
    Par guiguikawa dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 28/03/2007, 14h01
  4. [VBA] [SQL] Type incompatible dans le critere
    Par mimi1 dans le forum VBA Access
    Réponses: 3
    Dernier message: 05/05/2006, 22h18
  5. [MySQL] Affichage page par page et requêtes du type $sql .=
    Par carelha dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 06/04/2006, 18h12

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