Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[WD7] [Acces natif Oracle] Rupture de sequence++

90 views
Skip to first unread message

Mighty-Mouse

unread,
Feb 20, 2003, 6:22:42 AM2/20/03
to

[MyLife]Il ya un bout de temps j'avais demandé des renseignements sur l'accès
natif pour savoir si il fonctionnait bien tout ça ... les réponses étaient du
genre pourquoi payer quand nous on a un truc gratos qui le fait ??? la réponse
est bien entendu votre truc gratos mais il le fait pas ... bein oui l'accès
natif Windev marche bien, il n'y a rien à réecrire sauf ptet quelques requetes
qui bloquent.[/MyLife]

La commande HExecureRequeteSQL marche presque tout le temps.
Des fois les sommes sont renvoyées à zéro :) un group by ou un order by doit
être fait sur un champ non ambigue car on peut pas spécifier la table (cause de
réécriture de la requête sous oracle par l'accès natif via une sous requête ...
tout un binz :) )
Donc on s'expose à des ennuis surtout que des fois un HLitRecherchePremier peut
ne pas fonctionner, dans un contexte utilisant HExecuteRequeteSQL, et renvoyer
toute la table, comme un hlitpremier :) Chose génante quand on veut supprimer un
enregistrement (.....)

sinon pour en venir à la rupture de segment car si personne ne rencontre ces
problèmes peut-être que quelqu'un aura rencontré celui là dans ces aventures
avec Oracle :

Erreur
ORA-01002 : Extraction en rupture de séquence

En gros le parcours semble s'arrêter au bout de 1000 enregistrements. Que ce
soit en HLitRecherchePremier d'une table ou d'une requête initialisé via
HExecuteRequeteSQL. Un test rapide montre que le problème ne se produit que
lorsque des mise à jour de la base sont effectuées pendant le parcours, sans
qu'il y ait besoin de toucher la table parcouru.

En gros ceci plante au 1000° HLitSuivant(A) :

HlitPremier(A)
tant que pas hendehors(A)
hlitPremier(B)
hModifie(B)
HLitSuivant(A)
fin

Ce 1000 correspond au paramètre par défaut de l'option de prefetch mais rien ne
change si on le change ... sauf s'il ne s'est pas changé :) mais on ne met pas
un prefetch à 500 000 pour les beaux yeux de windev ???? si ??

Mes tables A et B sont segmentées.
--
Ce message a été posté via la plateforme Web club-Internet.fr
This message has been posted by the Web platform club-Internet.fr

http://forums.club-internet.fr/

Emmanuel Lecoester

unread,
Feb 20, 2003, 7:02:51 AM2/20/03
to
> [MyLife]Il ya un bout de temps j'avais demandé des renseignements sur
l'accès
> natif pour savoir si il fonctionnait bien tout ça ... les réponses étaient
du
> genre pourquoi payer quand nous on a un truc gratos qui le fait ??? la
réponse
> est bien entendu votre truc gratos mais il le fait pas ... bein oui
l'accès
> natif Windev marche bien, il n'y a rien à réecrire sauf ptet quelques
requetes
> qui bloquent.[/MyLife]

Je ne sais pas comment je dois le prendre. L'accès natif Oracle4WD semble
fonctionnait (parait-même que des projets l'utilisent). Qu'est ce que
l'accès natif Oracle4WD ne fait-il pas ? L'accès natif PC-Soft fonctionne
avec comme argument majeur que toutes les requetes simples sont supportées
SANS MODIFICATION de code, il ne suffit qu'à intégrer la nouvelle anlayse
(vu de mes yeux vu).

> La commande HExecureRequeteSQL marche presque tout le temps.

As-tu pris contact avec le ST car cela devrait les interesser.

> Des fois les sommes sont renvoyées à zéro :) un group by ou un order by
doit
> être fait sur un champ non ambigue car on peut pas spécifier la table
(cause de
> réécriture de la requête sous oracle par l'accès natif via une sous
requête ...
> tout un binz :) )

Je demande plus d'explications,

> Donc on s'expose à des ennuis surtout que des fois un HLitRecherchePremier
peut
> ne pas fonctionner, dans un contexte utilisant HExecuteRequeteSQL, et
renvoyer
> toute la table, comme un hlitpremier :) Chose génante quand on veut
supprimer un
> enregistrement (.....)

Des preuves, des exemples ?

> sinon pour en venir à la rupture de segment car si personne ne rencontre
ces
> problèmes peut-être que quelqu'un aura rencontré celui là dans ces
aventures
> avec Oracle :
> Erreur
> ORA-01002 : Extraction en rupture de séquence

