begin process at 2010 09 03 22:04:57
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de Donnees

 > LIER DEUX TDBGRID

LIER DEUX TDBGRID


 Information sur la source

Note :
Aucune note
Catégorie :Base de Donnees Classé sous :TDBGrid, requête SQL, paramètre, table, database Niveau :Débutant Date de création :18/09/2009 Date de mise à jour :20/09/2009 21:23:01 Vu / téléchargé :2 512 / 540

Auteur : cantador

Ecrire un message privé
Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Comme vous le savez, les bases de données envahissent notre quotidien
à la fois professionnel et privé
(gestion des affaires, des stocks, du personnel, des achats, de la santé, etc etc etc etc etc la liste est longue..)

Pour faire suite à une question récurrente sur le forum et
qui apparemment hante les journées de siahmedaek,
j'ai choisi de déposer ce tout petit exercice qui est plus à mon sens un
travail de configuration plus que de programmation mais qui reste toutefois bien utile.

Vous constaterez que losque vous vous déplacez dans le premier grid les enregistrements
correspondants s'affichent dans le deuxième.

Pour illustrer cet exemple, j'ai pris deux tables au hasard de la démo de Borland dans lesquels
j'ai trouvé deux champs identiques: OrderNo


Pour comprendre le montage, il suffit de bien observer l'ensemble des propriétés des 6 composants...



 Conclusion

un simple exercice de configuration permettant d'afficher les enregistrements de deux tables en liaison 1-N

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

19 septembre 2009 12:31:54 :
J'en ai profité pour répondre à une autre question : "comment détecter le changement d'enregistrement sur le premier grid et effectuer un test dans la foulée". tout se passe sur le OnDataChange le test affiche "ok" si la SaleDate est strictement inférieure à la ShipDate. Evidemment, ce montage laisse entrevoir de nombreuses applications beaucoup plus intéressantes que l'exemple fournit...
20 septembre 2009 20:36:28 :
Mise en place de la codification du paramétrage avec commentaires

 Sources du même auteur

Source avec Zip Source avec une capture DESKTOPICONFLYING
Source avec Zip Source avec une capture SIMPLEWEBBROWSER
Source avec Zip Source avec une capture AVATARS IN MADNESS
Source avec Zip Source avec une capture BACKUP RESTORE FIREBIRD OU INTERBASE
Source avec Zip Source avec une capture BONNE ANNEE !

 Sources de la même categorie

Source avec Zip TRANSFERT , INSERTION DE TABLES ENTRE EXCEL <--> ACCESS AVE... par yvessimon
Source avec Zip Source avec une capture MAGMANAGEMENT par christ91147
Source avec Zip Source avec une capture VIDÉOTHÈQUE V1.0.0 par Christophe67
Source avec Zip Source avec une capture ANNUAIRE V1.0.0 par Christophe67
Source avec Zip INTERBASE FIREBIRD IBEXPERT par opgiat

 Sources en rapport avec celle ci

Source avec Zip INTERBASE FIREBIRD IBEXPERT par opgiat
Source avec Zip CREE ALIAS AUTOMATIQUEMENT CREATION REPERTOIRE ET TABLE AUSI par opgiat
Source avec Zip CRÉE UN RÉPERTOIRE ET CRÉE CES TABLES PAR PROGRAMME par opgiat
Source avec Zip Source avec une capture IMAGE DANS UN TDBGRID par HAFTARIFOUAD
Source avec Zip ADO ET EXCEL COMME BASE DE DONNÉES par yvessimon

Commentaires et avis

Commentaire de cantador le 19/09/2009 12:34:13

Une petite modif qui étoffe un peu l'exercice..

Commentaire de Delphiprog le 20/09/2009 14:54:01 administrateur CS

Bonjour,

Dans cette partie du code :
# procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
# begin
# if Sender = nil then exit;
# if Field <> nil then exit;
# if Form1 = nil then exit;
# if StrToDateTime(Query1SaleDate.Text) < StrToDateTime(Query1ShipDate.Text) then
# ShowMessage('ok');
# end;

A quoi cela sert-il d'écrire :
if Form1 = nil then exit;
Si form1 vaut nil, c'est que la fiche est détruite, non ?
D'autre part, au lieu de form1 et pour que le code soit réutilisable par un copier/coller, il serait préférable d'écrire "if self = nil then...".

Pour que la démonstration soit encore plus parlante, il eût été préférable de réaliser la paramétrage des composants par le code ou alors de réaliser un tuto en parallèle puisque ce code s'adresse avant-tout à des débutants.

Commentaire de cantador le 20/09/2009 19:16:30

Oui delphiprog, ce code avait une portée générale...
le if form1 = Nil then exit doit avantageusement être remplacé par if self = nil then exit;
L'intérêt, comme tu le sais dans une souce complexe où il y a  beaucoup de formes (certaines non créées au démarrage) l'évènement OnDataChange se déclenchant de manière intempestive sur un certain nombre d'actions (notamment en cas de liaisons multiples entre plusieurs table), cette ligne protége d'une erreur.

Quant au paramétrage des composants, c'est effectivement une bonne idée..

Mais il faisait beau, et je me suis fais une petite balade en famille dans les bois.
Et j'aime beaucoup la nature.

cela me délasse et fait du bien..

Diable, delphiprog veille aux grains
Qu'on se le dise aux fonds des ports..

Mais cela dit, dès que je peux je comble le vide.

Cordialement

cantador

Commentaire de cantador le 21/09/2009 08:11:20

Voilà la modification est faite.
J'ai droit à la bise de delphiprog..

Commentaire de Delphiprog le 21/09/2009 08:23:30 administrateur CS

SSSsssssssssssssssssssmaaaaack  !

Néanmoins, le terme transtypage n'est pas approprié dans la dernière partie du code puisque ton code utilise le résultat de la propriété Text des champs.
Enfin, reconvertir en date une date convertie en chaine n'est pas une opération très performante. Je suis étonné que tu aies fait cela.

Commentaire de cantador le 21/09/2009 11:13:53

Les champs SaleDate et Shipdate (du moins chez moi) sont stockés au format texte et non au format date..
si l'on veut les comparer il faut les convertir..
Mais j'aurais pu simplifier en écrivant directement :
if Query1Saledate.asDateTime < Query1ShipDate.AsDateTime then

Mais faut avouer que le transtypage fait plus d'effet !

merci pour le Smaaaaaakkk !

cantador

Commentaire de Bacterius le 21/09/2009 13:35:45

Et n'y a-t-il pas moyen de les stocker au format date (ou Double, c'est la même chose) ? J'y connais rien en bases de données mais je sais qu'on est fin 2009 ...

Cordialement, Bacterius !

Commentaire de cantador le 21/09/2009 14:20:22

bien sûr que si bacterius, mais dans le cas présent, j'ai pris une table au hasard dans la démo de Borland et la table Orders stocke les deux dates en alphanumérique.

On peut tout à fait les modifier en date ou datetime..

Mais attention, certaines tables sont utilisées dans plusieurs démos et si on change le type des champs alors certains programmes vont planter.

C'est la raison pour laquelle, je n'ai pas modifié la nature de ces derniers.

cantador

Commentaire de lord948 le 27/09/2009 20:39:29

Bonjour,
le code ne fait que la selection, commment faire pour la mise à jour, l'insertion et la suppression.
Merci

Commentaire de cantador le 27/09/2009 21:50:16

@Lord948:

C'est une autre histoire...
dont le déroulement n'est pas l'objet de cet exercice..

cantador

Commentaire de MAURICIO le 28/09/2009 18:22:04

Salut Cantador,

j' ai hésité à poster un commentaire sur cette source...

En fait, c' est le titre qui n' est pas aproprié.
En fait, on fait une liaison d' un DataSet à un autre, les DbGrids ne faisant que montrer les enregistrements disponibles dans ces 2 DataSets via le DataSource.


Pour ce qui est de la source, il est louable de ta part de montrer aux débutants comment faire cela. Ce qui me chiffonne, c' est que sur DelphiFr il existe déjà de nombreux exemples dont des applis plus ou moins complètes et donc, tu as perdu ton temps pour des gens qui ne veulent pas perdre le leur dans une recherche.
Ouai, c' est un coup de gueule! Pas contre toi mais pour ceux qui même avec la nourriture dans leur assiette, il faut encore que quelqu' un leur mette la bouffe à la bouche.

A+

Free Cindy components at http://sourceforge.net/projects/tcycomponents/

Commentaire de cantador le 28/09/2009 22:25:29

Salut Mauricio,

ça fait plaisir que tu viens nous voir de temps en temps...
et de plus pour me passer un savon !

Pour ce qui est de l'exercice tu as certainement raison quelque part..

mais je n'ai pas fini..
je vais lui en rajouter une couche !

patience..
ça va être terrible(lol)

cantador

Commentaire de MAURICIO le 29/09/2009 10:35:26

Salut Cantador,

j' ai bien précisé que mon coup de gueule n' était pas contre toi, loin de là.

Je viens vous voir assez souvent, même si je reste "muet". Je suis content de voir que certains membres sont très actifs comme toi.

Pour ma part, je bosse surtout sur mes compos qui sont mis à jour très régulièrement et que tu trouveras ici:
http://www.delphifr.com/codes/COMPOS-TCYCOMPONENTS-V2-211-TESTE-SUR-D7-D2009_49709.aspx
http://sourceforge.net/projects/tcycomponents/
D' ailleurs, je vous prépare une surprise qui devrait sortir cette semaine.

Je me suis un peu lassé de certaines choses décourageantes (d' oú mon coup de gueule) et donc, je ne contribue qu' avec mes compos qui ne serviront qu' à ceux qui se donneront vraiment la peine de vouloir apprendre. Moi même j' ai appris grâce à d' autres compos gratuits comme JEDI ou Indy.

A+


Commentaire de mark15 le 29/09/2009 13:35:57

merci pour cette exemple

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

[débutant] problème affichage données table ds TDBGrid [ par lidouka ] bjr &#224; tous. je voudrais afficher les donn&#233;es d'une table ds un TDBGrid via une proc&#233;dure stock&#233;e. la proc&#233;dure marche bien erreur : duplicatat database name [ par samsih ] salut à tous j'ai crée une base de donnée sous oracle et j'ai fait une connection via delphi avec BDE toous va bien jusque là le contenu de la premier Outils ADO [ par le zedi ] Voila je travail sur une table SQL Server 2000 et je doit donc aller voir des enregistrements avec Delphi :ADOTableSite.Close;ADOTableSite.TableName : problème développement stage [ par Rankin ] Salut, je viens de commencer un stage où je dois développer une application de gestion, et là j'ai (déjà) un problème. Comment utilise-t-on une DBComb "Une colonne non BLOB dans la table est necessaire pou effectuer l'opération" [ par nesbla ] Bonjour, j'ai une fiche avec quelques composants dont un DBMemo qui est relié à un champs BLOB dans ma base de donnée Oracle 8. Lors de l'utilisation console et database [ par mouhalc ] bonjour je reprend un message posté sur le forum je n'ai pas vu la réponse et j'ai le même problème si quelqu'un peut m'aider?Peut-on utiliser les com isEmpty [ par jimmy69 ] Salut salut,Voila j'i un p'tit stress j'espre que certains pourront m'aider ....Voila je me sers de ado d6 et sql serveur je lsite ma table ds un dbgr SQL ET Relation entre table !! PLEASE HELP !!!!!! [ par benumiit82 ] Bonjour, Je vais représenter le problème simplement : imaginons une base de données, avec deux tables. Une étant "Etudiant" et l'autre "CoursSuiviParE MEGA URGENT réindexation table paradox [ par Mawie ] bonjour,j'ai un pb super urgent!!!!un client a le message d'erreur suivant:"La table 002 n'a pas d'index pour le champ titre, index endommagé."Quelqu'


Nos sponsors


Sondage...

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales