OVH Cloud OVH Cloud

[WD8] Requete

18 réponses
Avatar
Phil
Bonjour,

Je construit une requête simple avec l'assistant, le fichier Client est la
source - que l'assistant me propose.
Depuis l'éditeur de requête, je clique sur la requête et choisi "Tester la
requête".
Le test bloque immédiatement et donne l'erreur;
Erreur d'initialisation de la requête...
Fichier Client inconnu.

Mais c'est l'assistant de Windev lui-même qui m'a proposé ce fichier.
Comment peut-il ne pas le voir?
Est-ce un (autre) bug de Windev?
Comment on fait?

----------------------

Autre question
Comment on fait pour signifier en SQL de Windev qu'on veut obtenir tous les
enregistrements dont une des rubriques texte contient du texte ou encore
qu'un rubrique n'est pas vide mais sans activer les NULL. L'assistant ne
semble pas offrir cela dans ses choix.
J'ai fait plusieurs tests (depuis WDMap) mais aucun ne fonctionne.

Fichier : Client
Rubrique à vérifier si pas vide : Rem

Select * from Client where ???

Merci à l'avance.

Réal Phil

10 réponses

1 2
Avatar
Marcel.berman
salut !

On 16-Nov-2004, "Phil" wrote:

From: "Phil"
Newsgroups: fr.comp.developpement.agl.windev
Subject: [WD8] Requete
Lines: 34
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1409
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1409
Message-ID: <onsmd.58996$
Date: Tue, 16 Nov 2004 14:17:29 -0500
NNTP-Posting-Host: 66.131.123.176
X-Complaints-To:
X-Trace: weber.videotron.net 1100632660 66.131.123.176 (Tue, 16 Nov 2004
14:17:40 EST)
NNTP-Posting-Date: Tue, 16 Nov 2004 14:17:40 EST
Path:
uni-berlin.de!fu-berlin.de!feed.ac-versailles.fr!teaser.fr!wesley.videotron.net!weber.videotron.net.POSTED!not-for-mail
Xref: uni-berlin.de fr.comp.developpement.agl.windev:36391

Bonjour,

Je construit une requête simple avec l'assistant, le fichier Client est la
source - que l'assistant me propose.
Depuis l'éditeur de requête, je clique sur la requête et choisi "Tester la
requête".
Le test bloque immédiatement et donne l'erreur;
Erreur d'initialisation de la requête...
Fichier Client inconnu.

Mais c'est l'assistant de Windev lui-même qui m'a proposé ce fichier.
Comment peut-il ne pas le voir?
Est-ce un (autre) bug de Windev?
Comment on fait?




je ne sais pas, je n'utilise pas du tout l'assistant de requète ... je
préfère écrire mon propre code sql ...

----------------------

Autre question
Comment on fait pour signifier en SQL de Windev qu'on veut obtenir tous
les
enregistrements dont une des rubriques texte contient du texte ou encore
qu'un rubrique n'est pas vide mais sans activer les NULL. L'assistant ne
semble pas offrir cela dans ses choix.
J'ai fait plusieurs tests (depuis WDMap) mais aucun ne fonctionne.

Fichier : Client
Rubrique à vérifier si pas vide : Rem

Select * from Client where ???



moi je ferais :
select * from Client where Rem <> ''
les '' sont deux guillemets simples (single quote)



Merci à l'avance.

Réal Phil


de rien ... j'espère que cela va fonctionner !

--
Marcel Berman
c/o Managing Business SPRL
Allée du Petit Paris, 11
B - 1410 - Waterloo
Tel : +32 2 351.60.64
Fax : +32 2 351.45.78
Gsm : +32 475.799.477
Avatar
Phil
> > Fichier : Client
> Rubrique à vérifier si pas vide : Rem
>
> Select * from Client where ???

moi je ferais :
select * from Client where Rem <> ''
les '' sont deux guillemets simples (single quote)
>
> Merci à l'avance.
>
> Réal Phil
de rien ... j'espère que cela va fonctionner !

Marcel Berman


-------------------------------------------------------
Salut Marcel,

select * from Client where Rem <> ''



C'est ce que j'ai essayé en premier parce que c'est ce que j'aurais fait en
Foxpro (mon ex-langage).
Mais, curieusement, cela ne fonctionne pas.

Bizarrement, j'ai réussi à obtenir un résultat avec Select * from Client
WHERE LEFT(REM,1)<>' '
... mais j'avoue que c'est pas très beau comme code. Et si mon usager
commence avec un espace...!!?? Bon, je peux tester sur 5 ou 10 caracteres,
mais bon... pas très clean comme code.

Ce fichier Client a été transféré depuis un fichier .dBF, peut-etre que le
champ REM n'est pas vide et contient peut-etre autre chose que des ASCII 32
(espaces). Il faudrait que je vérifie mais cela ne se vérifie pas aussi
rapidement en WD qu'en Foxpro.

