DELPHI 6 : comment mettre à blanc un ...
Fermé
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
-
28 mars 2002 à 22:06
Utilisateur anonyme - 12 févr. 2008 à 14:46
Utilisateur anonyme - 12 févr. 2008 à 14:46
A voir également:
- DELPHI 6 : comment mettre à blanc un ...
- Telecharger delphi 7 - Télécharger - Langages
- Gta 6 prix - Accueil - Jeu vidéo
- Nero 6 - Télécharger - Gravure
- Fitbit charge 6 test - Accueil - Montres
- Geekom as 6 - Accueil - Guide ordinateurs
5 réponses
alicia_3107
Messages postés
4546
Date d'inscription
lundi 8 octobre 2001
Statut
Membre
Dernière intervention
17 février 2015
6
29 mars 2002 à 11:23
29 mars 2002 à 11:23
>Par contre si la clé saisie ne correspond à aucun enregistrement >je désire que tous les champs soient mis à blanc.
Tu sais bien que des composants (TDBEdit ou TDBGrid) liés à une table PARADOX ne font qu'afficher le contenu de la table en question (table à laquelle ils sont liés).
Désirer avoir des champs blanc c'est faire en sorte de les créer ces champs blanc !
Je ne sais pas si j'ai bien compris ton problème, mais je suppose que lorsque tu saisi une clef non existante dans le composant standard tu voudrais insérer un nouvel enregistrement ! si c'est ça que tu veux alors c'est simple, il suffit d'utiliser la fonction
ta_table.insert;
ta_table.fieldbyname('le_champ_clef').asstring := edit1.text;
ta_table.post;
et pour faire apparaître les champs blanc, il suffit de pointer sur l'enregistrement qui vient d'être ajouté en utilisant
ta_table.locate('le_champ_clef', edit1.text, []);
Je ne suis pas trés sûr que c'est cela que tu veux vraiment, alors précise si j'ai pas bien compris
</alicia_3107>
Tu sais bien que des composants (TDBEdit ou TDBGrid) liés à une table PARADOX ne font qu'afficher le contenu de la table en question (table à laquelle ils sont liés).
Désirer avoir des champs blanc c'est faire en sorte de les créer ces champs blanc !
Je ne sais pas si j'ai bien compris ton problème, mais je suppose que lorsque tu saisi une clef non existante dans le composant standard tu voudrais insérer un nouvel enregistrement ! si c'est ça que tu veux alors c'est simple, il suffit d'utiliser la fonction
ta_table.insert;
ta_table.fieldbyname('le_champ_clef').asstring := edit1.text;
ta_table.post;
et pour faire apparaître les champs blanc, il suffit de pointer sur l'enregistrement qui vient d'être ajouté en utilisant
ta_table.locate('le_champ_clef', edit1.text, []);
Je ne suis pas trés sûr que c'est cela que tu veux vraiment, alors précise si j'ai pas bien compris
</alicia_3107>
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
606
29 mars 2002 à 12:27
29 mars 2002 à 12:27
Bjr Alicia,
Bien sûr avec un insert on arrive à détourner une partie du pb.
Cependant lorsque ma table est en lecture seule je ne vois pas pourquoi j'irais ajouter un enregistrement.
En fait au-delà de ce petit exemple, ce que j'essais de faire c'est une relation maître/détail mais je ne veux pas utiliser les propriétés MasterSource et MasterField car :
1) Ca plante souvent j'ai des erreurs du type "stack overflow"
Faut "casser" la relation lorsqu'on souhaite parcourir la table esclave de A à Z
2) Je compte passer sur MySql avec dbExpress et les relations maîtres/détails n'existent pas avec ce type d'objet.
Prenons un ex si j'ai une table CLIENT et une table COMMANDE si j'établis une relation maître/détail de type 0-N, lorsque je sélectionne un client qui n'a passé aucune cde, la liste des commandes reste vide.
Maintenant comment faire sans mettre en place une relation maître/détail ?
Autre question : comment faire dans un TListView pour permettre à l'utilisateur de modifier l'ordre des colonnes à sa guise (comme dans l'explorateur de Windows) ?
Dernière question : comment faire pour simuler un TDBListView ?
Si je dérive un composant TListView en TDBListView et que je lui ajoute une propriété de type TDataSet (entres autres) comment faire pour que le TDataSet informe (sous la forme d'une notification je suppose) mon TDBListView de tous les changements qui peuvent intervenir ?
Merci encore de m'avoir répondu ;:-)
@+
Philippe
[[ The Truth is Out There ]]
Bien sûr avec un insert on arrive à détourner une partie du pb.
Cependant lorsque ma table est en lecture seule je ne vois pas pourquoi j'irais ajouter un enregistrement.
En fait au-delà de ce petit exemple, ce que j'essais de faire c'est une relation maître/détail mais je ne veux pas utiliser les propriétés MasterSource et MasterField car :
1) Ca plante souvent j'ai des erreurs du type "stack overflow"
Faut "casser" la relation lorsqu'on souhaite parcourir la table esclave de A à Z
2) Je compte passer sur MySql avec dbExpress et les relations maîtres/détails n'existent pas avec ce type d'objet.
Prenons un ex si j'ai une table CLIENT et une table COMMANDE si j'établis une relation maître/détail de type 0-N, lorsque je sélectionne un client qui n'a passé aucune cde, la liste des commandes reste vide.
Maintenant comment faire sans mettre en place une relation maître/détail ?
Autre question : comment faire dans un TListView pour permettre à l'utilisateur de modifier l'ordre des colonnes à sa guise (comme dans l'explorateur de Windows) ?
Dernière question : comment faire pour simuler un TDBListView ?
Si je dérive un composant TListView en TDBListView et que je lui ajoute une propriété de type TDataSet (entres autres) comment faire pour que le TDataSet informe (sous la forme d'une notification je suppose) mon TDBListView de tous les changements qui peuvent intervenir ?
Merci encore de m'avoir répondu ;:-)
@+
Philippe
[[ The Truth is Out There ]]
alicia_3107
Messages postés
4546
Date d'inscription
lundi 8 octobre 2001
Statut
Membre
Dernière intervention
17 février 2015
6
29 mars 2002 à 14:27
29 mars 2002 à 14:27
AH D'accord. J'ai compris ton problème. TROP FACILE.
J'ai la solution, mais comme là je n'ai pas beaucoup de temps je te répond ce soir PROMI.
</alicia_3107>
J'ai la solution, mais comme là je n'ai pas beaucoup de temps je te répond ce soir PROMI.
</alicia_3107>
alicia_3107
Messages postés
4546
Date d'inscription
lundi 8 octobre 2001
Statut
Membre
Dernière intervention
17 février 2015
6
30 mars 2002 à 07:30
30 mars 2002 à 07:30
Bonsoir PhiliPPe !
. En ce qui concerne la relation maître-détail il existe une solution trés simple et trés efficace : Tu dois exécuter un "filtre" de la table "détail" lors de l'évènement AfterScroll de la table "maître".
Je m'explique ...
Supposons que tu as une table contenant la liste des CLIENTS et une table de COMMANDES. Chaque client peut en effet passer plusieurs commandes et tu voudrais afficher pour chaque CLIENT la liste de SES COMMANDES UNIQUEMENT.
Tu procèdes comme suit
----------------------------------------------------------------------------
procedure TForm1.Table_des_clientsAfterScroll(DataSet: TDataSet);
begin
Table_des_commandes.filter = 'code_client = '''+Table_des_clients.FieldByName('code_client').AsString+''' ';
Table_des_commandes.filtered := True;
end;
----------------------------------------------------------------------------
. Quand à des deux autres problème, je suggère que tu utilise le composant TDBGRID à la place de TVIEWLIST, car non seulement TDBGRID affichera une liste de ce que tu veux, mais il permet à l'utilisateur de changer l'ordre des colonnes et il est relié à une table de BDD, un simple table.refresh est une notification qui permet au DGGRID d'afficher les dernières mises à jours de la table. En plus si tu vas dans la propriété OPTIONS de DBGRID, tu pourras changer l'apparence de ton DBGRID (il pourra ressembler à un TLISTVIEW).
Voilà, j'espère que j'ai répondu à tes questions, sinon tu me fais signe. Je sais que c'était prévu que je te réponde hier, mais j'étais crevée et y avait des coupures d'élèctricité répétées qui m'ont découragée :o)))))))
Bonne journée à tous
</alicia_3107>
. En ce qui concerne la relation maître-détail il existe une solution trés simple et trés efficace : Tu dois exécuter un "filtre" de la table "détail" lors de l'évènement AfterScroll de la table "maître".
Je m'explique ...
Supposons que tu as une table contenant la liste des CLIENTS et une table de COMMANDES. Chaque client peut en effet passer plusieurs commandes et tu voudrais afficher pour chaque CLIENT la liste de SES COMMANDES UNIQUEMENT.
Tu procèdes comme suit
----------------------------------------------------------------------------
procedure TForm1.Table_des_clientsAfterScroll(DataSet: TDataSet);
begin
Table_des_commandes.filter = 'code_client = '''+Table_des_clients.FieldByName('code_client').AsString+''' ';
Table_des_commandes.filtered := True;
end;
----------------------------------------------------------------------------
. Quand à des deux autres problème, je suggère que tu utilise le composant TDBGRID à la place de TVIEWLIST, car non seulement TDBGRID affichera une liste de ce que tu veux, mais il permet à l'utilisateur de changer l'ordre des colonnes et il est relié à une table de BDD, un simple table.refresh est une notification qui permet au DGGRID d'afficher les dernières mises à jours de la table. En plus si tu vas dans la propriété OPTIONS de DBGRID, tu pourras changer l'apparence de ton DBGRID (il pourra ressembler à un TLISTVIEW).
Voilà, j'espère que j'ai répondu à tes questions, sinon tu me fais signe. Je sais que c'était prévu que je te réponde hier, mais j'étais crevée et y avait des coupures d'élèctricité répétées qui m'ont découragée :o)))))))
Bonne journée à tous
</alicia_3107>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
12 févr. 2008 à 14:46
12 févr. 2008 à 14:46
Bonjour,
merci d'aller voir sur cette convers. et de m'aider si possible
bonne journée
merci d'aller voir sur cette convers. et de m'aider si possible
bonne journée