OVH Cloud OVH Cloud

Bug Vraiment penible (selection)

17 réponses
Avatar
KPITN
Bonsoir,

J'aime bien windev, surtout depuis que j'ai quitter hyperfile pour mysql
J'avais beaucoup de plantage du au temps de chargement des fichiers
Hyperfile sur le reseau.

Mais la ca m'ennerve au plus au point ce bug que j'avais remarqué depuis
longtemps mais je voulais savoir si il y avait une solution.

Selection d'une partie de code a la souris + Appui sur la touche shit (pour
faire un copier coller) et Blam windev disparait pas un message d'erreur,
il part sans rien dire.

Reouverture de windev selection du code au clavier (shift maintenue) +
appuie sur shift (pour faire le copier coller) et Blam windev disparait pas
un message d'erreur, il part sans rien dire.

Redemarrage du PC
Selection d'une partie de code a la souris + Appui sur la touche shit (pour
faire un copier coller) et Blam windev disparait pas un message d'erreur,
il part sans rien dire.


RRRRRaaaaahhh, merci windev, developper 10 x moins vite ???

7 réponses

1 2
Avatar
Fabrice Burghgraeve
bonjour.

"jacques trepp" a écrit dans le message de
news:bqfmpk$1c3$
KPITN wrote:
> KPITN <Sancho_nts(noSpam)@hotmail.com> wrote in
> news::
>


(...)

bonjour,
ça n'a peut-être rien à voir, mais au niveau de la syntaxe multilignes, je
n'écris pas
clerib,iban,modepaiement,idecheancierf)" + ... " values ('"
mais plutot :
clerib,iban,modepaiement,idecheancierf)" ...
+" values ('"



(...)

ca n'a surement rien a voir, car j'utilise l'autre syntaxe, et je n'ai pas
de problemes particuliers


--
Fabrice Burghgraeve
Computer & Services
suivez ce lien pour me repondre en prive :
http://cerbermail.com/?I3GMPRuXDD
Avatar
Roumegou
C'est vraiment surréaliste ton truc. En copiant collant ce code dans un
bouton, cela a effectivement planté WD7.
Certainement est-ce du à la longueur de ta ligne.
en la coupant avec "+... cela ne le fait plus.

Quoiqu'il en soit c'est pas très lisible quand tu mets une ligne comme cela
et je te conseille de provoquer des retour à la ligne pour bien voir ta
requête. Moi j'ai une ligne à chaque champs de sélect et par champs de
value; c'est plus facile à faire évoluer.

Autre chose qui n'a rien à voir, attention au apostrophes qui te planteront
ta requête. Utilises une fn Quote.
Eric

KPITN wrote:
KPITN <Sancho_nts(noSpam)@hotmail.com> wrote in
news::

Bon en fait j'ai trouver comment selectionner , j'ai faut une
selection de l'ensemble de ma procedure et voila le bout de code
concerné :