Merci tout de meme pour la suggestion Marcel

Réal Phil
Avatar
mat
Phil wrote:
Fichier : Client
Rubrique à vérifier si pas vide : Rem

Select * from Client where ???



moi je ferais :
select * from Client where Rem <> ''
les '' sont deux guillemets simples (single quote)

Merci à l'avance.

Réal Phil



de rien ... j'espère que cela va fonctionner !

Marcel Berman



-------------------------------------------------------
Salut Marcel,


select * from Client where Rem <> ''




C'est ce que j'ai essayé en premier parce que c'est ce que j'aurais fait en
Foxpro (mon ex-langage).
Mais, curieusement, cela ne fonctionne pas.

Bizarrement, j'ai réussi à obtenir un résultat avec Select * from Client
WHERE LEFT(REM,1)<>' '
... mais j'avoue que c'est pas très beau comme code. Et si mon usager
commence avec un espace...!!?? Bon, je peux tester sur 5 ou 10 caracteres,
mais bon... pas très clean comme code.

Ce fichier Client a été transféré depuis un fichier .dBF, peut-etre que le
champ REM n'est pas vide et contient peut-etre autre chose que des ASCII 32
(espaces).



Salut Réal,

Une espace <> vide! Le test de vide doit être avec " <> '' " comme le
dit Marcel. Si chez toi cela ne marche pas, il faut vérifier la
procédure d'importation. Normalement un vide reste un vide, sauf s'il y
a une conversion. P.ex. Complète(maRubrique," ",30) convertie une
rubrique vide en rubrique avec espaces.

Salutations
Mat
Avatar
Phil
"mat" a écrit dans le message de
news:419b4b66$
Phil wrote:
>>>Fichier : Client
>>>Rubrique à vérifier si pas vide : Rem
>>>
>>>Select * from Client where ???
>>
>>moi je ferais :
>>select * from Client where Rem <> ''
>>les '' sont deux guillemets simples (single quote)
>>
>>>Merci à l'avance.
>>>
>>>Réal Phil
>>
>>de rien ... j'espère que cela va fonctionner !
>>
>>Marcel Berman
>
> -------------------------------------------------------
> Salut Marcel,
>
>
>>select * from Client where Rem <> ''
>
>
> C'est ce que j'ai essayé en premier parce que c'est ce que j'aurais fait


en
> Foxpro (mon ex-langage).
> Mais, curieusement, cela ne fonctionne pas.
>
> Bizarrement, j'ai réussi à obtenir un résultat avec Select * from Client
> WHERE LEFT(REM,1)<>' '
> ... mais j'avoue que c'est pas très beau comme code. Et si mon usager
> commence avec un espace...!!?? Bon, je peux tester sur 5 ou 10


caracteres,
> mais bon... pas très clean comme code.
>
> Ce fichier Client a été transféré depuis un fichier .dBF, peut-etre que


le
> champ REM n'est pas vide et contient peut-etre autre chose que des ASCII


32
> (espaces).

Salut Réal,

Une espace <> vide! Le test de vide doit être avec " <> '' " comme le
dit Marcel. Si chez toi cela ne marche pas, il faut vérifier la
procédure d'importation. Normalement un vide reste un vide, sauf s'il y
a une conversion. P.ex. Complète(maRubrique," ",30) convertie une
rubrique vide en rubrique avec espaces.

Salutations
Mat


-------------------------------------------------------
Salut,

Je viens de vérifier et chaque caractère de la rubrique transférée est bien
un espace vide (ASCII décimale 32). Donc, le problème n'est pas là.

Je viens aussi de trouver la solution - qui a du sens quand on y pense bien
SELECT * FROM CLIENT WHERE LTRIM(REM)<>''

