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 :

recherche dans une base de donnée+boucle


Sujet :

Bases de données Delphi

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 8
    Points : 5
    Points
    5
    Par défaut recherche dans une base de donnée+boucle
    pour mon probleme d'incrémentation je pense avoir trouvé une solution mais par contre je but sur la syntaxe

    je voudrais quand j'insert le mot 'RP' dans le champs 'Journee', lancer une recherche du mot 'RP' dans les champs suivant, si il trouve un 'RP', il l'efface et affecte de nouveau 'RP'+ ma variable incrementé de 1 et puis il recommence jusqu"a la fin de la table...

    voila mon code :

    la boucle fonctionne mais elle rempli en incrémentant tt les champs suivant alors que je veux le faire que sur les champs contenant le mot 'RP'

    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
    procedure TForm1.Button1Click(Sender: TObject);
     
    var
    Option : TLocateOptions;
    ab:string ;
     
    begin
    ab:='RP';
    Option := [loPartialKey];
    with TableDB1 do
         begin
            active := True;
        if tableDB1.Locate('Journee','RP',Option)= true then
        begin 
            delete
            While not Eof do
            begin
                Edit;
                FieldByName('Journee').asString:=ab+IntToStr(absrepos);
                post;
                inc(absrepos);
                next;
            end;
        end;
    end;
    je sais aussi que l'on peut utiliser FINDKEY mais je reussis a l'utiliser...si qq un a une idée

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 119
    Points : 125
    Points
    125
    Par défaut
    Si je comprends ton code

    tu te positionne sur le 1er enregistrement qui trouve 'RP'

    Tu le supprime

    Tu parcours toute la table
    Tu enregistre RP + position dans chaque enregistrement

    Or à mon avis ce n'est pas ce que tu veux. Toi tu veux que tous les enregistrement dont la journée = 'RP' soit transformé en RP01 ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    table1.setrange (['RP'],['RP']);
    While not table1..Eof do 
    begin 
    table1.Edit; 
    table1.FieldByName('Journee').asString:=ab+IntToStr(absrepos); 
    post; 
    inc(absrepos); 
    table1.next;
    End;
    Mika
    www.usargancy.net

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    cela marche pas, j'ai l'erreur suivant :

    'il n'y a pas d'index de reference pour la porté....'

    pour repondre a ta question je veux tt simplement que si je selectionne RP, il parcours la table pour rechercher les RP suivant, les effacer et les renumeroter grace a ma variable absrepos qui s'incrémente a chaque fois

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 119
    Points : 125
    Points
    125
    Par défaut
    Effectivement le setrange ne marche qu'avec un index.

    Essaie ceci

    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
     
     
    While not table1..Eof do 
    begin 
    IF FieldByName('Journee').asString = 'RP' then 
     begin
       table1.Edit; 
       table1.FieldByName('Journee').asString:=ab+IntToStr(absrepos); 
       post; 
       inc(absrepos); 
     End;
    table1.next; 
     
     
    End;
    Mika
    www.usargancy.net

  5. #5
    Futur Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    super cool, cela marche

    je te remercie, cela fait un bon moment que je galere desssus, je vais maintenant faire pareil si j'enleve un rp

    merci encore

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 119
    Points : 125
    Points
    125
    Par défaut
    De rien les forums servent à ça.

    N'oublies pas de mettre le tag RESOLU
    Mika
    www.usargancy.net

  7. #7
    Futur Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    le code marche super bien ( j'ai pas fait tt les test mais cela a l'air de fonctionner pas trop mal)

    par contre quand j'essaye de faire la meme chose en faisant dec(absrepos) cela me marche pas trop ( exemple j'ajoute des RP donc RP1, RP2, RP3, RP4, si je supprime le RP3, RP4 de devient pas RP3)

    voici mon code

    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
    procedure TForm1.XiButton9Click(Sender: TObject);
    var ab:string;
    begin
    ab:='RP';
    tableDB1.Edit;
    TableDB1.FieldByName('Journee').Clear;
    dec(absrepos);
       begin
         with TableDB1 do
         next;
         While not tableDB1.Eof do
      begin
      IF Copy(TableDB1.FieldByName('Journee').AsString ,1,2) = 'RP' then
      begin
       tableDB1.Edit;
       tableDB1.FieldByName('Journee').asString:=ab+IntToStr(absrepos);
       tableDB1.post;
       dec(absrepos);
      End;
     tableDB1.next;
     end;
    tableDB1.First;
      end;
      end;

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 119
    Points : 125
    Points
    125
    Par défaut
    Utilise les balises codes c'est plus lisible.

    Je ne comprend trop ton code.
    Mika
    www.usargancy.net

  9. #9
    Futur Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    quand je clique sur le bouton supprime
    1. j'edite ma table
    2. j'efface juste la colonne 'journee'
    3.je decremente ma variable 'absrepos'
    4.je fais une boucle avec si je trouve dans la colonne'journee "RP" alors
    a. j'edite
    b.je copie dans la colonne "journee" la variable ab ( RP) + absrepos
    c. je poste
    d. je decremente a nouveau
    5.je me met sur le premier enregistrement

    voila

Discussions similaires

  1. [Conception] formulaire et case à cocher et recherche dans une base de donnée
    Par olivier_1970 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 25/06/2006, 01h03
  2. [MySQL] Recherche dans une base de donnée [ Gros soucis ]
    Par milkasoprano dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 24/03/2006, 17h59
  3. problème de recherche dans une base de donnée mysql
    Par Xini28 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 24/10/2005, 18h00
  4. Recherche dans une base de donnée
    Par genova dans le forum SQLite
    Réponses: 8
    Dernier message: 28/09/2005, 23h16
  5. problème de recherche dans une base de données
    Par bouzid_mehdi dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/07/2005, 06h47

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