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 :

Problème de recherche des enregistrements


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de diablo-dz
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 75
    Par défaut Problème de recherche des enregistrements
    Salut tout le monde,
    Je recherche l'instruction pour faire une recherche sur ma base de données sur sql server à partir de delphi avec le composant db query
    et l'afficher dans le résultat sur la fenêtre ( chaque champ dans son dbedit) comme dbnavigateur
    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var
    i:integer
    begin
    i:=0;
    i:=Nomdelaforme.dbedit1.text;
    nomdelaforme.nomdelatable.first;
    while not nomdelatable.eof do
    begin
    if nomdelaforme.nomdelatable['nomdechamp']=i then begin
    showmessage('xxxxx');
    nomdelatable.edit;
    end;end;end;
    mais n'affiche pas donc je recherche l'aide

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 931
    Billets dans le blog
    6
    Par défaut
    Il y a ici sûrement confusion de type : si i est entier, on ne peut lui affecter la valeur Text d'un DBEdit, de type chaîne.

    Il faut probablement utiliser les fonctions de conversion StrToInt ou IntToStr.

    On doit aussi pouvoir utiliser des transtypages de champs : if nomdelaforme.nomdelatable['nomdechamp'].AsInteger=i then
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 597
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    le code est confus , mais je pense qu'il a été écrit 'à la volée' .

    Outre l'erreur relever par tourlourou a propos de i , je note une possible confusion dans le "while not nomdelatable.eof do"
    si Nomdelaforme est dans une autre unité alors l'indication manque , sinon à quoi cela sert-il de l'indiquer ailleurs .

    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
     
    var i : Integer;
    begin
    with NomdelaForme do 
     begin
       i:=StrToInt(dbedit1.text);
       nomdelatable.first;
       while not nomdelatable.eof do
        begin
           if nomdelatable['nomdechamp'].asInteger=i then 
                begin
                    showmessage('xxxxx');
                    nomdelatable.edit;
                end;
           nomdelatable.Next; // ça aussi , ça manque la boucle while serait infinie et si le 1°record ne correspond pas à la condition ....... pas de showmessage  
        end;
      end;
    end;
    Ensuite , si c'est une query qui est utilisée , pourquoi ne pas utiliser un paramètre pour n'avoir que l'ensemble de données à éditer ? ce qui éviterait d'avoir a faire un test de valeur
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM TABLE WHERE CHAMPI=:I;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    With nomdelatable do
     begin
       Close;
       ParambyName('i').asInteger:=StrToInt(dbedit1.text); // note , si c'est un DBEdit il vaudrait carrément mieux passé par la data source 
       nomdelatable.Open;
       while not EOF do
         begin
          .....
          Next;
        end;
     end;
    je vois encore plein d'améliorations possibles , mais à demande floue , réponse floue ! (le bon vieux GIGO informatique est toujours vivant)

  4. #4
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    + voir TTable.Locate,
    mais dans les bases relationnels, comme FB, SQlserver,.. mieux utiliser les requêtes comme expliquer par SergioMaster

  5. #5
    Membre extrêmement actif Avatar de Simara1170
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    Avril 2014
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Delphi
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2014
    Messages : 423
    Par défaut
    TU peux tenter le FindKey, mais je te conseille de te faire couler une bonne cafetière de café, parce que t'auras eu le temps de la boire le temps qu'il renvoie un résultat...
    Le mieux ça reste quand même, à mon avis, de se faire une petite requête SQL qui te renverras le résultat voulu avec un temps d’exécution moindre

  6. #6
    Membre expérimenté
    Avatar de diablo-dz
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 75
    Par défaut
    Citation Envoyé par Simara1170 Voir le message
    TU peux tenter le FindKey, mais je te conseille de te faire couler une bonne cafetière de café, parce que t'auras eu le temps de la boire le temps qu'il renvoie un résultat...
    Le mieux ça reste quand même, à mon avis, de se faire une petite requête SQL qui te renverras le résultat voulu avec un temps d’exécution moindre
    bonjour simara1170
    je voix que je suis mal exprimer, mon problème c'est comme afficher les résultat dans les dbedit .
    je cherche comment faire des modification après une recherche directement ,j'ai une solution mais ce n'est pas quoi je recherche
    c'est de faire une recherche avec une requête qui va afficher sur un dbgrid après tu clique sur le résultat automatiquement ça va afficher sur les dbedit
    j’espère que la tous le monde va comprendre mon problème....je suis toujours a la recherche d'une solution

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

Discussions similaires

  1. Recherche des enregistrements du mois précédent
    Par xenos dans le forum Langage SQL
    Réponses: 1
    Dernier message: 19/07/2007, 13h14
  2. recherche des enregistrements corréspendant a un champ précis
    Par tina25 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 27/03/2007, 09h50
  3. Recherche des enregistrements en fonction des paramètres
    Par infoctet dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 10/01/2007, 09h51
  4. [XPath] Problème pour rechercher des caractères spéciaux
    Par JolyLoic dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 13/12/2006, 13h41
  5. Rechercher des enregistrements similaires
    Par charestm dans le forum Access
    Réponses: 3
    Dernier message: 16/07/2006, 20h04

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