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

Bases de données Delphi Discussion :

[SQLServer 2008] Message d'erreur "le type du paramètre n'est pas correct"


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    août 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : août 2007
    Messages : 41
    Points : 23
    Points
    23
    Par défaut [SQLServer 2008] Message d'erreur "le type du paramètre n'est pas correct"
    Bonsoir a tous, voilà je voudrais vérifier le mot de passe tapé par utilisateur, j'ai fait ceci mais j'ai un message d'erreur, le type du paramètre :mp n'est pas correcte. Quelqu'un pourrait m'aider ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    sqlstr:='SELECT name';
    sqlstr:=sqlstr+' FROM   sys.sql_logins ';
    sqlstr:=sqlstr+' WHERE pwdcompare(:mp, password_hash)=1';
    qverifmp.sql.clear
    qverifmp.sql.add(sqlstr);
    qverifmp.Parameters[0].Value:=Password.text;
    qverifmp.OPEN;

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    13 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 119
    Points : 35 676
    Points
    35 676
    Billets dans le blog
    54
    Par défaut
    Bonjour,

    Il faudrait déjà indiquer de quels composants il s'agit ?
    ensuite faite plus lisible comme code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    qverifmp.sql.clear
    qverifmp.sql.add('SELECT name FROM sys.sql_logins');
    qverifmp.sql.add('WHERE pwdcompare(:mp, password_hash)=1');
     // le passage de paramètre dépendra beaucoup du composant utilisé, il faut peut-être selon le cas définir le type de paramètre
    // si ADO
    qverifmp.Parameters.parambyname('mp').datatype:=ftstring; 
    qverifmp.Parameters.parambyname('mp').Value:=Password.txt;
    
    
    qverifmp.OPEN;
    il faut aussi avoir une autorisation d'accès CONTROL SERVER
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  3. #3
    Membre à l'essai
    Inscrit en
    août 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : août 2007
    Messages : 41
    Points : 23
    Points
    23
    Par défaut Sqlserver 2008/ Delphi message d'erreur
    Bonjour, oui , j'utilise un Tadoquery. Merci

  4. #4
    Membre à l'essai
    Inscrit en
    août 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : août 2007
    Messages : 41
    Points : 23
    Points
    23
    Par défaut Sqlserver 2008/ Delphi message d'erreur
    Rebonjour, le composant c'est Tadoquery, le paramètre ":mp" est de type string, et c'est là que le message d'erreur se signal, merci beaucoup pour votre aide

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2016
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Le paramètre est de type string donc il faut peut-être utiliser un QuotedStr ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    qverifmp.Parameters[0].Value:=QuotedStr(Password.text);

  6. #6
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    novembre 2002
    Messages
    8 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2002
    Messages : 8 232
    Points : 26 662
    Points
    26 662
    Par défaut
    Citation Envoyé par MaxiDonkey Voir le message
    Le paramètre est de type string donc il faut peut-être utiliser un QuotedStr ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    qverifmp.Parameters[0].Value:=QuotedStr(Password.text);
    non, c'est l'objet des paramètres que de ne pas encoder les valeurs

    QuotedStr ça serait pour écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      qverifmp.sql.Text := 'SELECT name FROM sys.sql_logins WHERE pwdcompare('  + QuotedStr(Password.text) + ', password_hash)=1');
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Membre à l'essai
    Inscrit en
    août 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : août 2007
    Messages : 41
    Points : 23
    Points
    23
    Par défaut Sqlserver 2008/ Delphi message d'erreur
    Bonjour, merci a vous , je vais essayer votre proposition et vous revenir, merci beaucoup

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    12 233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 12 233
    Points : 21 584
    Points
    21 584
    Par défaut
    SergioMaster a anticipé les réponses a ses questions, le point important est .datatype:=ftstring; au cas où vous l'auriez loupé.
    ParamCheck doit être à True aussi
    ftWideString fonctionne aussi.

    Sinon Version de Delphi, Version du Provider\Driver, lequel d'ailleurs ?

    Enfin, n'utilisez pas cette table pour gérer les utilisateurs de l'application, différencier les comptes d'accès à la base de données des comptes utilisateurs logiciels.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Réponses: 16
    Dernier message: 22/02/2010, 17h18
  2. Réponses: 2
    Dernier message: 03/01/2010, 22h05
  3. Migration vers VS 2008 : message d'erreur à l'éxécution
    Par troubleshooting dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 29/07/2008, 13h59
  4. Message d'erreur de type de variable
    Par maxmarie dans le forum ASP.NET
    Réponses: 2
    Dernier message: 01/08/2007, 17h15
  5. [VB6]sqlserver 2000 message d'erreur
    Par Abydos Business Group dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 24/03/2006, 19h33

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