Rocket="insert into fournisseurs (nom, representant,portable,
regimetva, numsiret, codeape,codetvaintra,mail
,site,adressecmd,cpcmd, villecmd,telcmd,
faxcmd,contactcmd,adressepaiement,cppaiement,telpaiement,villepaiement,
faxpaiement,contactpaiement,domiciliation,codebanque,codeguichet,numcom
pte, clerib,iban,modepaiement,idecheancierf)" + ... " values ('" +
TxtNom + "','" + TxtRepresentant + "','" + TelPortable + "' " + ...
", '" + CmbRegimeTVA + "', '" + TxtNumSiret + "', '" + TxtCodeAPE +
"'" + ... ",'" + TxtCodeTVAintra + "','" + TxtMail + "', '" + TxtSite
+"'" + ... ",'" + TxtAdresseCmd + "','" + CPCmd + "', '" +
TxtVilleCmd + "'" + ... ",'" +TelCommande + "', '" + TelFaxCommande
+ "','" + TxtContactCmd + "'" + ... ",'" + TxtAdressePaiement + "',
'" + CPPaiement + "'" + ... ",'" + TelPaiement + "','" +
TxtVillePaiement + "', '" + TelFaxPaiement + "'" + ... ",'" +
TxtContactPaiement + "','" + TxtDomiciliation + "','" +
TxtCodeBanque + "'" + ... ",'" + TxtCodeGuichet + "', '" +
TxtNumCompte +"', '" + TxtCleRib + "','" + TxtIBan + "'," +
CmbPaiement + "," + CmbEcheancier + ")"





Je viens de tester par curiosité en placant ce bout de code n'importe
ou dans une fenetre et oh surprise a chaque selection ca plante !!!

si ca c'est pas un bug ....



--
Eric
Avatar
SP&B
Bonjour,

Extrémement étrange, et ça plante bien !

En modifiant le code de la manière suivante, ça ne plante plus :
Rocket="insert into fournisseurs (nom, representant,portable, regimetva,
numsiret, codeape,codetvaintra,mail ,site,adressecmd,cpcmd, villecmd,telcmd,
faxcmd,contactcmd,adressepaiement,cppaiement,telpaiement,villepaiement,faxpa
iement,contactpaiement,domiciliation,codebanque,codeguichet,numcompte,
clerib,iban,modepaiement,idecheancierf)" + ...
" values ('" + TxtNom + "','" + TxtRepresentant + "','" + TelPortable + "' "
+ ...
", '" + CmbRegimeTVA + "', '" + TxtNumSiret + "', '" + TxtCodeAPE + "'" +
...
",'" + TxtCodeTVAintra + "','" + TxtMail + "', '" + TxtSite +"'" + ...
",'" + TxtAdresseCmd + "','" + CPCmd + "', '" + TxtVilleCmd + "'" + ...
",'" +TelCommande + "', '" + TelFaxCommande + "','" + TxtContactCmd + "'" +
...
",'" + TxtAdressePaiement + "', '" + CPPaiement + "'" + ...
",'" + TelPaiement + "','" + TxtVillePaiement + "', '" + TelFaxPaiement +
"'" + ...
",'" + TxtContactPaiement + "','" + TxtDomiciliation + "','" + TxtCodeBanque
+ "'" + ...
",'" + TxtCodeGuichet + "', '" + TxtNumCompte +"', '" + TxtCleRib + "','" +
TxtIBan +...
"'," + CmbPaiement + "," + CmbEcheancier + ")"
Modification apportée, juste la dernière ligne séparée par ... au niveau de
TxtIBan + ... puis le reste à la ligne.

Désolé, j'ai refais un test avant de poster mon message et la ça replante de
nouveau, et même plus comme avant au moment de faire copier, mais dès la
sélection avec la souris.
Et pourtant ça ne plantait pas 5 minutes plus tot puisque j'ai sélectionné
le code ci-dessus, puis copié et enfin collé dans ce post.
Encore plus étrange, je met toutes les lignes en commentaire, et dès la
sélection ça plante aussi.
Autre essai, je selectionne la première ligne, même en commentaire, ça
plante, mais pas si je la sépare en 2 lignes.

Voir le bout de code ci-dessous :

cTest est une chaîne
eTest est un entier
// La sélection de la ligne ci-dessous plante Windev
cTest = "Rocket=insert into fournisseurs (nom, representant,portable,
regimetva, numsiret, codeape,codetvaintra,mail ,site,adressecmd,cpcmd,
villecmd,telcmd,
faxcmd,contactcmd,adressepaiement,cppaiement,telpaiement,villepaiement,faxpa
iement,contactpaiement,domiciliation,codebanque,codeguichet,numcompte,
clerib,iban,modepaiement,idecheancierf) + ..."
eTest = Taille(cTest)
Info(eTest)
// La sélection des 2 lignes ci-dessous ne plante pas
cTest = "Rocket=insert into fournisseurs (nom, representant,portable,
regimetva, numsiret, codeape,codetvaintra,mail ,site,adressecmd,cpcmd,
villecmd,telcmd, faxcmd"...
+
",contactcmd,adressepaiement,cppaiement,telpaiement,villepaiement,faxpaiemen
t,contactpaiement,domiciliation,codebanque,codeguichet,numcompte,
clerib,iban,modepaiement,idecheancierf) + ..."
eTest = Taille(cTest)
Info(eTest)

A par un bug de plus dans Windev, je ne vois pas vraiment la cause, hormis
la longueur de la ligne de code, mais les caractériques de Windev donnent
1000 caractères autorisés et la il n'y en a que 341. Toutefois, ça ne plante
pas en exécution, mais en sélection dans l'éditeur.

Ce problème rejoint un peu celui que j'ai rencontré en 205S, à savoir : je
saisisais un ligne de code je validais avec Enter pour passer à la ligne
suivante et WD plantait exactement de la même manière.

