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

Prolog Discussion :

L'interface XPCE du prolog et ACCESS


Sujet :

Prolog

  1. #1
    Futur Membre du Club
    Homme Profil pro
    EUROI
    Inscrit en
    Novembre 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Madagascar

    Informations professionnelles :
    Activité : EUROI
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2014
    Messages : 27
    Points : 7
    Points
    7
    Par défaut L'interface XPCE du prolog et ACCESS
    Bonjour!
    Comment combiner Access avec l'interface XPCE de Prolog!
    Est-ce que c'est possible?
    Besoins d'aide s'il vous plait!!!
    Merci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    C'est un exemple qui peut être réutilisé et adapté à votre base de données.
    Pour comprendre, j'ai une base de données "Policier" avec 4 champs, "Nom", "Prénom", "Profession", "Auteur".
    La boîte de dialogue contient un champ de saisie (pour saisir un nom d'auteur) , une liste (pour afficher les noms, prénoms et professions des héros) et deux boutons, l'un pour lancer la recherche, l'aiutre pour fermer la boîte de dialogue.
    Le code :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % les requetes ODBC
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    open_policiers :-
            odbc_connect('policiers', _Toto,
                         [
                           alias(policiers),
                           open(once)
                         ]).
     
    requete_policiers(Nom, LX) :-
    	sformat(A,
    		'SELECT Nom,Prénom,Profession FROM Personnes WHERE Personnes.Auteur = \'~w\'',
    		[Nom]),
    	bagof([X, Y, Z], odbc_query(policiers, A, row(X,Y, Z)),LX).
     
     
    close_policiers :-
    	odbc_disconnect(policiers).
     
     
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % creation de la boîte de dialogue
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    dialog(policiers,
           [ object        :=
    	   Policiers,
    	 parts         :=
    	   [ Policiers := dialog('Policiers'),
    	     Go   := button(button),
    	     Exit   := button(button),
    	     Auteur_item :=
    	       text_item(auteur_item),
    	     List        :=
    	       list_browser(@default, 69, 10)
    	   ],
    	 modifications :=
    	 [
    	     Go := [label := 'Go'],
    	     Exit := [label := 'Terminé'],
    	     Auteur_item := [ label := 'Tapez le nom de l\'auteur :'
    			    ],
    	     List        := [ name       := 'Résultats de la recherche',
    			      show_label := @on
    			    ]
    	 ],
    	 behaviour :=
    	   [
    	     Exit := [message := message(Policiers, destroy)],
    	     Go := [message := message(@prolog, requete, Auteur_item?selection, List)],
    	     % il faut clore la liaison ODBC à la fin du prog
    	     Policiers := [done_message := message(@prolog, close_policiers)]
    	   ],
    	 layout        :=
    	   [ area(Go,
    		  area(389, 296, 80, 24)),
    	     area(Exit,
    		  area(486, 297, 80, 24)),
    	     area(Auteur_item,
    		  area(41, 32, 356, 24)),
    	     area(List,
    		  area(43, 75, 494, 176))
    	   ],
    	   initialise :=
    	   [
    	     % il faut créerla liaison ODBC 
    	       send(@prolog, open_policiers)
    	   ]
           ]).
     
    % requete appelée par le bouton "Go"
    requete(Auteur, List) :-
    	send(List, clear),
    	requete_policiers(Auteur, LX),
    	forall(member([X,Y, Z], LX),
    	       (sformat(A, '~w ~w est ~w', [Y, X, Z]),
    		send(List, append, A))).
     
     
    % lancement du programme
    main :-
    	make_dialog(D, 'policiers'),
    	send(D, open).
    Un exemple de requête :

    Nom : policiers.gif
Affichages : 331
Taille : 43,3 Ko
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Futur Membre du Club
    Homme Profil pro
    EUROI
    Inscrit en
    Novembre 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Madagascar

    Informations professionnelles :
    Activité : EUROI
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2014
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    Bonjour
    et merci Trap D, j'ai testé le code et ai modifié sur la partie requete SQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    requete_policiers(Nom, LX) :-
    sformat(A,
    'SELECT personnes.Nom,personnes.Prénom,personnes.Profession
    FROM personnes 
    WHERE personnes.Auteur = \'~w\'',[Nom]),
    bagof([X, Y, Z], odbc_query(policiers, A, row(X,Y, Z)),LX).
    close_policiers :-odbc_disconnect(policiers).
    ça a l'air de marcher, ça affiche la boîte de dialogue
    mais ça ne donne aucun résultat pour la recherche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    27 ?- open_policiers.
    true.
     
    28 ?- main.
    true.
    Nom : rehcerche.jpg
Affichages : 295
Taille : 32,8 Ko
    et après fermeture(clic sur terminer)
    ça donne ceci sur prolog:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    29 ?- Foreign predicate odbc:odbc_disconnect/1 did not clear exception: 
    error(odbc(07001,-3010,[Microsoft][Pilote ODBC Microsoft Access] 
    Trop peu de paramètres. 1 attendu.),_G255)
    Foreign predicate system:$free_variable_set/3 did not clear exception: 
    error(existence_error(odbc_connection,policiers),_G269)
    je ne sais pas pourquoi!

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Il peut y avoir beaucoup de raisons pour lesquelles ça ne foncitonne pas.
    Il faudrait avoir le code complet du programme et la liste des champs de la base de données.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  5. #5
    Futur Membre du Club
    Homme Profil pro
    EUROI
    Inscrit en
    Novembre 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Madagascar

    Informations professionnelles :
    Activité : EUROI
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2014
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    Voici le code policier.pl:
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
    %%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % les requetes ODBC
    %%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%
    open_policiers :-
    	odbc_connect('policiers', _Toto,
    			[
    			alias(policiers),
    			open(once)
    			]).
     
    requete_policiers(Nom, LX) :-
    		sformat(A,
    		'SELECT personnes.Nom,personnes.Prénom,personnes.Profession
                    FROM personnes WHERE personnes.Auteur = \'~w\'',
    		[Nom]),
    		bagof([X, Y, Z], odbc_query(policiers, A, row(X,Y, Z)),LX).
     
    close_policiers :-
    		odbc_disconnect(policiers).
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % creation de la boîte de dialogue
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    dialog(policiers,
    		[ 
    		object := Policiers,
    		parts  := 
    			[ 
    			Policiers := dialog('Policiers'),
    			Go := button(button),
    			Exit   := button(button),
    			Auteur_item := text_item(auteur_item),
    			List := list_browser(@default, 69, 10)
    			],
    			modifications :=
    			[
    			Go := [label := 'Go'],
    			Exit := [label := 'CLOSE'],
    			Auteur_item :=  
    			[  
    			label := 'Tapez le nom de l\'auteur :'
    			],
    			List:=  
                                            [name := 'Result of Research',
    			        	show_label := @on
    			         	]
    	       ],
    			behaviour :=
    		   [		
    		 Go := [message := message(@prolog, requete, Auteur_item?selection, List)],
    		 Exit := [message := message(Policiers, destroy)],
    		 % il faut clore la liaison ODBC à la fin du prog
    		 Policiers := [done_message := message(@prolog, close_policiers)]
    		   ],
    		 layout   :=
    		  [ area(Go,
    	          area(389, 296, 80, 24)),
    		  area(Exit,
    		  area(486, 297, 80, 24)),
    		  area(Auteur_item,
    		  area(41, 32, 356, 24)),
    		  area(List,
    		  area(43, 75, 494, 176))
    		  ],
    		initialise :=
    		 [
    		 % il faut créer la liaison ODBC 
    		  send(@prolog, open_policiers)
    		 ]
    		]).
     
    % requete appelée par le bouton "Go"
     
    requete(Auteur, List) :-
    			send(List, clear),
    			requete_policiers(Auteur, LX),
    			forall(member([X,Y, Z], LX),
    			(sformat(A, '~w ~w est ~w', [Y, X, Z]),
    			send(List, append, A))).
     
    % lancement du programme
    main :-
    		make_dialog(D, 'policiers'),
    		send(D, open).
    Je n'ai modifié que le label, et les requêtes SQL.
    les champs sont: Nom, Prénom, Profession, Auteur.
    Le nom de la table c'est personnes et la base de données est policiers.
    J'ai suivi et ai fait correspondre votre code et ma base.

  6. #6
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Ce code fonctionne parfaitement chez moi, il faut voir du côté de votre base données.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  7. #7
    Futur Membre du Club
    Homme Profil pro
    EUROI
    Inscrit en
    Novembre 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Madagascar

    Informations professionnelles :
    Activité : EUROI
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2014
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    ça marche toujours pas!

  8. #8
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Citation Envoyé par LovaMickael Voir le message
    ça marche toujours pas!
    Même réponse, c'est la base de données qui est mal configurée, nom incorrect, noms de champs incorrects que sais-je ?
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

Discussions similaires

  1. Interface XPCE pour Prolog
    Par vendet dans le forum Prolog
    Réponses: 3
    Dernier message: 31/01/2014, 12h02
  2. Swi Prolog Interface XPCE
    Par maurty dans le forum Prolog
    Réponses: 16
    Dernier message: 20/12/2012, 07h49
  3. prolog et l'interface xpce
    Par habibaroubi dans le forum Prolog
    Réponses: 3
    Dernier message: 28/12/2010, 09h43
  4. Interface graphique liée à la BD ACCESS
    Par guiguikawa dans le forum Access
    Réponses: 1
    Dernier message: 31/05/2006, 10h21
  5. [ODBC] Quitter l'interface pour accéder à une BDD Access
    Par tigzirt dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/05/2006, 13h33

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