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 :

POST à partir de plusieurs Edits


Sujet :

Bases de données Delphi

  1. #1
    Membre confirmé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Février 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 537
    Points : 460
    Points
    460
    Par défaut POST à partir de plusieurs Edits
    Bonsoir,
    Je remplis plusieurs Edits à partir d'une base de donnée de la manière suivante:

    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
    with Form1.AdoQuery1 do
          begin
             SQL.Clear;
             SQL.Add('SELECT*FROM "EssaiTable"');
             ExecSQL;
             Active := True;
          end;
     
          for i := 1 to 5 do
          begin
             essai[i] := (ADOquery1.FieldByName('PERSO').Value);
             ADOQuery1.Next;
     
              Edit1.Text := essai[1];
              Edit2.Text := essai[2];
              Edit3.Text := essai[3];
              Edit4.Text := essai[4];
              Edit5.Text := essai[5];
     
          end;
    Cela fonctionne très bien mais le problème que je rencontre, c'est que je ne sais pas comment modifier la base de donnée si un utilisateur à modifié le texte de l'un de ces Edit.

    Des idées seraient le bien venu...

    Merci d'avance,
    André
    Ils ne savaient pas que c'était impossible, alors ils l'ont fait !

  2. #2
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Regarde du coté du DBEdit (onglet ContrôleDB).

    Citation Envoyé par Aide Delphi
    Description

    Utilisez TDBEdit pour permettre aux utilisateurs de modifier un champ de base de données.TDBEdit utilise la propriétéText pour représenter le contenu du champ.

    TDBEdit ne permet la saisie que d'une seule ligne de texte.Si un champ peut contenir des données volumineuses nécessitant plusieurs lignes,utilisez un objet TDBMemo.

    Si votre application n'a pas besoin de l'orientation données de la classe TDBEdit,utilisez plutôt un contrôle de saisie (TEdit)ou un contrôle de saisie masqué(TMaskEdit)plus économe en ressources système.

    Pour fournir un masque restreignant la saisie et contrôlant le format d'affichage des données,utilisez les propriétés relatives au masque de TField et ses descendants.Ces propriétés comprennent :EditMask(TField),DisplayFormat(TDateTimeField)et DisplayFormat(TNumericField).La propriétéque vous devez utiliser dépend du
    type de champ et du descendant TField correspondant àce type.
    A+

  3. #3
    Membre émérite 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
    Points : 2 771
    Points
    2 771
    Par défaut
    il y a un example avec delphi:
    C:\Program Files\Borland\Delphi6\Demos\Ado\AdoTest
    si votre version ne contient pas cette example; je peut le posté
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  4. #4
    Membre confirmé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Février 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 537
    Points : 460
    Points
    460
    Par défaut
    Merci pour vos réponses.
    edam, je veux bien cet exemple car je ne le possede pas.

    André
    Ils ne savaient pas que c'était impossible, alors ils l'ont fait !

  5. #5
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut Dédé
    Une remarque en passant avant qu'Edam ne te donne plus d'infos.

    Citation Envoyé par andreditdd Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    with Form1.AdoQuery1 do
          begin
             SQL.Clear;
             SQL.Add('SELECT*FROM "EssaiTable"');
             //ExecSQL;
             Active := True;
          end;
    Dans le principe c'est soit un ExecSQL ou un Active := True (ou Open).
    Si c'est une requête Select alors on utilise un Open. Sinon, dans le cas d'une requête action (Update, Insert ou Delete) on utilise un ExecSQL.
    Mais de toute façon pas les deux.

    @+ Claudius.

  6. #6
    Membre émérite 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
    Points : 2 771
    Points
    2 771
    Par défaut
    ATTENTION!, c'est vraiment trés avancé
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  7. #7
    Membre confirmé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Février 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 537
    Points : 460
    Points
    460
    Par défaut
    Bonjour,
    Cl@udius, merci pour ta correction, tu as tout à fait raison...
    edam, merci pour le zip... Effectivement c'est pô pour rigolos.
    Mais j'en suis toujours au meme point: je voudrais avoir chaque ligne d'une colonne (bdd) dans un Edit ou DBEdit différent et pouvoir les modifier.

    André
    Ils ne savaient pas que c'était impossible, alors ils l'ont fait !

  8. #8
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    1- Tu poses un composant DataSource
    2- Tu lies le composant DataSource à ton Adoquery
    3- Dans ton AdoQuery tu vas mettre une requete sur la table EssaiTable qui retourne rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Select * from EssaiTable
    Where Un_champ_numérique_de_la_table = 0
    C'est pour avoir la liste des champs surtout et éviter de charger l'intégralité de la table.

    4- Tu actives ton Adoquery (en passant sa propriété Active à True dans l'inspecteur d'objet)
    Dans le cas d'une erreur, il te faut trouver une requete correcte mais qui retourne 0 enregistrement
    5- Tu déposes 5 DbEdit que tu vas lier via la propriété Datasource au DataSource que tu as posé
    6- Tu sélectionnes dans DataFiled le nom du champ que tu veux afficher dans le DbEdit
    7- Tu peux faire la même chose qu'en 5 et 6 avec un DbGrid afin de pouvoir te déplacer dans ta requete plus facilement.
    8- Tu passes la propriété Active de l'Adoquery à False
    9- Tu crées 4 boutons sur ta feuille (c'est surtout pour l'exemple) et tu mets les codes suivants

    Pour l'ouverture de la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    with Form1.AdoQuery1 do
    begin
      SQL.Clear;
      SQL.Add('SELECT*FROM "EssaiTable"');
      Open;
    end;
    Pour la fermeture de la requete

    Pour valider une modification

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    With Adoquery1 do
    begin
      if State in [dsInsert,dsEdit] then
        Post;
    end;
    Pour annuler une modification
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    With Adoquery1 do
    begin
      if State in [dsInsert,dsEdit] then
        Cancel;
    end;
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  9. #9
    Membre émérite 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
    Points : 2 771
    Points
    2 771
    Par défaut
    Citation Envoyé par andreditdd Voir le message
    Mais j'en suis toujours au meme point: je voudrais avoir chaque ligne d'une colonne (bdd) dans un Edit ou DBEdit différent et pouvoir les modifier.

    André
    2 solution, 1érebgrid avec un seul colone
    2 éme
    Référence VCL
    TDBCtrlGrid

    Hiérarchie Propriétés Méthodes Evénements Utilisation TDBCtrlGrid Voir aussi

    TDBCtrlGrid permet d'afficher les enregistrements d'une source de données en utilisant une disposition de fiche libre.

    Unité

    DBCGrids

    Description

    Placez un objet TDBCtrlGrid dans une fiche pour afficher et modifier les enregistrements d'une table de base de données ou d'une requête. A la différence de l'objet TDBGrid qui affiche chaque enregistrement sur une seule ligne, TDBCtrlGrid permet d'utiliser une disposition de fiche pour tous les enregistrements de l'ensemble de données. Chaque enregistrement est affiché dans son propre volet : il suffit à la conception de créer un volet et TDBCtrlGrid duplique ce volet pour chaque enregistrement affiché.

    A l'exécution, les utilisateurs peuvent utiliser le navigateur de base de données (TDBNavigator) pour parcourir les données dans l'objet TDBCtrlGrid, et insérer, supprimer ou modifier les données. Les modifications effectuées en utilisant la grille de données ne sont transmises que lorsque l'utilisateur passe à un autre enregistrement ou ferme l'application.
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  10. #10
    Membre confirmé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Février 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 537
    Points : 460
    Points
    460
    Par défaut
    Re Merci,
    Rayek, j'ai déja essayé cette solution mais tous mes DBEdit indiquent la meme valeur et donc ne parcourent pas la colonne.

    André
    Ils ne savaient pas que c'était impossible, alors ils l'ont fait !

  11. #11
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par andreditdd Voir le message
    Re Merci,
    Rayek, j'ai déja essayé cette solution mais tous mes DBEdit indiquent la meme valeur et donc ne parcourent pas la colonne.

    André
    Utilise un DbGrid + un DbEdit.
    Le DbGrid te permettra d'afficher la liste et le DBedit permettra de modifier l'enregitrement en cours
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  12. #12
    Membre confirmé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Février 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 537
    Points : 460
    Points
    460
    Par défaut
    Merci,
    je voulais éviter cette solution pour des questions d'interface et de connaissance informatique du public concerné.

    André
    Ils ne savaient pas que c'était impossible, alors ils l'ont fait !

  13. #13
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par andreditdd Voir le message
    Merci,
    je voulais éviter cette solution pour des questions d'interface et de connaissance informatique du public concerné.

    André
    Alors il faudrait peut être revoir le focntionnement et la structure de la base.
    Si le nombre de champ est statique (pas plus de 5) alors autant mettre les informations dans plusieurs colonnes dans un seul enregistrement (plus simple a gérer)

    Peux tu nous en dire plus sur ce que tu veux faire ?
    Voir, nous montrer la structure de tes tables ?
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

Discussions similaires

  1. Réponses: 10
    Dernier message: 22/04/2009, 23h24
  2. Crée image à partir de plusieurs Timage
    Par spikto dans le forum Composants VCL
    Réponses: 2
    Dernier message: 09/08/2005, 14h38
  3. Drag and Drop vers plusieurs Edit
    Par greg778 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 30/05/2005, 08h50
  4. [ImageMagick] Générer une image à partir de plusieurs images ?
    Par fichtre! dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 16/02/2005, 15h32
  5. [SUM] récuperer une quantite a partir de plusieurs table
    Par Snowballz dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 14/09/2004, 18h48

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