Sincères salutations.
--
Jean-Claude FLAJOULOT
Sécurité, Pointage & Biométrie

enlever _no.spam pour me contacter en PV.
http://perso.wanadoo.fr/securite.pointage.et.biometrie/
Avatar
KPITN
"SP&B" wrote in
news:bqgjom$itl$:

Ce problŠme rejoint un peu celui que j'ai rencontr‚ en 205S, … savoir
: je saisisais un ligne de code je validais avec Enter pour passer …
la ligne suivante et WD plantait exactement de la mˆme maniŠre.




Ouf je suis soulagé, je ne suis pas fou :D

Non mais c'est relativement penible quand ca m'arrive, et j'ai bien
l'impression que ca m'arrive uniquement quand je decrit la requete, car je
decoupe mes requetes qui sont trop longue sur une seule ligne.

Au niveau du decoupage ce n'est pas evident, en general quand c'est une
requete de selection c'est plus simple

Select
From
Where
AND
AND

ou
Select
From
X LEFT JOIN Y
...

Mais pour les requetes d'insertion et de mise a jour, j'ai du mal a les
decouper correctement, mais enfin bon ca passe kan meme.


Sinon pour les quotes j'utilise une fonction tout simple qui les doubles
(fait maison, enfin c'est pas trop dur)
je met donc apo(TxtValeur) au lieu de TxtValeur pour les insertions et les
mise a jours.

Y a t'il un moyen plus simple pour doubler les quotes ?
Avatar
Roumegou
KPITN wrote:
"> Ouf je suis soulagé, je ne suis pas fou :D



on l'est tous un peu ;-)
Moi en découpant en deux ou trois, cela ne plantait plus ???


Non mais c'est relativement penible quand ca m'arrive, et j'ai bien
l'impression que ca m'arrive uniquement quand je decrit la requete,
car je decoupe mes requetes qui sont trop longue sur une seule ligne.

Au niveau du decoupage ce n'est pas evident, en general quand c'est
une requete de selection c'est plus simple

Select
From
Where
AND
AND

ou
Select
From
X LEFT JOIN Y
...

Mais pour les requetes d'insertion et de mise a jour, j'ai du mal a
les decouper correctement, mais enfin bon ca passe kan meme.



Insert="INSERT INTO MATABLE ("+...
"ZONE1,"+...
"ZONE2,"+...
"ZONE3,"+...
"ZONE4) "+...
"VALUES ("+...
Zone1+","+...
Quote(Zone2)+","+...
Zone3+","+...
Quote(Zone3)"+...
")"
Cela peut être long en code mais plus facile à faire évoluer. Et puis tu
récupères la liste des colonnes dans Excel et avec des concat tu génères les
instructions que tu copies/colles.
Par ex, j'ai travaillé sur des tables en SQL avec 250 zones et tous les
ordres select, sqlcol, insert ont été générés ainsi.
Ou alors tu utilises des fonctions qui te génère tes ordres Insert, select,
update etc ...Une classe (à laquelle j'ai modestement contribué) va meme
bientôt être mis à dispo de la communauté par Emmanuel Lecoester.

Sinon pour les quotes j'utilise une fonction tout simple qui les
doubles (fait maison, enfin c'est pas trop dur)
je met donc apo(TxtValeur) au lieu de TxtValeur pour les insertions
et les mise a jours.



Je te disais cela car dans ton code ce n'était pas le cas.

Y a t'il un moyen plus simple pour doubler les quotes ?



Non, c'est le passage obligé.
--
Eric
Avatar
Reseau ESCA
Bonjour,

KPITN wrote:
"SP&B" wrote in
news:bqgjom$itl$:



[...]

Select
From
Where
AND
AND

ou
Select
From
X LEFT JOIN Y
...

Mais pour les requetes d'insertion et de mise a jour, j'ai du mal a
les decouper correctement, mais enfin bon ca passe kan meme.


Pour les insert
J'ecrit :
Intert table
(champs 1, champs2, Champ3,
Champs 4, champs5, Champ6,
...
ChampN1, ChampsN2, ChampN3)
Values
(Val1, Val2, Val3,
...
ValN1,ValN2,Val3)


Pour les updates :
Update Table
Set
Champ1=Val1, Champ2=Val2, Champ3=Val3
...
ChampN1=ValN1, ChampN2, ValN3
Where Cond1
And Cond2
...
And CondN

Nous avons choisis cette méthode pour que toutes nos requetes aient la meme
forme.
Deplus, moi je n'utilise que tres peu les ... de fin de ligne.
Je préfere utiliser une variable chaine chReq et utiliser += a chaque debut
de ligne.



Sinon pour les quotes j'utilise une fonction tout simple qui les
doubles (fait maison, enfin c'est pas trop dur)
je met donc apo(TxtValeur) au lieu de TxtValeur pour les insertions
et les mise a jours.

Y a t'il un moyen plus simple pour doubler les quotes ?


Voila notre fonction quote, c'est pas la meilleur mais elle fonctionne :)
////////////////////////////////////////////////////////////////////////////
/////////////////////////////////
fonction Quote(pCh)
// 1. Double les apostrophes dans la chaine
// 2. Entoure avec des apostrophes

Pos est un entier
Ch est une chaine

Ch=pCh
Pos=position(Ch,"'")
TANTQUE Pos>0
Ch=Gauche(Ch,Pos-1)+"''"+Milieu(Ch,Pos+1)
Pos=Position(Ch,"'",Pos+2)
FIN

si Ch="" alors Ch=" " // Pour SQL HF
Renvoyer "'"+Ch+"'"
////////////////////////////////////////////////////////////////////////////
/////////////////////////////////
Avatar
Manu
Roumegou wrote:
KPITN wrote:
"> Ouf je suis soulagé, je ne suis pas fou :D



on l'est tous un peu ;-)



Vu les personnes que j'ai pu rencontré aux Windeverries cette affirmation
est vraie ! :-D

Moi en découpant en deux ou trois, cela ne plantait plus ???



J'ai du faire la même chose dans un message d'info.



Non mais c'est relativement penible quand ca m'arrive, et j'ai bien
l'impression que ca m'arrive uniquement quand je decrit la requete,
car je decoupe mes requetes qui sont trop longue sur une seule ligne.

Au niveau du decoupage ce n'est pas evident, en general quand c'est
une requete de selection c'est plus simple

Select
From
Where
AND
AND

ou
Select
From
X LEFT JOIN Y
...

Mais pour les requetes d'insertion et de mise a jour, j'ai du mal a
les decouper correctement, mais enfin bon ca passe kan meme.



Insert="INSERT INTO MATABLE ("+...
"ZONE1,"+...
"ZONE2,"+...
"ZONE3,"+...
"ZONE4) "+...
"VALUES ("+...
Zone1+","+...
Quote(Zone2)+","+...
Zone3+","+...
Quote(Zone3)"+...
")"
Cela peut être long en code mais plus facile à faire évoluer. Et puis
tu récupères la liste des colonnes dans Excel et avec des concat tu
génères les instructions que tu copies/colles.



C'est surtout plus propre.

Par ex, j'ai travaillé sur des tables en SQL avec 250 zones et tous
les ordres select, sqlcol, insert ont été générés ainsi.
Ou alors tu utilises des fonctions qui te génère tes ordres Insert,
select, update etc ...Une classe (à laquelle j'ai modestement
contribué) va meme bientôt être mis à dispo de la communauté par
Emmanuel Lecoester.



Concernant la classe est est déjà opérationnelle pour tout ce qui est
select. Reste à intégrer les alias de tables et les autres types d'ordre.
En gros, j'ai encapsulé toutes les fonctions que Eric nous avez donné sur
son site dans une classe. Au niveau codage cela devient très propre:

monSQL est un cGestionSQL
monSQL:SetBase("mySQL")
monSQL:AddSelect("table1.col1")
monSQL:AddSelect("table2","col2") et oui 2 possibilités
monSQL:AddJoin(....) --> au moins on est sur des jointures que l'on fait !
et en plus la classe vérifie les
chemins pour voir
si on ne se pert pas en route
monSQL:AddWhere(....)
monSQL:AddOrder(....)

SQLExec(monSQL:rtv_commande())



Sinon pour les quotes j'utilise une fonction tout simple qui les
doubles (fait maison, enfin c'est pas trop dur)
je met donc apo(TxtValeur) au lieu de TxtValeur pour les insertions
et les mise a jours.



Je te disais cela car dans ton code ce n'était pas le cas.

Y a t'il un moyen plus simple pour doubler les quotes ?



Non, c'est le passage obligé.



Toutes les classes d'accès natifs ont cette méthode...

@+
1 2