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 :

[DELPHI 2005] Paramètre ADO, SQL Server et chaîne vide (' ')


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 15
    Points : 13
    Points
    13
    Par défaut [DELPHI 2005] Paramètre ADO, SQL Server et chaîne vide (' ')
    Bonjour à tous,

    j'ai un petit problème. J'ai une requête ADO créée à l'exécution. Je valide selon les types de mes champs, le type du paramètre à créer. Lorsque je veux affecter la valeur ' ' à un paramètre et que j'éxécute ma requête d'insertion, au lieu d'avoir une chaîne vide dans ma base de donnée, j'ai la valeur 32 ???????????? Sous Oracle, je n'ai pas se problème mais avec SQL Server oui.

    Voici mon code :

    //Parcours des enregistrements et insertion dans la table
    while (not qrySource.Eof) do
    begin
    //Pour tous les champs dans la requête source
    //affecter la bonne valeurs à la requête destination
    for i := 0 to qrySource.FieldCount -1 do
    begin
    if (qrySource.Fields[i].DataType = ftString) then
    begin
    if (varIsNull(qrySource.Fields[i].Value)) then
    //Voici les 2 cas problèmes
    qryDestination.Parameters.Items[i].Value := ' '
    else if (qrySource.Fields[i].Value = '') then
    qryDestination.Parameters.Items[i].Value := ' '

    else
    qryDestination.Parameters.Items[i].Value := qrySource.Fields[i].Value;
    end
    ...

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Je me permets de regrouper tes 2 cas de tests et je te propose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if varIsNull(qrySource.Fields[i].Value) or (qrySource.Fields[i].Value = '') then 
      qryDestination.Parameters.Items[i].Value := NULL;
    L'utilisation de NULL doit être faite conjointement avec la spécification du type du paramètre, ce que tu fais dans le test précédent if (qrySource.Fields[i].DataType = ftString) then

    Conclusion : vérifie en mode débug que tu passes bien dans le bout de code que je t'ai donné et ça devrait être bon.
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Merci beaucoup pour ta réponse. Tout fonctionne correctement.

    Par contre, pourquoi 32???? J'affecte ' ' au paramètre et il me sort 32.

    Celle là, je la comprend vraiment pas.

Discussions similaires

  1. Demande d'aide sur delphi 7 studio et Sql Server 2005
    Par malia1 dans le forum Bases de données
    Réponses: 5
    Dernier message: 27/06/2008, 14h39
  2. Lenteur requetes ADO SQL server
    Par StarMusic dans le forum Bases de données
    Réponses: 10
    Dernier message: 11/08/2006, 13h43
  3. ADO + SQL Server + problème de connexion
    Par bchristo dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 02/12/2005, 17h08
  4. [Delphi 2005/Oracle/ADO]Taille de champ incorrecte
    Par Frank dans le forum Bases de données
    Réponses: 20
    Dernier message: 15/04/2005, 14h12
  5. [ado][sql server] CLIENT/SERVER
    Par nil dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/04/2004, 08h12

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