FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» KGF.dll - demandes ou suggestions de modifications ou ajouts
par Klaus Aujourd'hui à 4:52

» KGF_dll - nouvelles versions
par Klaus Hier à 23:05

» Mah-Jong européen new-look
par Minibug Hier à 22:31

» track_bar circulaire
par Klaus Hier à 13:54

» API Windows
par Klaus Hier à 3:21

» Cartes de voeux, menus, etc.
par JL35 Lun 11 Déc 2017 - 17:48

» a l'aide klaus
par Minibug Lun 11 Déc 2017 - 11:42

» bug SYNEDIT_TARGET_IS_OBJECT
par Jack Lun 11 Déc 2017 - 0:16

» Jukebox : Serge Reggiani
par papydall Sam 9 Déc 2017 - 5:58

» Ecouter la radio fm sur votre pc
par pascal10000 Sam 9 Déc 2017 - 3:42

» anomalie
par Klaus Sam 9 Déc 2017 - 3:21

» hommage
par Jicehel Ven 8 Déc 2017 - 11:29

» Logiciel de soutien scolaire en langues.
par Pedro Alvarez Ven 8 Déc 2017 - 10:43

» carte son
par Klaus Ven 8 Déc 2017 - 2:37

» mise a jour calculatrice
par joeeee2017 Mer 6 Déc 2017 - 22:19

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
CalendrierCalendrier

Partagez | 
 

 Base de données relationnelle

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : Précédent  1, 2, 3  Suivant
AuteurMessage
Jicehel

avatar

Nombre de messages : 5863
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Base de données relationnelle   Ven 9 Nov 2012 - 13:27

Challenge pour un fou (pas forcément pour Klaus, mais pour si quelqu'un a envie de s'arracher les cheveux): Faire une représentation graphique des données et de relations ... Ça peut paraitre simple au début, mais ça devient un véritable casse tête quand les relations augmentent...
Si quelqu'un a du temps et aime les casse-têtes, c'est un beau challenge ...
véritablement complexe.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10253
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Base de données relationnelle   Ven 9 Nov 2012 - 13:54

Et encore plus fou: faire un éditeur graphique pour dessiner les liens, puis générer la structure à partir de cela !

Et tu vas rire: cela existe ! C'est ce qu'utilise l'excellent logiciel WinDev de PC-Soft pour décrire sa base de données et générer automatiquement, non seulement la structure et les fichiers, mais également un programme basique gérant le base de données !

Mais la création d'un tel outil est évidemment hors de portée pour une seule personne.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Nardo26

avatar

Nombre de messages : 2294
Age : 49
Localisation : Valence
Date d'inscription : 02/07/2010

MessageSujet: Re: Base de données relationnelle   Ven 9 Nov 2012 - 14:51

C'est clair que ce n'est pas évident à faire...
Sur des gros projets cela reste néanmoins indispensable (et obligatoire) de passer par de tels outils pour modéliser les bdd (méthode Merise par ex)...
PS: j'en parle car je suis en plein dedans en ce moment... Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
Jicehel

avatar

Nombre de messages : 5863
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Base de données relationnelle   Ven 9 Nov 2012 - 15:30

En tout cas Nardo si tu te sens capable de coder ça, fais toi plaisir, mais c'est encore plus complexe que les arbres ... (tu avais fais déjà fort à l'époque pour tracer les arbres)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10253
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Base de données relationnelle   Ven 9 Nov 2012 - 19:28

Il y a une nouvelle version. Cette version gère la notion des "ensembles".

Un ensemble est une collection non ordonnée d'éléments. Dans une BDR, un ensemble est une entité, ainsi que tous les éléments. N'importe quelle entité peut être élément de n'importe quelle autre, et n'importe quelle entité peut être un ensemble et contenir d'autres entités comme élément.

Un ensemble peut avoir pour élément une entité qui est elle-même un ensemble qui contient une entité qui est elle-même un ensemble etc. Il n'y a pas de limitations à ce niveau.