<HS>
Une simple recherche sur otn permet de retrouver ce genre de réponses :
Error Message: "ORA-01002: fetch out of sequence"
The Connection by default has the AutoCommit turned ON. However, to use a
SQL that has 'for update' you need to have autoCommit to be turned OFF.
Hence, the solution is to set autocommit to false.
</HS>

En gros pour traduire en Windev, l'accès natif doit faire un SQL SELECT ...
FOR UPDATE. Par contre l'autocommit de ton client doit être a TRUE.

> [...]


>
> HlitPremier(A)
> tant que pas hendehors(A)
> hlitPremier(B)
> hModifie(B)
> HLitSuivant(A)
> fin

Enfin un exemple :-)
Normal qu'il fasse un select for update vu que dans ta boucle tu fais un...
mais oui bien sur un UPDATE. Faudrait peut-etre revoir ton ordre car ce que
tu fais, a vue de nez, c'est un UPDATE B set... where B.... in (select ...
from A) .

> [...]


> Mes tables A et B sont segmentées.

Ca veux dire quoi segmentées? Partitionnées ? tu utilises quel client
oracle, quelle serveur Oracle? autant de questions auxquelles j'aimerai que
tu répondes.

<PERSO>
PS : je n'aime pas trop ce genre de mail car on jette en pâture des infos
disparates sans avancer aucune solution, sans prendre la peine de faire
quelques petites recherches, sans essayer de comprendre ce qui se passe et
pourquoi ça ce passe et comment le résoudre. Mais bon c'est un news
d'entre-aide. J'espère que je l'ai fais.
</PERSO>

Emmanuel Lecoester
perso.wanadoo.fr/sql4wd


Firetox

unread,
Feb 20, 2003, 7:55:49 AM2/20/03
to
Bonjour,

> [MyLife]Il ya un bout de temps j'avais demandé des renseignements sur
l'accès
> natif pour savoir si il fonctionnait bien tout ça ... les réponses étaient
du
> genre pourquoi payer quand nous on a un truc gratos qui le fait ??? la
réponse
> est bien entendu votre truc gratos mais il le fait pas ... bein oui
l'accès
> natif Windev marche bien, il n'y a rien à réecrire sauf ptet quelques
requetes
> qui bloquent.[/MyLife]
>
oui pourqoui pas ......

> HlitPremier(A)
> tant que pas hendehors(A)
> hlitPremier(B)
> hModifie(B)
> HLitSuivant(A)
> fin

sauf que la c'est un grosse erreur, vous voulez programmer sur SQL comme du
HF
dans votre cas il doit y avoir allez a la louche ici ( ex 10 enreg dans A et
10 dans B) donc votre code
genere : 10 requetes alors qu'en SQL 1 SEULE EST SUFFISANTE.
quant vous aurez des tables dans votre base avec des million de lignes comme
nous vous direz que SQL c'est null
et vaut mieux garder HF (dans votre cas oui) mais avec 1 SEULE REQUETE vous
seriez plus rapide

Bref je retournerai votre phrase :
[MyLife]réponse > est bien entendu votre truc gratos mais il le fait pas ...


bein oui l'accès
> natif Windev marche bien, il n'y a rien à réecrire sauf ptet quelques
requetes
> qui bloquent.[/MyLife]

en disant

[MyLife]réponse > est bien entendu votre truc gratos mais il le fait pas ...


bein oui l'accès
> natif Windev marche bien, il n'y a rien à réecrire sauf ptet quelques

requetes qui bloquent.et me fait programmer comme un PIED : mais c'est pas
grave[/MyLife]

l'acces natiof gratuit a au moinsl'avantage de vous laisser programmer en
vrai SQL et non en pseudo HF.
Mais il est vrai que le choix de chacun se respecte. mais payer Oracle aussi
cher pour avancer moins vite que HF (car tel sera le cas dans votre
programmation HF 5000 lignes /s Oracle 4000/4500 / seconde) ,mais la ou vous
avez besoin de 1000 lecture Oracle en aura besoin de Une , mais
malheureusement pas avec votre style de programmation

bon dev
@+

FIRETOX

"Mighty-Mouse" <Mighty...@freesurf.fr> a écrit dans le message de news:
2003220-12...@foorum.com...

Tanguy Pruvot

unread,
Feb 20, 2003, 10:13:13 AM2/20/03
to
Je ne sais pas ce qu'il en est avec oracle, mais pour moi, la meilleure
méthode reste les SQLxxx par odbc,
les erreurs sont retournées par le serveur de toute facon, et les
transactions y sont gérées aussi.

Il ne reste plus qu'a intépréter les codes d'erreurs retournés pour savoir
si c'est Intégrité, doublon, Blocage, probleme réseau, ou encore pb
serveur...

