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

WinDev Discussion :

Modifier une ligne à partir de ma table dans ma BDD


Sujet :

WinDev

  1. #1
    Membre du Club
    Femme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 84
    Points : 49
    Points
    49
    Par défaut Modifier une ligne à partir de ma table dans ma BDD
    Bonjour,

    J'ai un tableau dans lequel je modifie ou non des informations.
    J'ai une colonne présente dans ma table et dans ma bdd qui est différente de 0 si la valeur existe dans ma bdd.

    Par exemple :

    J'ai ma table, dedans j'ai le nom du fournisseur (colonne fournisseur), le nom du commercial (colonne commercial), le produit qu'il me vend (article),
    la colonne qui m'indique la présence ou non de la ligne dans ma bdd (colonne IDPRESENCE non visible par l'utilisateur).

    Quand je fais une recherche (toujours par code fournisseur),j'entre mon code fournisseur.
    Apparaît ensuite dans mon tableau toutes les lignes comportant le code fournisseur. les valeurs dans la colonne IDPRESENCE sont différente de 0 si elles existent dans ma bdd,
    Sinon elles sont égales à 0 si elles n'existent pas dans ma bdd.

    Quand je clic sur enregistrer, que j'ai inséré une nouvelle ligne ou que j'ai modifié une ligne, les informations des différentes lignes se mélanges.


    Je vous joins 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
    HLitRecherchePremier(MaBase,CodeFrs,CodeFrs) //Je recherche dans ma base le codeFrs
    POUR i = 1 A Nb //i = 1 au nombre de ligne
    SI HTrouve(MaBase) ALORS //Si je trouve le codeFrs dans ma base
     SI Table.IDPRESENCE[i]=0 ALORS //Si c'est une nouvelle ligne
      HRAZ(MaBase)
      MaBase.Frs = Table.Fournisseur[i]
      MaBase.com = Table.Comercial[i]
      MaBase.Art = Table.Article[i]
      HAjoute(MaBase)
    SINON SI Table.IDPRESENCE[i]<>0 ALORS //Si je modifie une ligne existante
    HLitRecherchePremier(MaBase,IDPRESENCE,IDPRESENCE)
    Si HTrouve(MaBase) Alors
     MaBase.Frs = Table.Fournisseur[i]
      MaBase.com = Table.Comercial[i]
      MaBase.Art = Table.Article[i]
      HModifie(MaBase)
    FIN
    FIN
    FIN
    Merci pour votre aide.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Il y a pas mal de choses à dire sur ce code...
    La recherche sur CodeFrs est en dehors de la boucle, donc elle n'est faite qu'une seule fois.
    De plus, si tu ne trouves pas d'enregistrement avec cette recherche, que fait le code ? Rien, il passe à la ligne suivante.
    Et à quoi bon faire une recherche dans la base, si tu sais d'avance qu'il s'agit d'une nouvelle ligne ?

    Tu testes si Table.IDPRESENCE[i]=0, et dans le sinon tu vérifie si Table.IDPRESENCE[i]<>0. S'il la colonne n'est pas égale à 0, elle est forcément différente de 0, le deuxième test ne sert à rien.

    Si tu veux voir précisément ce qu'il se passe, tu peux poser un point d'arrêt sur la première ligne, puis avancer pas à pas dans le code.

    Tatayo.

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 054
    Points : 9 394
    Points
    9 394
    Par défaut
    En ligne 1 , tu recherche dans le fichier MaBase s'il existe une ligne avec une certaine valeur. Laquelle, on ne sait pas.

    Puis tu commences une boucle.
    Et en ligne 3, tu testes si la dernière recherche effectuée a permis de trouver une ligne, ou pas.
    Et selon le résultat, tu fais un certain traitement.

    Donc, vers le milieu de ta boucle, quand tu rentres ici pour i =10 par exemple, ton traitement va dépendre de ce qui s'est passé quand tu traitais la ligne i=9.

    Autre conseil : utilise la réindentation automatique pour afficher le code ( Menu Code, Réindentation)
    Ca permet de rendre le code lisible. Un code non indenté, c'est compliqué à comprendre, même pour un programmeur expérimenté.

    Et dernière question : Comment est gérée la colonne IdPrésence. C'est un identifiant automatique ?
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  4. #4
    Membre du Club
    Femme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 84
    Points : 49
    Points
    49
    Par défaut
    Bonjour et merci pour vos réponses.

    J'ai besoin de ne trouver mon CodeFrs qu'une fois. une fois que je l'ai trouvé je cherche le IDPRESENCE.

    Donc, vers le milieu de ta boucle, quand tu rentres ici pour i =10 par exemple, ton traitement va dépendre de ce qui s'est passé quand tu traitais la ligne i=9.
    Evidemment ce n'est pas du tout ce que je recherche...

    Merci pour le conseil, je ne savais pas qu'on pouvait faire ceci pour indenter.

    Ma colonne IDPRESENCE est en effet un identifiant automatique dans ma bdd.

    J'ai posé un point d'arrêt le codeFrs est bon, mon IDPRESENCE est bon mais pas mon Numéro d'enregistrement.
    Mais je ne sais pas comment cela se fait...

  5. #5
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 054
    Points : 9 394
    Points
    9 394
    Par défaut
    Tu dis que le n° d'enregistrement n'est pas bon. Mais dans le code que tu présentes, et dans les explications que tu donnais au départ, il n'y a rien sur ce n° d'enregistrement !!!

    On ne peut rien faire pour toi.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Si tu fais une première recherche sur une rubrique, puis une deuxième recherche sur une deuxième, la première recherche ne sert à rien.
    Elle ne sera pas prise en compte pour la deuxième.
    Il faut faire une recherche sur les deux rubriques en même temps, ou poser un filtre sur le fichier, puis faire ta recherche.

    Tatayo.

Discussions similaires

  1. [WD14] Rendre modifiable une ligne d'un champ table
    Par willytito dans le forum WinDev
    Réponses: 3
    Dernier message: 13/09/2010, 15h05
  2. Insérer une ligne d'un fichier texte dans une table
    Par Atemi76 dans le forum Administration
    Réponses: 1
    Dernier message: 10/07/2007, 17h32
  3. Réponses: 9
    Dernier message: 19/09/2006, 19h27
  4. Modifier une ligne dans stdout
    Par getupa dans le forum Général Python
    Réponses: 2
    Dernier message: 21/12/2005, 18h18
  5. Comment faire pour modifier une ligne dans une DBGrid?
    Par Nico62 dans le forum C++Builder
    Réponses: 6
    Dernier message: 29/03/2005, 12h24

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