Il y a bien sûr un problème de récursivité. C'est pourquoi le programme bloque l'insertion d'un élément en lui-même, ainsi que l'insertion dans un élément de lui-même. Mais il est déraisonnable de pousser les tests plus loin. C'est à l'utilisateur d'assurer la cohérence logique de la structure.

Un nouveau volet *.ele est créé pour gérer cette structure. Les fichiers mis à jour sont:
- BDR.dll
- BDR_SUB.bas
- demo_BDR_SUB.bas
- tous les test.* y compris le nouveau test.ele
La nouvelle version de test.* est identique à la précédente, mais contient une entité supplémentaire: "mammifère", qui est un ensemble contenant "souris" et "loup" comme éléments. Et le programme demo_BDR_SUB.bas montre cela en listant le contenu de mammifère.

Ce qui va suivre maintenant:
- adaptation de certaines fonctions pour délivrer leur résultat dans un ensemble (comms DBRfindrelation)
- création des opérations sur les ensembles (union, intersection, ...)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

Nombre de messages : 5863
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Base de données relationnelle   Ven 9 Nov 2012 - 19:45

Je dois pouvoir me servir de ça pour gérer de la connaissance

Par exemple en créant des sociétés: A, B, C
En créant des site pour chaque société (Site 1 de la société A, site 2 .. , pareil pour les société B et C)
En créant par exemple des logiciels (L1, L2, L3, ...)
Après, je devrais pouvoir créer une connaissance (C1) qui serait membre du logiciel L1 et des société A et C sauf pour le Site 1 de la société A ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 6018
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Base de données relationnelle   Ven 9 Nov 2012 - 19:48

Je sens la migraine qui monte...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10253
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Base de données relationnelle   Ven 9 Nov 2012 - 21:31

@Jicehel:
Citation :
Par exemple en créant des sociétés: A, B, C
En créant des site pour chaque société (Site 1 de la société A, site 2 .. , pareil pour les société B et C)
En créant par exemple des logiciels (L1, L2, L3, ...)
Après, je devrais pouvoir créer une connaissance (C1) qui serait membre du logiciel L1 et des société A et C sauf pour le Site 1 de la société A ?

Est-ce que ça signifie, en notation symbolique:
Citation :

A
--Site AS1
----logiciel L1
----logiciel L2
--Site AS2
----logiciel L2
B
--Site BS1
----Logiciel L2
--Site BS2
C
--Site CS1
----logiciel L1
--Site CS2
----logiciel L1
----logiciel L2

L1->C1->AS1
L1->C1->CS1
L1->C1->CS2

L2->c2->AS1
L2->C2->BS1
L2->c2->CS2

En notation "macro", on créerait les entités ainsi:
Citation :

add,A,Dupont
add,AS1,Bordeaux
add,AS2,Biaritz
add,B,Megaflex
add,BS1,Tours
add,BS2,Loches
add,C,ElectroGenie
add,CS1,Nancy
add,CS2,Metz

add,L1,Facturation
add,L2,Comptabilité

add C1,UtilisationDeFacturation
add,C2,UtilisationDeDomptabilité

Toujours en notatioin "macro", on créerait la structure ainsi:
Citation :

str,L1,C1,AS1
str,L1,C1,CS1
str,L1,C1,CS2

str,L2,C2,AS1
str,L2,C2,BS1
str,L2,C2,CS2

Et, toujours en notation macro, quelques interrogations:
Citation :

Sur quels sites est déployé la comptabilité:
fdr,C2,L2,?

Est-ce que le site BS2 utilise la facturation ?
fdr,L1,C1,BS2

On peut aussi utiliser les ensembles pour regrouper les sites utilisant un logiciel. Ainsi, L1 et L2 deviendraient des ensembles ayant comme élément les sites utilisant ces logiciels:
Citation :

création de la structure:
ste,AS1,L1
ste,CS1,L1
ste,CSE,L1

ste,AS1,L2
ste,BS1,L2
ste,CS2,L3

Sur quels sites est déployé la comptabilité:
lis,L1

Est-ce que le site BS2 utilise la facturation ?
fde,BS2,L2

Et ce n'est qu'une ébauche faite rapidement, et avec les commandes macro. L'utilisation des procédures BDR_SUB permet plus de souplesse et de fonctionnalités, et le système est actuellement en pleine évolution.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

