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 :

Prolog et base de données ACCESS


Sujet :

Prolog

  1. #21
    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 faudrait connaître la structure de la base. C'est une coquille ou pas : dans la requête il est écrit nature_évènement et dans la base il y a écrit, nature_accident comme nom de champ.
    D'autre part, il faudrait peut-être éviter les noms de champs avec accent.
    "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

  2. #22
    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
    On peut passer à un stade plus évolué :
    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
    use_module(library(odbc)).
     
    open_evenement:-
    	odbc_connect('evenement',_,
    		[
    		 alias(evenement),
    		 open(once)
    		]).
     
    requete_evenement :-
    	% recherche de tous les enregistrements 
    	bagof(X,
    		odbc_query(evenement,
    			'SELECT * FROM tower WHERE Nature_évènement=\'Atterrissage\'',
    			X,
    			[]),
                    LX),
    	% affichage des enregistrements
    	maplist(writeln,X).
     
    close_evenement :-
    	odbc_disconnect(evenement).
    Ce n'est pas testé car je n'ai pas la base, mais des requêtes équivalentes fonctionnent chez moi.
    "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. #23
    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
    Je l'ai testé, ça a l'air de marcher mais ça n'affiche rien, juste:
    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
    7 ?- 
    Warning: j:/portableapps/swi-prologportable/requete.pl:10:
            Singleton variables: [LX]
    % j:/PortableApps/SWI-PrologPortable/requete.pl compiled 0.00 sec, 1 clauses
    7 ?- requete_evenement.
    true ;
    _G1347
    true ;
    _G1350
    true ;
    _G1353
    true ;
    _G1356
    true ;
    _G1359
    true ;
    _G1362
    true ;
    _G1365
    true ;
    _G1368
    true
    le code prolog:
    use_module(library(odbc)).
    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
     
    open_evenement:-
    	odbc_connect('evenement',_,
    		[
    		 alias(evenement),
    		 open(once)
    		]),
    	odbc_query(evenement,
    		'SELECT *
    		FROM tower
    		WHERE (((tower.[nature_accident])="Accident"))',X, 
    		[
    		]),
    	writeln(X),
    	odbc_disconnect(evenement).

  4. #24
    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 y a des erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    open_evenement:-
    	odbc_connect('evenement',_,
    		[
    		 alias(evenement),
    		 open(once)
    		]),
    	odbc_query(evenement,
    		'SELECT *
    		FROM tower
    		WHERE nature_accident=\'Accident\'',X, 
    		[
    		]),
    	writeln(X),
    	odbc_disconnect(evenement).
    Testez avec ce code.
    "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. #25
    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
    Merci ça marche!mais n'affiche qu'un seul affichage, je crois que le reste c'est pour moi mais si vous voulez toujours m'aider, ce serait un plaisir!
    1 ?-
    % j:/PortableApps/SWI-PrologPortable/requete.pl compiled 0.00 sec, 2 clauses
    1 ?- open_evenement.
    row(11,timestamp(2014,3,2,0,0,0,0),09h06,
    Remise de gaz,......,Arrivée,...............
    Piste occupée,A 09h03,
    Y se présente en vent arrière suite à une approche à vue et
    signale avoir le trafic à l'atterrissage en vue,
    en même temps le X à l'atterrissage est instruit à remonter la piste pour dégager par la bretelle "E".
    Arrivée en finale à 09h06, Y remet les gaz et revient en vent arrière car
    X n'a pas encore évacué la piste. Y atterrit à 09h09.,$null$)
    true ;%%appui sur espace pour avoir un nouveau résultat
    ERROR: Invalid handle: 0402A6C0
    Fail: (7) odbc:odbc_query
    (evenement, 'SELECT *\n\t\tFROM tower\n\t\tWHERE
    nature_accident=\'Remise de gaz\'', _G216, []) ? creep
    false.%%appui sur espace

    [trace] 2 ?- %%appui sur espace

  6. #26
    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
    %%appui sur espace pour avoir un nouveau résultat
    Cela ne peut pas fonctionner puique la liaison ODBC est close (odbc_disconnect).
    Il faudrait mieux utiliser le code "évolué" que j'ai donné, on peut ainsi faire des requêtes en fenêtre console de SWI-Prolog
    "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. #27
    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
    j'essaierai et le XPCE fonctionnera avec l'ACCESS?
    Sinon je dois utiliser Oracle?

  8. #28
    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 ne marche toujours pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    odbc_query(evenement,
    			'SELECT * FROM tower WHERE nature_accident=\'Remise de gaz\'',
    			X,
    			[]),
                    LX),
    %Qu'est-ce qu'il fait le LX?

  9. #29
    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
    La liaison ODBC fonctionne avec XPCE, il n'y a pas de problème.

    Le LX est en relation avec le bagof qui permet de regrouper toutes les requetes de odbc_query(evenement, 'SELECT * FROM tower WHERE nature_accident=\'Remise de gaz\'', X , [])

    C'est à utiliser de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    requete_evenement :-
    	% recherche de tous les enregistrements 
    	bagof(X,
    		odbc_query(evenement,
    			'SELECT * FROM tower WHERE Nature_évènement=\'Atterrissage\'',
    			X,
    			[]),
                    LX),
    	% affichage des enregistrements
    	maplist(writeln,LX).
    Attention, je m'aperçois que j'ai fait une coquille c'était maplist(writeln, LX) et non pas maplist(writeln, X).
    "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

  10. #30
    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
    Merci beaucoup ça marche bien le code:
    Code Prolog : 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
    use_module(library(odbc)).
    
    open_evenement:-
    	odbc_connect('evenement',_,
    		[
    		 alias(evenement),
    		 open(once)
    		]).
    
    requete_evenement :-
    	% recherche de tous les enregistrements 
    	bagof(X,
    		odbc_query(evenement,
    			'SELECT * FROM tower WHERE nature_accident=\'Remise de gaz\'',
    			X,
    			[]),
                    LX),
    	% affichage des enregistrements
    	maplist(writeln, LX).
    close_evenement :-
    	odbc_disconnect(evenement).
    C'est résolu.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Accès aux bases de données Access
    Par xela dans le forum C++Builder
    Réponses: 3
    Dernier message: 15/12/2004, 10h07
  2. [débutant] Connection à une base de donnée Access
    Par Lorenzox dans le forum JBuilder
    Réponses: 1
    Dernier message: 25/10/2004, 17h28
  3. Réponses: 15
    Dernier message: 25/10/2004, 12h50
  4. [Déploiement]Base de donnée Access
    Par Giovanny Temgoua dans le forum Bases de données
    Réponses: 9
    Dernier message: 09/08/2004, 21h48
  5. associer une base de données(access) a un dbgrid
    Par ange1708 dans le forum MFC
    Réponses: 3
    Dernier message: 11/06/2002, 13h18

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