les requetes sont intéprétées uniquement par le serveur, windev ne gére que
la séparation des résultats, et au moins la, il ne peut pas se tromper...

Bon, ok, on reste spécifique au type de serveur, au niveau de certaines
requetes... mais si l'on sait programmer avec instinct, on peut gérer ca
sans soucis, en oubliant le HF et Access biensur ;-)

Mighty-Mouse

unread,
Feb 21, 2003, 7:25:23 AM2/21/03
to

plom plom ...
quelle ambiance sur ce forum :D

je rapelle que je n'ai pas le choix du redéveloppement. mon client prends
l'accès natif pour ce qu'il doit faire : accéder à une base oracle en lieu et
place de la base hyperFile.

keudonc c'est ptet bien un problème de autocommit mais où est-ce que je le
configure ? lors de la connection à la base ?

rompeti...@ifrance.com

unread,
Feb 21, 2003, 8:54:20 AM2/21/03
to
Mighty-Mouse <Mighty...@freesurf.fr> a écrit:

> je rapelle que je n'ai pas le choix du redéveloppement. mon client prends
> l'accès natif pour ce qu'il doit faire : accéder à une base oracle en lieu et
> place de la base hyperFile.

Oula, attention !
Tu utilises donc une base de données avec un accès natif te permettant
d'ECRIRE dans une base de données tierce.
Prend garde à ce qu'un stagiaire ne vienne corrompre les données !
Tu devrais utiliser HF, c'est idéal pour se prémunir des stagiaires...

--
Romain Petit

Emmanuel Haefele

unread,
Feb 21, 2003, 9:00:20 AM2/21/03
to
rompeti...@ifrance.com wrote:

> Oula, attention !
> Tu utilises donc une base de données avec un accès natif te permettant
> d'ECRIRE dans une base de données tierce.
> Prend garde à ce qu'un stagiaire ne vienne corrompre les données !
> Tu devrais utiliser HF, c'est idéal pour se prémunir des stagiaires...

Merci Romain pour ce que tu viens de dire, je retrouve tout doucement le
sourire et ça fait vraiment du bien en ces temps difficiles ;-)


Amicalement,

Emmanuel Haefelé.


Mighty-Mouse

unread,
Feb 21, 2003, 9:12:07 AM2/21/03
to

houlala ya rien de pire que l'humour d'informaticien :)
sauf peut être l'humour des développeurs windev ??

el

unread,
Feb 21, 2003, 2:55:10 PM2/21/03
to
Bonsoir,

> houlala ya rien de pire que l'humour d'informaticien :)
> sauf peut être l'humour des développeurs windev ??

Pour comprendre il y a ceux qui y était et ceux qui n'y était pas :-)


el

unread,
Feb 21, 2003, 3:05:22 PM2/21/03
to
> quelle ambiance sur ce forum :D
Disons que tu arrives comme un cheveu sur la soupe avec beaucoup de
constatations sans exemples et sans rien expliquer (ce qui manque à la
classe Oracle4WD par exemple. Tu sais c'est avec une critique constructive
que l'on peut faire avancer ce projet)

> je rapelle que je n'ai pas le choix du redéveloppement. mon client prends
> l'accès natif pour ce qu'il doit faire : accéder à une base oracle en lieu
et
> place de la base hyperFile.

Si ton client utilise ORACLE de manière professionelle (j'aime bien ce mot
ces temps ci). Il doit donc avoir un DBA (Database Administrator) et lui à
la réponse à toutes tes réponses.

> keudonc c'est ptet bien un problème de autocommit mais où est-ce que je le
> configure ? lors de la connection à la base ?

Je dirai à vue de nez que c'est bien au niveau de la connexion (Tu peux te
rapprocher du support technique de PC-Soft car ce cas là il ont du l'avoir
vu les volumétries que Oracle peux accepter).

Passe en privé si tu veux, je verrai ce que je peux faire avec mes pietres
connaissances Oracle :-)


rompeti...@ifrance.com

unread,
Feb 21, 2003, 2:09:41 PM2/21/03
to
"el" <elec...@netcourrier.com> a écrit:

> Pour comprendre il y a ceux qui y était et ceux qui n'y était pas :-)

Ou alors on peut lire le compte-rendu des WDeries :
http://www.windevasso.org/download/w2002/pcsoft.pdf
(page 4, colonne de gauche)

ou bien sur le NG d'en face, message du ST du mardi 18 février 2003
13:04 (sujet : Re: liaison ODBC avec base windev)

ou bien dans l'aide mot clé "ODBC, Driver ODBC sur Hyper File 7"

A+
--
Romain Petit

0 new messages