Nombre de messages : 5863
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Base de données relationnelle   Ven 9 Nov 2012 - 21:52

Absolument Klaus. C'est très pratique.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10253
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Base de données relationnelle   Sam 10 Nov 2012 - 0:36

Nouvelle version:

Ajout de la procédure BDRfindrelationset(A,R,B,set).

Cette procédure est identique à BDRfindrelation, mais le résultat n'est pas envoyé dans un mémo dont on spécifie le numéro à la procédure BDR_SUB (ou le handle à la fonction de la DLL), mais le résultat sera déposé comme éléments d'un ensemble. Cet ensemble est une entité dont le nom est spécifié et 4ème paramètre. Dès lors, on pourra utiliser ces informations dans des procédures ultérieures.

modules modifiés:
DBR.dll, DBR, SUB.bas et lisez-moi.txt.

On peur l'utiliser par la fonction macro fds. Exemple:
add,prédateur
fds,souris,,,prédateur
lis,prédateur
montre que chat et rapace sont éléments de l'ensemble prédateur.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10253
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Base de données relationnelle   Sam 10 Nov 2012 - 3:16

Nouvelle version.

Ajout des procédure
- BDRsetunion(set1,set2,union)
- BDRsetintersection(set1,set2,intersection)
ce qui correspond aux fonctions dll:
- res% = dll_call3("BDRsetunion",adr(set1$),adr(set2$),adr(union$))
- res% = dll_call3("BDRsetintersection",adr(set1$),adr(set2$),adr(intersection$))

Ces fonctions font ce que dit leur nom: elles réalisent les opérations union et intersection sur deux ensembles et placent le résultat sous forme d'éléments à l'ensemble union$ ou intersection$.

BDR.dll, BDR_SUB.bas et lisez-moi.txt ont été mis à jour.

D'autres fonctionnalités suivront. Je me mets un peu sur la doc, à nouveau.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10253
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Base de données relationnelle   Sam 10 Nov 2012 - 17:18

La doc BDR.chm a bien avancée. En ligne sur MyDrive. Elle sera bientôt complète.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10253
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Base de données relationnelle   Sam 10 Nov 2012 - 23:47

La doc DBR.chm est complète. Ce qui a changé aussi (correction d'un bug mineur avec BDRmacro):
- lisez-moi.txt
- BDR.dll
- BDR_SUB.bas
- et bien sûr BDR.chm

Je fais une petite pause sur les fonctionnalités pour produire un autre exemple d'application, plus complexe.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
sergeauze

avatar

Nombre de messages : 391
Age : 65
Localisation : Hautes Alpes France
Date d'inscription : 09/01/2010

MessageSujet: Re: Base de données relationnelle   Dim 11 Nov 2012 - 1:08

Merci Klaus pour ton travail
J'avoue que je peine a suivre mais je m'accroche!
Je vais tout relire depuis le debut et surtout la doc
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://sergeauze.blog-video.tv/
sergeauze

avatar

Nombre de messages : 391
Age : 65
Localisation : Hautes Alpes France
Date d'inscription : 09/01/2010

MessageSujet: Re: Base de données relationnelle   Dim 11 Nov 2012 - 18:50

Salut
je viens de trouver ce tutoriel
http://cerig.efpg.inpg.fr/tutoriel/bases-de-donnees/sommaire.htm
Peut_il m'aider à comprendre ta BDR?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://sergeauze.blog-video.tv/
Klaus

avatar

Nombre de messages : 10253
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Base de données relationnelle   Dim 11 Nov 2012 - 20:32

Non, Pas du tout. C'est un tutoriel orienté bases de données classiques, interrogeables par SQL. Ce n'est pas su tout le cas de BDR qui est une base de données RELATIONNELLE.

La différence essentielle, c'est que dans les bases traditionnelles, les liens sont basées sur le CONTENU de certains champs, donc sur les DONNEES. Or, dans mon cas, les données sont NEUTRES, et même OPTIONNELLES ! Toute la structure, tous les liens sont EXTERNES aux données. On peut librement remplacer, même supprimer les données, et la structure reste pourtant valide ! Ce n'est pas le cas des bases dont parle ce tuto.

Il est tout de même intérressant pour voir, par opposition, les différences entre les deux systèmes.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Nardo26

avatar

Nombre de messages : 2294
Age : 49
Localisation : Valence
Date d'inscription : 02/07/2010

MessageSujet: Re: Base de données relationnelle   Dim 11 Nov 2012 - 22:08

Klaus à raison:
le tuto en question ne t'apportera pas d'aide par rapport à ce qu'il a mis en place...

Klaus a écrit:
Non, Pas du tout. C'est un tutoriel orienté bases de données classiques, interrogeables par SQL. Ce n'est pas du tout le cas de BDR qui est une base de données RELATIONNELLE.

Petite rectification : les bases de données classiques (interrogeables via SQL) sont également relationnelles... puisqu'on établi des relations entre les différentes tables qui compose la base. (cf clés étrangère, jointure, etc...) c'est d'ailleurs tout l'intérêt de la chose... Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
Klaus

avatar

Nombre de messages : 10253
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Base de données relationnelle   Dim 11 Nov 2012 - 22:55

Certes. Mais comme je l'ai dit, ces relations sont basées sur les données. Dans ma base, les relations son indépendantes de la structure, et c'est là la différence fondamentale.

Bien sûr, l'objectif n'est pas le même, non plus. Une base de données "normale", commerciale, peut être utilisée pas des dizaines, voire des milliers d'utilisateurs simultanés. C'est même une des raisons d'être essentielles. Ce n'est pas le cas de ma réalisation très modeste qui est explicitement limité à un usage par un seul utilisateur à la fois.

Et puis, BDR est utilisable très facilement à partir de Panoramic, ce qui n'est absolument pas le cas des bases de données classiques. On peut déjà regarder l'exemple d'une gestion de contacts à l'aide de BDR - cela donné déjà une idée de l'utilisation en tant que fichier à accès par clé (le nom étant la clé). Je suis en train de réaliser une petite facturation, cas type d'une application de gestion utilisant des bases de données, et je pense qu'un sera surpris de la simplicité de l'utilisation de BDR, abstraction faite' du contexte environnant pour créer le visuel, la gestion d'écran, le contrôle des données saisies etc. Mais des commentaires intensifs montreront l'essentiel.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10253
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Base de données relationnelle   Lun 12 Nov 2012 - 3:34

J'ai mis en ligne une première version d'un programme de facturation avec BDR. C'est logiquement dans le dossier BDR\facturation avec BDR sur MyDrive.

Ce dossier contient tout ce qui est spécifique au programme de facturation. Il n'y a plus qu'à ajouter DBR_SUB.bas, et on peut exécuter le programme.

Il démarre avec un affichage de 4 onglets.

Le premier est un onglet de synthèse donnant la liste des clients, le total de leur chiffre d'affaires et le total de l'en-cours (montants non encore réglés). Dans cet onglet, on peut créer un nouveau client, ou cliquer sur le client de démo pré-enregistré.

Dans les deux cas, on sera envoyé automatiquement vers le deuxième volet: clients. En création, il faut renseigner les zones. Ayant sélectionné un client existant, on peut modifier les zones. Dans tous les cas, le bouton "Valider" écrit le contenu des zones sur disque. Dans cet onglet, on peut aussi saisir un nom dans le champ "nom" et cliquer sue le bouton "Chercher".

Le bouton "Créer facture" permet de créer une facture pour ce client. Le 3ème onglet sera activé et on peut y saisir une date (obligatoire) et 1 à 2 lignes de facture (eh oui, c'est juste une démo !). Le bouton "Valider" vérifie la saisie et crée une entête de facture et 1 à 2 lignes de détail si tout est valide.

Dans de deuxième volet, on peut aussi utiliser le bouton "Saisir règlement" pour activer le 4ème volet. Il affiche automatiquement toutes les factures pour le client sélectionné, avec date, numéro de facture, total de facture et encours de facture. Il faut alors sélectionner une facture en cliquant dans n'importe laquelle des 4 listes, puis saisir le montant à régler (peut être partiel), puis utiliser "Valider" pour mémoriser le règlement. Le programme refuse un règlement qui dépasse le montant de l'encours. En validation, l'encours de la facture sélectionné ET l'encours général du client sera ajusté. Le résultat sera immédiatement visible en retournant dans le premier ou de deuxième volet.

Bon, je ne prétends pas avoir fait une merveille de facturation. Ce n'était pas le but d'une petite appli écrite en moins de 3 jours. Ce qu'il faut observer, c'est l'utilisation des procédures BDRxxx et DelimitedTextxxx, avec l'utilisation des variables générées par ces procédures. Toute la puissance est là.




Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10253
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Base de données relationnelle   Mar 13 Nov 2012 - 13:35

Nouvelle version.

- correction de quelques bugs mineurs
- ajout de 4 fonctions permettant d'influer sur le fonctionnement global d'une BDR:
1. autoriser ou interdire l'existence d'entités portant le même nom (interdir par défaut)
2. autoriser ou iinterdire les références circulaires dans les ensembles (interdit par défaut)

BDR_SUB.bas et BDR.chm sont mis à jour.

Pour ceux qui veulent voir ce que ça donne avec un nombre d'entités importants: il y a un sous-dossier "communes" avec deux versions différentes d'un programme qui va gérer 2x36000 entités. Moins de 2 minutes au tout premier démarrage pour créer la BDR pour demo_communes.bas, et entre 50 et 60 minutes pour demo_communes_bis.bas. Les démarrages suivants sont quasi immédiats. Et les recherches sont instantanées.

Pour gagner du temps au démarrage, je place les deux bases générées dans le dossier, avec les sources.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10253
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Base de données relationnelle   Mar 13 Nov 2012 - 20:44

Nouvelle version.

Il y a maintenant deux nouvelles fonctions qui permettent de forcer la recherche d'un nom sur "nom exact" (par défaut) ou sur nom partiel. BDR.dll, BDR_SUB.bas et BDR.chm sont adaptés.

J'ai adapté demo_communes_bis.bas à cette fonctionnalité. Ceci permet de rentrer le début d'un nom de ville, et on obtiendra la première ville (dans l'ordre alpabétique) dont le débute avec le critère saisi. On peut ensuite adapter le nom à rechercher, et recommencer.

Dans tous les cas de figures, la cherche est ultra-rapide.

On peut considérer cette application comme on projet avec un fichier avec un accès par 2 clés: le code postal et le nom de la ville. On peut utiliser indifféremment l'un ou l'autre pour accéder le fichier. Imaginez une gestion de votre cave à vin, votre collection de disques, de MP3, de vidéos... Ce type d'accès par 1, 2 ou plusieurs clés est la base même de tout type d'application de gestion. Et comme vous pouvez constater, ceci est ultra-rapide.

C'est dans ce contexte que je pense à Pan59 et son programme de traduction, qui passe forcément par un ou plusieurs dictionnaires, assez volumineux, qui sont à accéder en fonction d'une clé en forme de texte. Avec BDR, l'accès serait vraiment très rapide - recherche par dichotomie réalisée en Delphi, et non écrite par moi, mais faisant partie intégrante du composant Delphi utilisé, donc parfaitement optimisé.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10253
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Base de données relationnelle   Mer 14 Nov 2012 - 12:12

J'ai modifié demo_communes_bis.bas.

Il y a maintenant une zone de saisie en haut de l'écran. Dans cette zone, on saisit indifféremment le code postal ou le nom de la commune. L'affichage des possibilités de fait au fur et à mesure de la saisie. Un clic dans la liste en bas sélectionne cette commune et affiche ses informations.

Il n'y a donc plus la saisie dans les zones spécifiques au code postal et au nom de commune, et les bontons "Chercher" ont disparu.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10253
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Base de données relationnelle   Ven 16 Nov 2012 - 0:51

J'ai ajouté deux fonctions qui permettent de "filtrer" les éléments d'un ensemble en comparant leur nom à une chaîne de caractères servant de filtre. Seuls les noms correspondant au filtre seront retenus. Le résultat pourra être visualisé dans un mémo ou déposé comme éléments d'un nouvel ensemble.

BDR_SUB.bas et BDR.chm sont mis à jour.

J'ai utilisé cette fonction dans demo_communes_bis.bas. Il y a de nouvelles zones en haut à droite: la première permet de saisir un code postal, la seconde est pour le filtre. Puis, il y a un bouton "Filtrer". Le programme recherche alors toutes les communes du même code postal, filtre leur nom par le filtre indiqué, et affiche le résultat dans le mémo en bas.

Pour connaître les possibilités pour le filtre, consultez la doc pour les fonctions BDRfilterelementnamestomemo ou BDRfilterelementnamesstoset. Juste quelques exemples:
* (identique à critère vide) ==> tout nom sera accepté
*-* ==> uniquement les noms composés avec trait d'union
St.* ==> tout nom commençant pas St.
[ABC]*ville ==> tout nom commençant par A, B ou C et terminant par ville
etc. Il y a pas mal d'autres possibilités.


EDIT

DBR.dll contient une nouvelle fonction indépendante de BDR qui donne accès à ces filtrages, à n'importe quel programme Panoramic. C'est la fonction FilterString. On l'appelle de la manière suivante
avec la procédure BDR_SUB:
Code:
FilterString(chaine$,filtre$)
if FilterString=1
  message "correspond"
else
  message "ne correspond pas"
end_if
avec un appel DLL direct:
Code:

res% = dll_call2("FilterString",adr(chaine$),adr(filtre$))
if res%=1
  message "correspond"
else
  message "ne correspond pas"
end_if
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

Nombre de messages : 5863
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Base de données relationnelle   Ven 16 Nov 2012 - 2:30

Bravo Klaus, vraiment puissant Wink Bien joué
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Nardo26

avatar

Nombre de messages : 2294
Age : 49
Localisation : Valence
Date d'inscription : 02/07/2010

MessageSujet: Re: Base de données relationnelle   Ven 16 Nov 2012 - 8:18

J'arrive toujours pas à lancer le programme de Klaus... Sad
Tu as modifié quelque chose Jicehel pour le faire tourner ?


C'est bon, ça fonctionne ! cheers
Avant je récupérai le répertoire commune dans lequel je rajoutai BDR_SUB.bas et BDR.dll
-> Cela ne fonctionne pas

Pour que cela marche :
- J'ai récupéré la TOTALITE du répertoire BDR (sur le webdav) que j'ai mis à la racine de mon disque
- J'ai modifié :
ligne 8 : DLL_ON '..\BDR.dll" (car la dll ne se trouve pas dans le répertoire communes)
J'ai fait de même pour l'include ligne 133 : #INCLUDE "..\BDR_SUB.bas"

J'ai toujours pas pigé pourquoi la manip précédente ne veux pas marcher... peut être à cause des noms longs ?
scratch study

Sinon, une fois que l'on a réussi à le lancer, le programme marche bien Wink

Quelques remarque (juste dans le cadre des communes) :

Il faudrait filtrer les articles, les accents et les tirets.
- Par exemple, si je tape : "La chapelle en vercors", le programme ne trouve pas la commune à cause de "La" et également à cause de l'absence de tiret.
(jette un coup d'oeil à ma fonction StripAccent$() , c'est l'ensemble des caractères folkloriques que l'on rencontre dans la base Wink )

Je comprend pas le fonctionnement de la liste:
Si je tape dans "a chercher" St-André-de-sangonis, en dessous j'ai Jonquières,etc... pourquoi ? scratch

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
Contenu sponsorisé




MessageSujet: Re: Base de données relationnelle   

Revenir en haut Aller en bas
 
Base de données relationnelle
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 2 sur 3Aller à la page : Précédent  1, 2, 3  Suivant
 Sujets similaires
-
» Pbm base de données fibre Bouygues
» Une base de données relationnelle avec Panoramic
» acces et base de donnée works
» Règle élémentaires des bases-de-donnée
» Saisie des locomotives / edition sous tableur?

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos projets-
Sauter vers: