Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1 2
Bonjour à tous,
Je suis débutant en PowerBuilder et j'utilise la version 10.5.
Mon problème est le suivant.
J'ai une base de donnée avec 3 tables : Acteur - Film - Filmacteur
Les colonnes de filmacteur sont evidemment id_acteur et id_film
J'aimerais afficher à l'aide d'une datawindow
Titre : Las Vegas Parano
Acteurs : Johnny Depp, Beniccio Del Toro
La dw m'affiche 2 pages avec le meme titre, et chacune avec un acteur different. J'aimerais avoir les deux sur une meme page.
Je pense que ca doit pas etre trop difficile pour vous, donc merci d'avance pour votre aide.
Dernière modification par hellkinder (12-09-2006 15:24:11)
Hors ligne
hello !
tu fais une fenetre
ou il y a 2 datawindows,
la datawindow detail, qui contient le titre du film ect..
et la datawindow liste, qui contiendra la liste de tous les acteurs ayant participé à ce film...
c'est pas ca que tu voulais ? j'ai peut etre mal compris...
Hors ligne
Déja pour commencer, j'ai parcouru le forum et je tiens a te féliciter d'aider les petits. C'est rare de nos jour donc Bravo et Merci!
Mais revenons à nos pingouin
Effectivement tu as très bien compris ce que je voulais. Le souci (je me prépare à avoir honte) c'est que je ne connais pas la différence entre une dw detail (je suppose que ca affiche les données d'une table) et une dw list. Peut tu m'expliquer comment l'on fait.
Merci
Hors ligne
peux tu me donner la structure de tes tables
ainsi que ta requete SQL ?
pour les jointures...
sinon, tu as un mega tutoriel sur powerbuilder sur le forum...je crois qu'il y a un exemple de codage de fenetre du type detail / liste.
La fenetre type Detail / Liste
la datawindow Detail contient les elements principaux, dont le contenu de ta table film
et la liste, le contenu de ta table acteurs, qui sont liés par rapport à ce film.
voila...
sinon, tu peux toujours faire une copie d'écran et nous montrer.
comme on le fait tous sur ce site.
A+ et merci encore
Hors ligne
Voila pour le screenshot.
Désolé pour le temps de réponse j'ai bataillé pour l'heberger ;-)
Hors ligne
Si tu préfères, mon objectif, c'est cet écran... J'ai fait le compute pour la liaison nom prenom acteur. Le genre est bien affiché. Et je souhaite mettre des petites fleches en bas a gauche et a droite pour changer de film.
J'espère que c'est assez clair car je semble aussi bon en explication qu'en developpement :D
Hors ligne
Salut, tu pourra regarder tes mp ou tes mail sil te plait ! merci
Hors ligne
reponse par...
voila un peu pres ce que j'obtiens...
et apres avoir cliqué une des fleches...
et tout le code est la...Téléchargement
j'ai fais ca vite fait, en m'adaptant à la structure de tes tables... version PB6
à toi de prendre et d'adapter tout ca.
si tu ne comprends pas les bouts de scripts, tu peux toujours poser les questions ici.
Bon courage
Hors ligne
requete de la datawindow detail (celle du haut)
SELECT "films"."titre", "genre"."nom_genre", "films"."annee", "films"."support", "films"."id" FROM "films", "genre" WHERE ( "films"."id_genre" = "genre"."id" )
requete de la datawindow liste (celle du bas)
SELECT "acteur"."nom_acteur", "acteur"."prenom_acteur" FROM "acteur", "filmacteur" WHERE ( "acteur"."id" = "filmacteur"."idacteur" ) AND "filmacteur"."idfilm" = :ai_film
scripts dans la fenetre :
dans l'evenement OPEN
long ll_row, ll_idfilm dw_detail.settransobject(sqlca) dw_liste.settransobject(sqlca) dw_detail.retrieve() ll_row = dw_detail.getrow() if ll_row > 0 then ll_idfilm = dw_detail.Getitemnumber(ll_row,'films_id') if ll_idfilm > 0 then dw_liste.retrieve(ll_idfilm) end if end if
dans l'evenement ROWFOCUSCHANGED de la datawindow DW_DETAIL (celle du haut)
long ll_idfilm if currentrow > 0 then ll_idfilm = this.getitemnumber(currentrow,'films_id') if ll_idfilm > 0 then dw_liste.retrieve(ll_idfilm) end if end if
dans l'evenement CLICKED du bouton de flechage Gauche
dw_detail.ScrollPriorRow ( )
dans l'evenement CLICKED du bouton de flechage Droite
dw_detail.ScrollNextRow ( )
Voila, le tour est joué !!!!
Après, tu adaptes suivant tes gouts.
Mais, si j'ai bien compris ce que tu voulais, la fenetre charge toute la liste des films ?
Au fait, il n'est pas interdit de vous presenter dans la section appropriée...
Hors ligne
Merci beaucoup à toi!
Pour repondre à ta question, je ferai peut être plus tard une autre datawindow où on selectionnera le genre, qui me fournira la liste des film, et en cliquant sur l'un d'eux sa fiche apparaîtra. Pour l'instant, j'ai un autre projet en cours. J'adapterai tout ca à la sauce PB 10 un peu plus tard, mais promis, je tiendrai ce topic à jour d'ici peu.
En tout cas, ta réponse est complète et semble efficace . Je te tiens au jus !
Dernière modification par hellkinder (13-09-2006 09:26:00)
Hors ligne
C'est pas un peu l'artillerie lourde que tu déploies pick ?
pkoi pas une dw basée sur un select des trois tables jointes,
avec un groupement défini sur le id film ?
ce qui donne dans une seule DW :
----------------------------------------------
film : machin chose
date : xxxxx
.
.
.
acteurs :
mr X
mme Y
mlle Z
----------------------------------------------
Hors ligne
oui, c'est vrai !
je me suis un peu compliqué...
il y a aussi ta solution !
Hors ligne
Ben, en fait jdobosz, la requete que tu proposes c'est la première que j'ai faite. Et voila ce qu'il m'en dit :
Bon alors je fais ce qu'il me dit de faire pour que ce message disparaisse et je me retrouve avec une ligne par acteur, logique puisqu'il me demande de grouper aussi avec nom_acteur.
Sinon il y a toujours la soluce pick ouic, + longue certes, que je testerai plus tard.
Hors ligne
non, ce n'est pas ca
tu gardes ton select, sans le group by
mais tu fais un sort sur film.titre
apres, au niveau de ta datawindow, tu crées un groupe.
et voila...
mais dans ce cas la, c'est juste pour un affichage... mais on obtient ce que tu voulais
Hors ligne
Alors sois je suis vraiment mauvais ou ca n'est pas bon (moi je vote 1)
Voila ma requete
Et voila ce que j'obtiens :
Alors je me demande si l'aperçu qu'on me propose dans le painter (je crois que c'est comme ca qu'on dit) est le rendu final.
Ou alors y'a une erreur...vous la voyez?
Hors ligne
oui, je vois.
tu fais un deuxieme groupe
cette fois ci sur acteur nom et prenom
tu mets l'entete 'nom et prenom de l'acteur' sur l'entete du groupe 2
et la colonne 'nom.Acteur et prenom.acteur' sur le detail
et ca devrait t'afficher tous les acteurs du film
sinon, je ferai un test ce soir, et t'envoie la reponse si tu n'arrives pas d'ici la.
Hors ligne
vous me tapez si je vous dis que ca ne marche pas ?
Quand dans le preview je fais clik droit --> next Page, on voit qu'il garde le titre du film , et qu'il change le nom de l'acteur.
C'est la meme chose qu'en créant 1 seul regroupement.
Dernière modification par hellkinder (13-09-2006 14:41:49)
Hors ligne
ok, on viendra en bus pour te
on sera nombreux, mais nombreux !
je regarderai au chaud ce soir, normalement, ca marche sans probleme !
Hors ligne
Vous pouvez venir en bus pour me taper, y'a pas de problème, j'ai un tank (avec jantes alus et distributeur de Knacky USB) : c'est aussi gros qu'un bus mais monoplace. Moi j'aime bien avoir de l'espace de conisse et non pas de l'espice...enfin bref.
Bon trève de galégeade, ce soir je jetterai un oeil a ta réponse mais je ne pourrai pas la tester. Par contre, je serai open des demain matin
C.U TcHô!
Hors ligne
voila mon code sql
SELECT "films"."titre", "films"."annee", "films"."support", "genre"."nom_genre", "acteur"."nom_acteur", "acteur"."prenom_acteur" FROM "acteur", "filmacteur", "films", "genre" WHERE ( "acteur"."id" = "filmacteur"."idacteur" ) and ( "filmacteur"."idfilm" = "films"."id" ) and ( "films"."id_genre" = "genre"."id" ) ORDER BY "films"."titre" ASC, "acteur"."nom_acteur" ASC, "acteur"."prenom_acteur" ASC
et le GROUP
et ca fonctionne tres bien
Hors ligne
Ca marche enfin!
Epilogue: J'arrive ce matin, je relance mon painter, et là l'apercu m'affiche ce que je voulais. Je pense que, dans certains cas, l'apercu ne se met pas à jour. Toujours est-il qu'avec un groupement sur film.titre, et le sort dans la requete ca fonctionne.
Merci à tous ceux qui m'ont aidé
Je reviendrai rapidement pour vous embeter!
C.U
|{ | |\| |) € R
Hors ligne
Résultat tant attendu... aller j'ai plus qu'à gérer l'ajout de film et d'acteur.
Hors ligne
nice !!!!
dis moi, il y a aussi des films olé olé dans ta bibliotheque ?
Hors ligne
Eh bien oui! j'ai le film las vegas parano au singulier : La vega paranal....le Résumé, c'est zorro à qui le sergent garcia fait des bricoles...Mais je pense pas que ca t'interesse.
Dernière modification par hellkinder (14-09-2006 13:52:30)
Hors ligne
effectivement, pas trop
il y a une version avec la nana de zorro ?
Hors ligne
Pages: 1 2