Maintenant pour finir, vous m'avez exmpliqué qu'il fallait que je fasse une
seconde requête pour trouver la moyenne. Comment transformer une reqête
qbe en Réponse.db.
Merci encore.
Marie Benoite.
marie-benoite.julien <marie-beno...@wanadoo.fr> a écrit dans le
message : 3a589ee7@cnews...
Côme de Christen <come.de...@wanadoo.fr> a écrit dans le message :
3a59c354@cnews...
> Juste pour clarifier, l'underscore sert si l'on tape le texte de la
requête
> dans du code OPAL. En interactif dans Paradox c'est la touche F5.
>
> Pour le point 2 je crois qu'il va falloir aborder la programmation OPAL
> qui permet justement d'enchaîner les tâches à accomplir...
>
> Non ne pas fuir c'est TRES TRES simple :-)
>
> Créer une fiche vierge, créer un bouton, bouton droit de la souris dessus,
> choisir la méthode pushbutton.
>
> Taper alors son code :
>
> Var
> R1 , R2 Query
> EndVar
>
> ;// On peut récupérer automatiquement un Qbe sauvegardé sur disque
> ;// donc on tape uniquement "R1 =" puis Menu Edition/Coller Depuis
> ;// et on sélectionne son qbe sauvegardé. Vient alors comme par magie
> ;// le code OPAL de la requête, exemple :
>
> R1 = Query
>
> :MonAlias:MaTable | MonChamp |
> | Mes critères |
>
> EndQuery
>
> ;// reste à exécuter cela :
>
> if not executeQBE(R1,":Priv:__Temp") then
> errorshow("Impossible d'exécuter la requête n°1)
> ;// le double underscore permet d'effacer automatiquement cette table
temporaire
> return
> endif
>
> ;// On recommence abec le Qbe n° 2 (Coller depuis...)
>
> R2 = Query
>
> :Priv:__Temp.db | MonChamp |
> | Mes autres critères ou calculs |
>
> EndQuery
>
> if not executeQBE(R2) then
> errorshow("Impossible d'exécuter la requête n°2)
> ;// Cette requête va créer une table réponse ou answer selon la
version
> return
> endif
>
> MsgInfo("Message :","Voilà, c'est aussi simple que cela !")
>
> Allez courage, il faut franchir le pas , OPAL c'est le plus simple des
langages.
>
> Côme
>
>
>
>
>
>
>
>
> "marie-benoite.julien" <marie-beno...@wanadoo.fr> a écrit dans le
message news:
> 3a589ee7@cnews...
Taper alors son code :
R1 = Query
EndQuery
R2 = Query
EndQuery
Côme
Côme, moi c'est Côme :-))
Merci, je ne savais pas pour l'underscore possible en interactif ,
je vais tester tout cela.
Pour OPAL mon but est simplement de pousser tous les utilisateurs
Paradox à franchir le pas. J'en ai marre d'entendre partout qu'Access
est plus facile. OPAL est 10 000 fois plus simple et mieux foutu
qu'Access Basic. Tant qu'on laisse bouillonner les événements tranquillement
sur le feu c'est vraiment très simple :-))
"Jacques Chaillot" <jcha...@gibbon.fr> a écrit dans le message news: 3a59c6ad@cnews...
Côme de Christen <come.de...@wanadoo.fr> a écrit dans le message :
3a59d5a5@cnews...
Jacques Chaillot wrote:
--
Modérateur des forums français de Corel:
(news://cnews.corel.com/corelsupport.international.francais et
news://cnews.corel.com/corelsupport.international.francais.applications-bureautique)
Modérateur du forum du WP Universe pour les versions internationales
(http://www.wpwin.com/talk)
Contribuidor al sitio español de Wordperfect
(http://www.corelclub.org/wordperfect.htm)
Quant au 10 000 fois plus simple je maintiens. Quel est l'équivalent en
Access de :
Var
P TCursor
EndVar
P.open("MaTable")
P.edit()
Scan P :
P.MonChampX="Toto"
EndScan
P.endEdit()
P.Close()
Juste par curiosité ... (J'adore lire du VBA, ça me fait rire :-))
Même Delphi que j'aime par ailleurs pour sa puissance est très
éloigné de cette simplicité. On est proche du beau, n'ayons pas
peur des mots :-)))
J'ai récemment eu un peu le même genre d'impression en découvrant
PHP pour le Web. Regardez PHP, c'est beau aussi !
Amicalement, Côme
"Jacques Chaillot" <jcha...@gibbon.fr> a écrit dans le message news: 3a59d9a0@cnews...
[...]
Voila la bête en VB, c'est sûr c'est un peu plus fouillis qu'en Opal.
Dim MyWorkspace As Workspace, MyDatabase As Database
Dim MyTable As Recordset
Dim MyFile As String
Dim ErrorCondition As Integer
MyFile = "MYDB.MDB"
Set MyWorkspace = Workspaces(0)
Set MyDatabase = MyWorkspace.OpenDatabase(MyFile)
Set MyTable = MyDatabase.OpenRecordset("TATA")
Do Until MyTable.EOF
MyTable![Title] = "toto"
MyTable.Update
MyTable.MoveNext
Loop
MyTable.Close
MyDatabase.Close
@+
Pascal
http://paradoxtips.free.fr
Côme de Christen <come.de...@wanadoo.fr> a écrit dans le message :
3a5a42d2@cnews...
Pour quelqu'un qui débute avec P9 et qui n'a pas de connaissances
minimum en Anglais, en mathématiques, et sur Windows, c'est moins
évident.
Toutefois, la partie non OPAL de Paradox, permet de résoudre grand
nombre de problèmes.
En ce qui concerne les requêtes, la règle d'or est de savoir énoncer
correctement sa question.
("Ce qui ce conçoit bien, s'énonce clairement .... et les mots pour le
dire viennent aisément ")
Pour ma part, je crois que Paradox et OPAL sont des outils merveilleux,
mais pour en exploiter les possibilités il faut les travailler. Ne pas
hésiter à tester les exemples joint, à utiliser les experts etc.
Au fur et à mesure de mon propre apprentissage, j'ai découvert de
nouvelles fonctionnalités et de nouvelles interrogations.
La grande nouveauté aujourd'hui est que grâce aux différents forums,
(dont celui-çi) on est plus bloqué lorsqu'un problème survient. Aussi,
je conseille à tous de persévérer, et de ne pas hésiter à poser ses
questions au groupe.
Régis
:-))
":-) PH (-:" <cps...@cancom.net> a écrit dans le message news: 3a5b0ca4@cnews...
Je respecte ton avis. J'utilise professionnellement Paradox pour windows
depuis 1993 (la 1.0) donc je dois être très décalé des problèmes d'un
nouveau venu. Cela étant je n'étais pas moi-même un informaticien de
formation (j'ai fait des études de gestion). Après un peu de développement
sur Excel (le langage macro où effectivement l'enregistreur automatique
m'avait bien servi à cette époque) je suis passé à Paradox.
Franchement, que le modèle événementiel soit tortueux, difficile à maîtriser,
c'est vrai. Mais mon expérience est que l'on peut tout à fait le laisser de côté.
Les ennuis commencent d'ailleurs quand on veut le contrarier.
Maintenant si l'on parle d'OPAL, ma référence reste l'aide mémoire
de la version 5.0 qui faisait de mémoire autour de 150 pages
(en tous cas moins de 200 pages). C'est le signe d'un langage concis.
un premier point positif. On comprend en fait la beauté d'OPAL quand
on s'attaque à un autre langage. En général les manuels s'épaississent
à vue d'oeil , les instructions qui prenaient une ligne, en prennent cinq,
la syntaxe pour un résultat identique se complexifie sans raison, le nombre
de paramètres à fournir double ou triple à fonction équivalente etc...
Aucun langage à ma connaissance traitant de bases de données
n'est aussi concis et clair qu'OPAL. J'offre sans problème une bouteille
de champagne à tout détracteur sérieux. (Bon j'exclue par précaution
PHP que j'ai moi-même cité !)
OPAL est en anglais, oui l'argument est imparable. Pour les connaissances
mathématiques je ne comprends pas trop. Si l'on reste dans le domaine
de la gestion on utilise essentiellement les 4 opérateurs (+,-,*,/) et les
notions d'arrondi. Le reste est exceptionnel non ? Quant à windows alors
là je comprends encore moins car justement c'est l'énorme point fort d'OPAL,
on n'a pas besoin de connaître les API windows. Toute la complexité est
complètement masquée. Là il faudrait vraiment préciser ce que tu veux dire.
A+ Côme
"Régis Duc Dodon" <regis.du...@libertysurf.fr> a écrit dans le message news:
3A5AEC41...@libertysurf.fr...
> Pour mettre mon grain de sel dans ce débat, je pense qu'OPAL est surtout
> facile pour les personnes ayant des connaissances en programmation.(ce
> qui n'est pas mon cas)
[...]
Juste une petite réaction
Si on veut complètement intégrer Paradox à Windows et tirer parti de toutes
les resources offertes (API), je pense (ce n'est que mon avis) que Paradox
aurait besoin d'un petit plus.
Ce qui me dérange avec Paradox c'est l'obligation de déclarer les fonctions
et tout l'artifice qui suit notamment pour utiliser des structures, de ce
point de vue, VB à une petite avance.
C'est sur si on veut faire mumuse avec les API, on prend Delphi ou C++
Builder et le tour est joué.
J'ai testé un peu Windev et pour les API, c'est vraiment pas mal non plus.
De toute façons, on me dira que Paradox est un produit pour gérer des bases
de données et non pour faire de la programmation système. Mais bon qu'on on
est accro, on trouve toujours un moyen pour arriver à ses fins.
@+
Pascal
http://paradoxtips.free.fr
Puisqu'on est dans le sujet je cherche un moyen d'empêcher de
changer la taille de ma fenêtre Paradox. J'ai bien vu ton exemple
sur le masquage du menu système mais il reste apparant (lui n'est pas génant)
ainsi que les boutons de changement de taille (eux me gêne un peu).
Aurais-tu une idée ? Sinon ça marche pile poil, super...
":-)PH(-:" <ph...@free.fr> a écrit dans le message news: 3a5bc260@cnews...
[...]
> Ce qui me dérange avec Paradox c'est l'obligation de déclarer les fonctions
> et tout l'artifice qui suit notamment pour utiliser des structures, de ce
> point de vue, VB à une petite avance.
> C'est sur si on veut faire mumuse avec les API, on prend Delphi ou C++
> Builder et le tour est joué.
[...]
L'avantage de VB pour les API est de pouvoir utiliser les structures, en ce
qui concerne la déclaration c'est toujours le même foutoir :-)
Par contre avec Delphi, du moment que le ton uses comprend windows,
sysutils, comctrl ... c'est très simple d'appeler une DLL, en plus il te
donne la liste et le type de paramètres.
En ce qui concerne le truc pour virer les boutons de la barre de titre j'ai
essayé pleins de choses mais le résultat est toujours le même, les boutons
sont visibles et grisés.
Par contre on peut carrément virer la barre de titre de Paradox et se
retrouver directement avec le menu (comme un Mac :-))
Voila le code
uses "user32.dll"
SetWindowLong(hwnd cLong,nIndex cLong,dwNewLong cLong)cLong [stdcall
"SetWindowLongA"]
GetWindowLong(hwnd clong,nIndex clong)clong [stdcall "GetWindowLongA"]
enduses
method pushButton(var eventInfo Event)
var
app application
res longint
endvar
res = GetWindowLong(app.windowhandle(),-16)
res = SetWindowLong(app.windowhandle(),-16,res-fromhex("0xC00000"))
app.minimize()
app.maximize()
endMethod
En plaçant ce code au chargement de l'appli on peut passer de minimize à
maximize et c'est plus élégant.
Voila
@+
Pascal
http://paradoxtips.free.fr
Côme de Christen <come.de...@wanadoo.fr> a écrit dans le message :
3a5c54f8@cnews...
J'ai été trop rapide,
en remplaçant fromhex("0xC00000") par fromhex("0x80000"), la barre de titre
reste mais sans icones et sans boutons.
Ca conviendra ?
@+
Pascal
http://paradoxtips.free.fr
:-) PH (-: <cps...@cancom.net> a écrit dans le message : 3a5c8e8a@cnews...
Ma réponse à ta réponse,
> Je respecte ton avis. J'utilise professionnellement Paradox pour windows
> depuis 1993 (la 1.0) donc je dois être très décalé des problèmes d'un
> nouveau venu. Cela étant je n'étais pas moi-même un informaticien de
> formation (j'ai fait des études de gestion). Après un peu de développement
> sur Excel (le langage macro où effectivement l'enregistreur automatique
> m'avait bien servi à cette époque) je suis passé à Paradox.
J'ai la même formation que toi, mais évoluant par choix dans un milieu
plus artistique, je n'utilise Paradox que dans une configuration
semi-professionnelle et avec des gens qui n'ont pratiquement jamais
manipulé d'ordinateur.
J'utilise Paradox depuis la version 3, puis 4.5 sous DOS ensuite 5, 7
et 9.
Depuis peu un ami ma donné la documentation développer de sa version 1.0
sous windows 3.xx
Mais j'ai commencé les bases de données avec DBase 2 pour Amstrad CPC
464
> Aucun langage à ma connaissance traitant de bases de données
> n'est aussi concis et clair qu'OPAL. J'offre sans problème une bouteille
> de champagne à tout détracteur sérieux. (Bon j'exclue par précaution
> PHP que j'ai moi-même cité !)
OPAL est peut être clair et concis, mais la document ion (bouquins) en
général ne donne pas d'explications
sur quand utiliser telle ou telle fonction. (ex:quand utiliser une
boucle, et quelle est sa fonction ,etc.)
Cela s'apprend sur le tas.(ou peut être avec C++ ou Delphi)
> OPAL est en anglais, oui l'argument est imparable. Pour les connaissances
> mathématiques je ne comprends pas trop. Si l'on reste dans le domaine
> de la gestion on utilise essentiellement les 4 opérateurs (+,-,*,/) et les
> notions d'arrondi.
Pour les mathématiques, je pensais aux notions d'ensemble, d'unions et
d'intersections que l'on utilise dans les requêtes.
Je suis d'une génération ou cela s'appelait des maths modernes.
> Quant à windows alors là je comprends encore moins car justement c'est l'énorme point fort d'OPAL,
Je me suis peut être mal exprimé. Comme, je l'expliquais plus haut, j'ai
autour de moi, des personnes qui régulièrement posent des questions dans
le genre comment sauvegarder ma table sur disquette etc...
mais avec des ordinateurs flambant neuf et WPO2000.
En résume, et afin de ne décourager personne, en parodiant W. Churchill,
"Paradox est le pire SGBD, à l'exception de tous les autres."
Régis
Pour être tout à fait honnête, quand j'ai commencé, je travaillais
avec d'autres développeurs qui avaient, eux, de l'expérience sur
d'autres outils (Pdox DOS, Basic et Pascal). Cela m'a clairement aidé
à bien démarrer. Mais aujourd'hui les forums peuvent peut-être remplacer
ces bons collègues non ?
Sur les bouquins je serais moins sévère que toi mais ils ne peuvent prétendre
remplacer un bon conseiller expérimenté c'est sûr.
Pour les mathématiques , je vois ce que tu veux dire. Je suis tombé sur
un bouquin traitant des bases de donnée (Gardarin) sous un angle
mathématique (algèbre relationnel si je me souviens bien). Il m'est vite tombé
des mains ce qui ne m'empêche pas de faire toutes les requêtes dont j'ai besoin.
Y'a de l'espoir pas de panique. Je crois que ces notions concernent plus l'éventuel
concepteur d'un SGBD que les utilisateurs que nous sommes.
A+ Côme
On y est presque .. en fait je souhaite une fenêtre avec menu système
mais option agrandissement grisé ou masqué, avec bouton minimisé, avec bouton
agrandir grisé ou masqué et avec bouton fermer. J'y arrive très bien en Delphi
mais...
Le but est de pouvoir minimiser l'application , la restaurer à sa taille initiale
mais ne pas pouvoir l'agrandir. Je sais , je suis pénible...
Après promis je ne t'embête plus, heu disons .. jusqu'en février, d'accord ?
":-) PH (-:" <cps...@cancom.net> a écrit dans le message news: 3a5c95ee@cnews...
C'est également vrai que la gestion par ObjectPal des évènements est
superbe, mais il me paraît évident qu'il manque un palier (l'enregistrement
des scripts jouait ce rôle en Dos) qui permette à l'utilisateur final
d'enchaîner ses opérations sans recourir de façon visible à l'ObjectPal.
Une limite de Paradox cependant, liée directement à la question (qui aime
bien , ....):
l'imbrication de requêtes oblige à de la programmation tandis qu'avec
certains autres logiciels (a...ss) , on peut imbriquer des select dans la
même phrase sql. Si on regarde la question posée par Marie-Benoîte, la
solution Paradox manque (un tout petit peu) d'élégance. Il aurait fallu
pouvoir faire dans la requête: moyenne(DateDebut - DateFin) (encore une idée
à reprendre par Corel).
Vivement Paradox 10 !
et bonne année à tous les accros de Paradox. Qu'ils soient de plus en plus
nombreux!
Jacques Chaillot
Côme de Christen <come.de...@wanadoo.fr> a écrit dans le message :
3a5a42d2@cnews...
Suffisait de préciser :-)
remplace le fromhex("0x80000) par fromhex("0x10000") et tu n'a plus
d'agrandissement (en grisé dans le menu système et bouton de la barre de
titre grisé aussi).
@+
Pascal
http://paradoxtips.free.fr
(Je pense que j'vais mettre tout çà sur le site, çà peut toujours servir)
Côme de Christen <come.de...@wanadoo.fr> a écrit dans le message :
3a5d749b@cnews...
Merci Ô grand gourou pour cette nouvelle victoire écrasante contre ces API ténébreuses...
":-) PH (-:" <cps...@cancom.net> a écrit dans le message news: 3a5da061@cnews...
Certaines sous-requêtes sont possibles en SQL depuis le BDE 32 bit :
(Exemples tirés du LocalSQL.hlp version Borland révisée par Steve Kotersky)
SELECT C.company, C.state
FROM customer C
WHERE (C.state IN
(SELECT R.state
FROM regions R
WHERE (R.region = "Pacific")))
SELECT C.company, C.custno
FROM customer C
WHERE EXISTS
(SELECT O.custno
FROM orders O
WHERE (O.custno = C.custno) AND (O.itemstotal > 1000))
SELECT *
FROM "holdings.dbf" H
WHERE (H."pur_price" > ANY
(SELECT O."price"
FROM "old_sales.dbf"))
SELECT *
FROM "holdings.dbf" H
WHERE (H."pur_price" > ALL
(SELECT O."price"
FROM "old_sales.dbf"))
SELECT custno, company
FROM customers
UNION
SELECT custno, company
FROM old_customers
Etc...
Bon ça ne résoud pas le problème de Marie-benoite mais cela peut servir.
A+ Côme
"Jacques Chaillot" <jcha...@gibbon.fr> a écrit dans le message news: 3a5d9dc3@cnews...
> Une limite de Paradox cependant, liée directement à la question (qui aime
> bien , ....):
> l'imbrication de requêtes oblige à de la programmation tandis qu'avec
> certains autres logiciels (a...ss) , on peut imbriquer des select dans la
> même phrase sql. [...]
Such irresistible, and modest, French praise! I have taken the liberty
of forwarding your message to Corel public relations, to remind them of
the benefits of this group and its participants.
"Côme de Christen" wrote:
>
> Pascal, en ce 11 janvier 2001, nous vous proclamons Grand Gourou en Chef
> es "Windows API - Paradoxum Pilotum". Nous nous prosternerons sur votre passage
> et honorerons votre nom par delà les frontières dans tout l'internet. Gloire à vos
> connaissances, gloire à votre esprit brillant. Puisse-t-il illuminer longtemps encore
> nos modestes newsgroups. Telle est notre prière.
>
> Merci Ô grand gourou pour cette nouvelle victoire écrasante contre ces API ténébreuses...
>
--
Charles Rossiter
(South Africa)
Volunteer C_Tech
{Please reply to group only}
Jacques
Côme de Christen <come.de...@wanadoo.fr> a écrit dans le message :
3a5e3759@cnews...
Fait pas trop en mettre quand même, sinon je pourrai plus mettre mon bonnet
(et en cette saison çà me gènerais un peu) :-)
Franchement, y'a rien de surhumain à faire tout çà, il faut juste la bonne
doc (MSDN) du temps et de la patience.
Si vous avez la chance d'avoir un accès rapide à internet, allez sur le site
MSDN Online, tout est là, fonctions, paramètres ...
C'est un peu le foutoir pour la recherche mais y'à vraiment une mine
d'informations (plus que dans le win32.hlp de Delphi).
En tout cas, merci pour ce compliment çà fait plaisir à voir que ces petits
trucs puissent servir.
@+
Pascal
http://paradoxtips.free.fr
Côme de Christen <come.de...@wanadoo.fr> a écrit dans le message :
3a5e375b@cnews...
Yes such newsgroup can really help all the persons who doesn't speak english.
And it can help the other one too !
Bon week-end
"Charles Rossiter" <ross...@iafrica.com> a écrit dans le message news:
3A5EA2A6...@iafrica.com...
A+ Côme
"Jacques Chaillot" <jcha...@gibbon.fr> a écrit dans le message news: 3a5edc8d@cnews...
Bon je vais quand même aller fouiner du côté de MSDN...
Merci Ô grand gourou de nous montrer le chemin...
Bon j'arrête je sens que tu vas craquer...Allez bon WE
":-) PH (-:" <cps...@cancom.net> a écrit dans le message news: 3a5ef10f@cnews...
> Fait pas trop en mettre quand même, sinon je pourrai plus mettre mon bonnet
> (et en cette saison çà me gènerais un peu) :-)
> Franchement, y'a rien de surhumain à faire tout çà, il faut juste la bonne
> doc (MSDN) du temps et de la patience.
[...]
D'autre part, dans la version 9, par rapport à la 7, les outils de
conception de requête SQL permettent une approche assez semblable aux
requêtes QBE.
Régis
Le problème des requêtes est l'exploitation correcte des index. Ils ne sont pas
toujours utilisés correctement. Je crois qu'il faut tester les requêtes le plus longues
dans ses programmes dans les trois modes possibles (QBE,SQL,TCursor).
En outre, chaque version de BDE apporte son lot de différences. Dans les versions
16 bits, le QBE ne peut être que plus rapide puisque le SQL est transformé en QBE !
En 32 bit , après la 4.51 il semble y avoir un problème de performance pour les langages
de tables autre que Ascii (le format américain...).
Conclusion, il ne faut pas en faire une religion, il faut tester et prendre au cas par cas
la meilleurs solution pour SON problème. Encore une fois le SQL permet des choses
nouvelles. Bon le QBE permet aussi des choses particulières (Recherche sur un champ
mémo en case insensitive par exemple, impossible en SQL car le UPPER() ne passe pas)
A+ Côme
"Régis Duc Dodon" <regis.du...@libertysurf.fr> a écrit dans le message news:
3A601E5D...@libertysurf.fr...
Côme de Christen <come.de...@wanadoo.fr> a écrit dans le message :
3a62548e@cnews...