ACCESS AVEC TADOTABLE (BASE DE DONNÉES)

elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 - 15 sept. 2005 à 18:34
donkeyz Messages postés 4 Date d'inscription jeudi 21 octobre 2004 Statut Membre Dernière intervention 12 novembre 2009 - 12 nov. 2009 à 09:30
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/29348-access-avec-tadotable-base-de-donnees

donkeyz Messages postés 4 Date d'inscription jeudi 21 octobre 2004 Statut Membre Dernière intervention 12 novembre 2009
12 nov. 2009 à 09:30
Bonjour,
comment faites-vous pour insérer une image dans la mdb ?
Si je le fait, sa m'apparait sous forme Package et non Donnée binaire
puis delphi ne peut l'appeler.
Aider-moi s.v.p
lord948 Messages postés 34 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 19 mai 2009
29 déc. 2008 à 14:30
Bonjour.
J'aimerai savoir si c'est prossible de crée une relation en les tables access avec le compo TADOCommand(SQL), et comment les utliser sous delphi
Merci.
cs_JackNUMBER Messages postés 233 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 26 juin 2011 5
22 déc. 2007 à 10:52
superbe source !!
dommage que l'on puisse rechercher que par le code (ici du fournisseur).

merci beaucoup !
cs_mcapp Messages postés 71 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 15 décembre 2011
21 avril 2006 à 22:34
Merci Mauricio pour ton aide !
Mais, je ne suis que débutant et hélas je dois avouer que je n'ai pas trouvé comment appeler cette fonction.
Je l'ai placée dans le code avant la procédure TFich.FormCloseQuery(Sender: TObject; var CanClose: Boolean );
Quelle ligne écrire dans la procédure pour qu'elle utilise la fonction ?
A+
cs_mcapp Messages postés 71 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 15 décembre 2011
21 avril 2006 à 13:44
Salut Mauricio,
Merci pour tes conseils !
Dans le code, on a :

confirmation := MessageDlg('Désirez-vous enregistrer les modifications',
mtConfirmation, [mbYes, mbNo, mbAbort], 0);

Je ne trouve pas ces 3 composants button dans le message de dialogue.
Comment puis-je modifier le texte du bouton mbAbort pour remplacer "Abandonner" par "Ne pas fermer" par exemple ?
Merci !
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
19 avril 2006 à 11:49
Salut MCAPP,
ce que tu veux faire est très simple:
-Tu mets la table en edit mode
-Tu ouvres en ShowModal la 2eme form
-En fermant en cliquant sur un bouton Ok tu fais le Post de la table ou Cancel si l' utilisateur clique sur un bouton annuler.

Remarque: n' utilise pas de TEdit mais les TDBEdit :)
A+
cs_mcapp Messages postés 71 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 15 décembre 2011
19 avril 2006 à 01:30
Excuse-moi !
Je viens d'avancer dans ma réflexion en étudiant encore davantage ton projet.
Je pense qu'il me suffira d'insérer une requête sur le formulaire
puis de placer des TEdit comme pour N°tel sur ton projet ainsi que la TDBImage.
Je vais étudier ensuite l'utisation de tes procédures pour lire la table ou enregistrer les changements dans la table.
Tu peux me confirmer que je suis "sur la bonne voie ?"
Merci !
cs_mcapp Messages postés 71 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 15 décembre 2011
19 avril 2006 à 00:55
Source très intéressante !
J'ai beaucoup de plaisir à l'étudier !
Mais je me demande s'il me sera possible d'aboutir à un projet un peu différent dans lequel la modification de champ d'un enregistrement se ferait en cliquant sur cet enregistrement ce qui amène ouverture d'une nouvelle Unit ("formulaire") que l'on complète pour les modifier.
Ensuite, à la fermeture du formulaire, la table est mise à jour.
J'ai déjà fait un projet de ce type qui fonctionne bien, mais sans insertion possible d'un champ image avec un TBDImage.
Je voudrais donc partir de ton projet (avec TDBImage) mais utiliser l'ouverture d'un 2ème Unit ("formulaire") pour enregistrer ou modifier un enregistrement (avec champ Photo visible aussi sur ce formulaire).
Penses-tu que ce soit envisageable ?
Merci et Félicitations pour vos compétences à vous, les "Grands animateurs" de ce site !
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
3 févr. 2006 à 10:18
Bem oui ça marche mais le problème c' est que c' est un bitmap qui est gardé dans la base de données ...

Pour la photo tu peux jouer avec la propriété Stretch ou encore redimensionner ton DBImage :
DBImage.Width := DBImg.Picture.Bitmap.Width;
DBImage.Height := DBImg.Picture.Bitmap.Height;
A+
NetFree Messages postés 24 Date d'inscription dimanche 30 janvier 2005 Statut Membre Dernière intervention 2 février 2006
2 févr. 2006 à 20:54
J'ai encore oublier.... tu sais comment faire pour mettre la taile de la photo la grandeur du DBImg ??? pcq la ma photo est trop grande..

merci
NetFree Messages postés 24 Date d'inscription dimanche 30 janvier 2005 Statut Membre Dernière intervention 2 février 2006
2 févr. 2006 à 20:53
ok .. jai trouver pour le jpeg mais jai pas trouver pour faire une recherche... tu serais pas comment?

pour le jpeg:
tu met le use "jpeg"
tu met deux Timage avec un: image1 et lautre image2
tu met la valeur visible a false
et tu me le code :

procedure TFrmPrin.SBAssignPhotoClick(Sender: TObject);
begin
If OpenPictureDialog1.Execute
Then
Try
image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
Image2.Picture.Bitmap.Assign(Image1.Picture.Graphic);

DMA.ADOClients.Edit;
DBImg.Picture := image2.Picture;
DMA.ADOClients.Post;
Except
ShowMessage('Registre actuellement en edition !');
End;
end;


voila, moi sa marche... masi pas le recherche :(
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
2 févr. 2006 à 10:11
Non désolé, je ne sais pas comment faire pour garder des jpgs ...

Moi aussi j'en aurais besoin si quelqu' un sait comment faire!
A+
NetFree Messages postés 24 Date d'inscription dimanche 30 janvier 2005 Statut Membre Dernière intervention 2 février 2006
2 févr. 2006 à 00:43
J'ai oublier, il est possible de faire une rechrcher... example; on tape un # et sa va a sa numero dans le champs "cod"

merci encore
NetFree Messages postés 24 Date d'inscription dimanche 30 janvier 2005 Statut Membre Dernière intervention 2 février 2006
2 févr. 2006 à 00:41
salut, jai pris example sur ta source pour faire un programme de gestion de photo mais, on ne peux pas mettre dimage en format .jpg ... Tu serais comment règler se probleme?

merci
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
22 sept. 2005 à 19:30
Pour les clés etrangères niquel... pour les tables de jointures çà me plante tout...

En gros j'ai çà :

---------- ------------ --------------
| FILM | | FILM_ACT | | ACTEUR |
---------- ------------ --------------
|#ID_FILM|---------------|#ID_FILM | |-------|#ID_ACTEUR |
| | |#ID_ACTEUR|-------| | NOM_ACTEUR |
| ... | | | | |
---------- ------------ --------------

=> Et je voudrai recupérer tous les acteurs d'un film !


Mais bon j'vais essayé de me demerder un peu tout seul car j'doit te saouler là :-)

en tout cas tu ma déja bcp aidé !!!

Merci encore.

Damien
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
19 sept. 2005 à 11:40
Les calculated fields te permettent de préciser la valeur de tes champs dans l' événement OnCalcFields de la table. Imagine que tu as une table avec les champs QTD et VALEUR_UNITAIRE. Alors tu peux créer un Champ de type CalcField de nom TOTAL et de type Float. Ce champ n' est donc pas gardé dans la table physiquement puisqu' il n' existe pas mais pourra être visualisé avec sa valeur correcte gràce à l' evenement OnCalcField :
Table1TOTAL.Value := Table1QTD.Value * Table1VALEUR_UNITAIRE.Value;

Les champs lookup sont des champs qui vont chercher leur valeur sur une autre table. C' est très facile à utiliser.
Imagine que tu as une table de produits nommée tabProduits et une table fournisseur de ces produits nommée tabFour avec les champs COD et NOM.
Si tu veux visualiser le fournisseur pour chaque produits tu dois faire new field (dans la table tabProduits). Dans "Name" tu peux écrire ce que tu veux comme par ex. NomFour, c' est le nom que tu donnes au champ. Le type et la taille doivent être les mêmes que ceux dans le champ NOM de ta table tabFour. FieldType est donc de type Lookup.
En ce qui concerne la partie lookup definitions:
"KeyFields" représente la clé étrangère dans tabProduits. Qu 'est ce que ça veux dire? tout simplement que tu dois avoir un champ COD_FOUR dans ta table tabProduits. COD_FOUR possède la valeur du code fournisseur pour chaque produits.
DataSet est donc tabFour, c' est la table dans laquelle obn veut rechercher une valeur.
Lookup keys est tabFourCOD, ce qui veut dire que pour la valeur dans tabProduitsCOD_FOUR on va positionner le curseur de tabFour sur cette valeur pour pouvoir retourner la valeur du champ specifié dans Result field.
Result field est TabFourNOM, c' est la valeur du champ renvoyé.
J' espère que mes explications t' ont aidé.
A+
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
17 sept. 2005 à 11:49
bon en faite j'en chie toujours car je sais pas quel propriétés appliquer a mes champs de mes TADOTable ni s'il faut dire à la table mère si faut que son champs pointe sur la fille ou l'inverse.. enfin j'ai du mal à m'exprimer mais c'est super mal documenté sur le net, pour ne pas dire qu'on n'aborde pas du tout les jointures !

Cordialement.

Damien
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
15 sept. 2005 à 19:00
De rien de rien !
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
15 sept. 2005 à 18:58
Merci c'est cool j'ai trouvé, je vais voir ce que je peux faire avec çà.

Tient je t'ai mis 10/10 pour avoir eut la patience de repondre,
c'est super sympa merci ;-)

Cordialement.

Damien.
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
15 sept. 2005 à 18:54
Pour plus de précision, fait un double clique sur le compo, puis fait un click droit, il devrait y aparaitre "new field"!!!
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
15 sept. 2005 à 18:52
Ce qu' il te faut c' est déclarer des champs de type lookup dans ta table de ton compo TADOTable!!!
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
15 sept. 2005 à 18:50
C'est fait, en faite j'texplique mon cas : j'ai déja ma base de données faite avec Access 2000 (pour une divX Tèque personnalisé), nikel et tout.

J'ai crée les tables : FILM, ACTEUR, GENRE, FILM_ACTEUR (jointure). C'est qu'un debut pour le moment je pense l'agrandir par la suite.

J'ai meme fait mes relations sous MS Access.

Après je me suis inspiré de ta source pour créer mon projet, tout nikel, pratiquement pas une ligne de code et tout fonctionne niquel, là ou je me retrouve bloqué c'est pour afficher les acteurs correspondant au film via la table de jointure, et aussi pour retrouver le nom du genre via le numero de genre.

Voila .. j'chai pas si j'ai été claire ?

Merci beaucoup.
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
15 sept. 2005 à 18:45
Il faut que tu crées les tables dans le fichier acess (.mdb)avec ACCESS justement...
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
15 sept. 2005 à 18:42
Ouaa... plus rapide tu meurt :) lol

Et concretement ? car j'ai justement ajouter un autre TADOTable, un autre DataSource, mais voila çà m'avance pas bcp :s

Bon j'vais chercher dans cette direction ... merci !
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
15 sept. 2005 à 18:37
C' est exactement comme tu dis !!!
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
15 sept. 2005 à 18:34
Très bonne source.

Mais j'ai une question :

Imaginé que vous ayez les enfants des contacts à gerer : Donc vous avez votre table contact, votre table enfants, et une table de jointure entre les deux (Appartient_A).

Comment gerer les jointures avec ce systeme ? on rajoute un TADOTable ?

Merci.

Damien.
Rejoignez-nous