Je présume que le code suivant fonctionnerait aussi - et serait probablement
plus rapide en exécution (ces tests seront fait plus tard sur un nombre
important d'enregistrements).

Cond est une chaine = Complete("",50)
SELECT * FROM CLIENT WHERE REM<>Cond

Réal Phil
Avatar
mat
Bonjour Réal,

Je ne veux pas nous faire perdre du temps pour rien, finalement tu feras
comme tu préfères.

Phil wrote:
Je viens de vérifier et chaque caractère de la rubrique transférée est bien
un espace vide (ASCII décimale 32). Donc, le problème n'est pas là.



ASCII 32 est bien une espace. Par contre, vide (représenté par '' )
n'est pas un caractère. A mon avis c'est bien là où se trouve le
problème, car ce n'est par normal qu'un champ vide soit représenté par
des espaces, non plus dans les bases Paradox et Access.
Si c'est le cas, c'est probablement fait par programmation.

Je viens aussi de trouver la solution - qui a du sens quand on y pense bien
SELECT * FROM CLIENT WHERE LTRIM(REM)<>''

Je présume que le code suivant fonctionnerait aussi - et serait probablement
plus rapide en exécution (ces tests seront fait plus tard sur un nombre
important d'enregistrements).

Cond est une chaine = Complete("",50)
SELECT * FROM CLIENT WHERE REM<>Cond



A mon avis, tester un vide est plus rapide que tester une chaine de 50
caractères. Si le problème vient des données importées, pour le corriger
en Windev (enlever des espaces indésirables au début et à la fin), il
suffit de faire:

REM = droite(REM) // enlève les espaces sur la droite
REM = gauche(REM) // enlève les espaces sur la gauche

Les champs contenant uniquement des espaces sont vidés. Désormais il
sera suffisant de tester avec les standard " <> '' " .

Salutations
Mat
Avatar
mat
Phil wrote:
Je viens de vérifier et chaque caractère de la rubrique transférée est bien
un espace vide (ASCII décimale 32). Donc, le problème n'est pas là.



Travaillant sur une analyse, je me suis apperçu d'une autre raison
potentielle pour le problème. Dans la description du fichier,
Propriétés, Onglet Détails, Stockage Rubriques Textes: doit être sur
Mode 7, sinon les champs sont effectivement complètés par des espaces.
Avatar
Phil
Salut Mat,

"mat" a écrit dans le message de
news:419c7b61$
Phil wrote:
> Je viens de vérifier et chaque caractère de la rubrique transférée est


bien
> un espace vide (ASCII décimale 32). Donc, le problème n'est pas là.

ASCII 32 est bien une espace. Par contre, vide (représenté par '' )
n'est pas un caractère. A mon avis c'est bien là où se trouve le
problème, car ce n'est par normal qu'un champ vide soit représenté par
des espaces, non plus dans les bases Paradox et Access.
Si c'est le cas, c'est probablement fait par programmation.



Tu as raison et merci de me le rapeller.
C'est un fait que j'avais oublié parce qu'avec Foxpro, que le champ ou la
variable soit rempli de ASCII 32 ou vraiment vide, quand on teste avec
EMPTY(REM) on obtient True dans les deux cas. Avec REM="" aussi. J'ai
tendance à oublier que WD est plus strict dans ses comparaisons - et j'aime
mieux ça dans un sens, c'est plus vrai. Question d'ajustement.

> Je viens aussi de trouver la solution - qui a du sens quand on y pense


bien
> SELECT * FROM CLIENT WHERE LTRIM(REM)<>''
>
> Je présume que le code suivant fonctionnerait aussi - et serait


probablement
> plus rapide en exécution (ces tests seront fait plus tard sur un nombre
> important d'enregistrements).
>
> Cond est une chaine = Complete("",50)
> SELECT * FROM CLIENT WHERE REM<>Cond

A mon avis, tester un vide est plus rapide que tester une chaine de 50
caractères. Si le problème vient des données importées, pour le corriger
en Windev (enlever des espaces indésirables au début et à la fin), il
suffit de faire:

REM = droite(REM) // enlève les espaces sur la droite
REM = gauche(REM) // enlève les espaces sur la gauche



Heu... tu veux dire l'inverse je présume. (Ex. : Gauche(REM) // enlève les
espaces à droite, ...)
De toute facon le résultat est le meme quand on fait les 2 commandes. C'est
une excellente idée.

Les champs contenant uniquement des espaces sont vidés. Désormais il
sera suffisant de tester avec les standard " <> '' " .

Salutations
Mat



Merci.
Réal Phil
Avatar
Phil
"mat" a écrit dans le message de
news:419c82f3$
Phil wrote:
> Je viens de vérifier et chaque caractère de la rubrique transférée est


bien
> un espace vide (ASCII décimale 32). Donc, le problème n'est pas là.

Travaillant sur une analyse, je me suis apperçu d'une autre raison
potentielle pour le problème. Dans la description du fichier,
Propriétés, Onglet Détails, Stockage Rubriques Textes: doit être sur
Mode 7, sinon les champs sont effectivement complètés par des espaces.


----------------------------------------------------------
Bon point.
Merci de l'apporter à mon attention.

Réal
Avatar
Eric Demeester
dans (in) fr.comp.developpement.agl.windev, mat
ecrivait (wrote) :

Bonjour,

en Windev (enlever des espaces indésirables au début et à la fin), il
suffit de faire:

REM = droite(REM) // enlève les espaces sur la droite
REM = gauche(REM) // enlève les espaces sur la gauche



Pourquoi pas directement REM = (SansEspace(REM)) ?

--
Eric
Avatar
Phil
"Eric Demeester" <eric+ a écrit dans le message de
news:
dans (in) fr.comp.developpement.agl.windev, mat
ecrivait (wrote) :

Bonjour,

> en Windev (enlever des espaces indésirables au début et à la fin), il
> suffit de faire:
>
> REM = droite(REM) // enlève les espaces sur la droite
> REM = gauche(REM) // enlève les espaces sur la gauche

Pourquoi pas directement REM = (SansEspace(REM)) ?

Eric


-----------------------------------
Définitivement mieux!
1 2