(1) 2 »


A Propos de SQL
Developpeur WDF
Inscrit:
10/02/2005 14:25
De Lille
Post(s): 123
Quelqu'un pourrait il m'indiquer ou je puis trouver de la doc concernant SQL et Windev

J'aimerais savoir les types d'instruction supporté :

SELECT * INTO ... FROM ...
INSERT INTO ... SELECT * FROM ...
ALTER TABLE ADD Champ Text(10)
etc...


Merci a vous

Contribution le : 21/04/2005 09:56
_________________
Windev POOOOWWWWAAA!!!!!!
Créer un fichier PDF de la contribution Imprimer


Re: A Propos de SQL
Developpeur WDF
Inscrit:
10/02/2005 14:25
De Lille
Post(s): 123
Est il possible d'ajouter un champ dans une table decrit dynamiquement avant a l'aide de SQL???

Contribution le : 21/04/2005 10:34
_________________
Windev POOOOWWWWAAA!!!!!!
Créer un fichier PDF de la contribution Imprimer


Re: A Propos de SQL
Animateur WDF
Inscrit:
26/06/2002 16:24
De wdforge.org
Post(s): 2822
Même en SQL sur Hypefile, le SQL est un language !
Ainsi ALTER et SELECT ne peuvent être assosiées dans la même requête.
La clause SELECT fait partie de la partie LMD (langage de manipulation de données) de SQL alors qu'ALTER fait partie du LLD (langage de définition de données).

Ainsi, vouloir, dans la même requête, modifier la définition des données et les manipuler est une erreur.
Rien n'empèche de procéder en deux étapes.

Contribution le : 21/04/2005 11:24
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer


Re: A Propos de SQL
Developpeur WDF
Inscrit:
10/02/2005 14:25
De Lille
Post(s): 123
Non je sais qu'on ne peut faire un alter table avec un select masi j'ai essayé de faire une requete ALTER TABLE masi je n'y arrive pas

y a t il une syntaxe particuliere???

Les requetes CREATION DE TABLE n'existe pas en windev???

Exemple :
SELECT * INTO [TABLEDEST] FROM [TABLEORIG]

Contribution le : 21/04/2005 12:22
_________________
Windev POOOOWWWWAAA!!!!!!
Créer un fichier PDF de la contribution Imprimer


Re: A Propos de SQL
Animateur WDF
Inscrit:
26/06/2002 16:24
De wdforge.org
Post(s): 2822
SQL n'est pas le language par défaut sur HyperFile.
L'aide en ligne donne la liste des commandes SQL disponible : "Commandes SQL disponibles dans une requête SQL"

ALTER n'y figure pas.
passer par les Hxxx.

Contribution le : 21/04/2005 13:54
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer


Re: A Propos de SQL
Attention sous HF il ne s'agit pas d'une base type SQL.
Le SQL qui est un langage a été implémenté mais si tu es amené a utiliser que HF, les ordres H sont fait pour, et sont d'autant plus efficace sous HF.

De plus, (je ne retrouve plus l'info) mais je ne suis même plus certains que HF respecte SQL2.

Et il est fort probable, que si tu programmes en SQL sous HF, que tu as une transformation de ta requête en ordre H.. avant, rendant de ce fait la vitesse meilleure sous HF en accès H...

Contribution le : 21/04/2005 15:59
Créer un fichier PDF de la contribution Imprimer


Re: A Propos de SQL
Developpeur WDF
Inscrit:
10/02/2005 14:25
De Lille
Post(s): 123
OK j'ai scruté l'aide et en effet le moteur Hyperfile reconnait certaines fonctions SQL

Donc,
ALTER TABLE [NomTable] ADD/DROP COLUMN
SELECT * INTO [TableDest] FROM [TableOrig]
INSERT INTO [TableDest] SELECT * FROM [TableOrig]

ne sont pas supportées par le moteur Hyperfile

Alors ma question est la suivante :

Comment ajouter une colonne a une table(fichier)decrite dynamiquement auparavant (decrite au moment de l'import d'un fichier texte de longueur fixe)

Le but étant de faire un tri postal sur le fichier texte importé par rapport a une table de tri (TABLE_RB : DEP(departement),ZONE(zone du departement],LIBELLE(libelle du centre de réception))

La requete se présente ainsi :

SELECT * FROM [TableFichierImporté],TABLE_RB WHERE 
LEFT([TableFichierImporté].Champ7,2)=TABLE_RB.DEP ORDER BY TABLE_RB.ZONE, Champ7, Champ8


NB : Champ7 représente le code postal, donc j'extrait le departement et le lie avec celui de la table de tri (TABLE_RB)
Champ8 représente la commune

La table fichier est trié en premier sur la zone, sur le code postal et sur la ville

La requete fonctionne correctement et je voudrais créer une table fichier triée. Le probleme réside dans le HLitPremier (lors du parcours de la requete pour enregistrement dans la nouvelle table fichier qui semble (d'apres l'analyseur) tres gourmand (en temps d'éxécution : ex-> 5 secondes pour une table fichier de 2130 lignes de 12 champs)

J'essaie de trouver une solution pour la rendre plus rapide car sur un fichier de 44000 lignes le temps d'execution depasse les 2 minutes (HLitPremier consomme a lui seul 129 secondes)

J'ai essayé HOptimiseRequete, HStatCalcule mais rien a faire je gagne des poussieres de secondes

Votre aide est la bienvenue car la je galere grave

PS : Merci pour vos conseils ca m'aide dans mon autoformation

Contribution le : 21/04/2005 16:27
_________________
Windev POOOOWWWWAAA!!!!!!
Créer un fichier PDF de la contribution Imprimer


Re: A Propos de SQL
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour,


En y regardant de plus près je trouves ta requête bien compliquée

Tu fais un SELECT de toutes les rubriques des tables:
-[TableFichierImporté]
-TABLE_RB
ou la jointure entre les deux tables corresponds pour
TABLE_RB à TABLE_RB.DEP et pour l'autre à
LEFT([TableFichierImporté].Champ7,2)

Ce qui me parrait pour le moteur HyperFile pas le plus performant car la jointure ne représente pas une égalitée parfaite.

Il me semble en plus que WinDev est relativement lent sur les tris dans les requêtes, donc à tester dans un premier temps la requete sans effectuer de tri car le tri peut être effectué surement autrement

Je reste persuadé que l'utilisation des vues serait à mon avis plus rapide car les vues n'ont pas de gestion d'accès concurrents et de plus manipulé en memoire.(donc très rapide)

RAPPEL:
Le langage Sql de WinDev n'utilise pas la 'DDL'
Data Définition language
partie du SQL qui permet de créer des bases de données, des tables, des index, des contraintes…

Contribution le : 22/04/2005 14:50
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: A Propos de SQL
Anonyme
Citation :
Ce qui me parrait pour le moteur HyperFile pas le plus performant car la jointure ne représente pas une égalitée parfaite.


Je comprend pas trop ce que tu appelles "egalite parfaite"

En fait, je fais un left(Champ7,2) afin d'extraire le departement (Champ7=Code Postal) et pouvoir le lier a ma table de tri

Mais, je vais essayer avec les vues

Merci beaucoup de votre aide

Bon WE

Contribution le : 22/04/2005 17:02
Créer un fichier PDF de la contribution Imprimer


Re: A Propos de SQL
Developpeur WDF
Inscrit:
10/02/2005 14:25
De Lille
Post(s): 123
C T moi dsl

Contribution le : 22/04/2005 17:03
_________________
Windev POOOOWWWWAAA!!!!!!
Créer un fichier PDF de la contribution Imprimer


Re: A Propos de SQL
Developpeur WDF
Inscrit:
10/02/2005 14:25
De Lille
Post(s): 123
En effet l'utilisation des vues et beaucoup plus rapide

Je suis passé en dessous de la minute (53 secondes) pour mes 44000 lignes

Une autre question :

Pensez vous qu'il est possible de définir une clé sur une table décrite dynamiquement precedement ou y ajouter un champ.

Merci

Contribution le : 25/04/2005 15:22
_________________
Windev POOOOWWWWAAA!!!!!!
Créer un fichier PDF de la contribution Imprimer


Re: A Propos de SQL
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour,

WinDev ne permet pas (a ma connaissance de facon simple) l'ajout de champs dans un fichier déjà défini.

Cependant il est possible de décrire dynamiquement un fichier avec les clées voulues et de créer ce fichier puis de le manipuler.

De cette facon en créant un nouveau fichier avec la structure attendue, puis en transférant le contenu du fichier A vers B (moulinette) vous pouvez vous en sortir.

PS : pour les vues, n'oubliez pas que vos données sont chargées en mémoires, il est donc souhaitable de limiter au maximum le nombre de rubriques à manipuler.

Contribution le : 25/04/2005 16:24
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: A Propos de SQL
Developpeur WDF
Inscrit:
10/02/2005 14:25
De Lille
Post(s): 123
Citation :
PS : pour les vues, n'oubliez pas que vos données sont chargées en mémoires, il est donc souhaitable de limiter au maximum le nombre de rubriques à manipuler.


Je suis tout a fait d'accord avec vous cependant toutes mes rubriques sont utiles car il s'agit de fichiers composées d'adresses de clients et d'informations les concernant et sont donc tous nécessaires pour les documents du mailing.

PS : pour le transfert d'un fichier vers un autre quel méthode et la plus rapide??
J'ai deja essayé mais je pense que ce sera plus long du fait qu'il faut copier tous les enregistrements d'un fichier vers l'autre (cf "Copier un fichier Hf Vers un autre:
WDFORGE

Contribution le : 25/04/2005 16:37
_________________
Windev POOOOWWWWAAA!!!!!!
Créer un fichier PDF de la contribution Imprimer


Re: A Propos de SQL
DSI WDF
Inscrit:
15/03/2005 14:22
Post(s): 238
Pour la modification de fichiers, j'ai utilisé les descripteurs de fichiers et de rubrique.

POur le départ, j'ai créé le fichier dans l'analyse, mais je ne l'ouvre jamais. Quand j'ai besoin, parcour ces rubriques et transfère les propriétées de ces dernière dans un descripteur. Aprés ce traitement (rapatriement des rubriques communes), j'ajoute par code les rubriques spécifiques à ce que j'ai à rentrer.

Si tu part sur un méthode simillaire, ajoute un fichier à ton analyse qui mémorise les fichiers à utiliser.

Contribution le : 26/04/2005 09:47
Créer un fichier PDF de la contribution Imprimer


Re: A Propos de SQL
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour,

Si les deux fichiers sont de meme structure je pense qu'une requete sql serait le plus simple à mettre en place avec je pense de bonne performance.

l'utilisation de la fonction HCopieEnreg() dans une boucle
POUR TOUS
 HCopieEnreg (<Fic_Source>, <Fic_Dest>, HValDefaut )
 HAjoute(<Fic_Dest>)
FIN


L'utilisation du XML
HExporteXML(<Fic_Source>,<FichierXML>,hExpCréation)
HImporteXML(<Fic_Dest>,<FichierXML>, hImpNormal )


Plus compliqué l'utilisation des vues
Créer une vue sur le fichier source
Exemple
HCréeVue (Vue1,,"*", hVueExclusive,1)
1 pour remplie la vue avec un seul enregistrement(optimisation)

Créer une vue sur le fichier destination en limitant le nombre de page idem au dessus

utilisation de la fonction HFusionneVue()
HFusionneVue ( , , >VueSource2> ,...
hVueUnion )

Je n'est pas utilisé cette dernière technique qui reste à tester et qui est purement théorique.

Contribution le : 26/04/2005 10:49
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: A Propos de SQL
Developpeur WDF
Inscrit:
10/02/2005 14:25
De Lille
Post(s): 123
OK je vais tester la fusion des vues.
Je vous tiens au courant.

Merci

Contribution le : 26/04/2005 10:54
_________________
Windev POOOOWWWWAAA!!!!!!
Créer un fichier PDF de la contribution Imprimer


Re: A Propos de SQL
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour,


Ne pas omettre de faire des sauvegardes de données avant les tests

Contribution le : 26/04/2005 12:06
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: A Propos de SQL
Developpeur WDF
Inscrit:
10/02/2005 14:25
De Lille
Post(s): 123
Bon j'ai créé au total 8 fonctions pour le tri de mon fichier importé.

J'ai essayé avec les vues mais c'est plus long car la fusion consomme pas mal de temps.
J'ai essayé avec l'export-import XML et je suis dans le meme ordre de temps que mes fonctions précédentes donc voici celle que j'ai retenu pour mon projet.
Je suis a 51 secondes pour le tri + la création de la table triée

Code :
PROCEDURE prc_TriReseauB5(cNomRub est une chaîne, sCond est une chaîne, nNbElt est un entier,tab_Chps)
i est un entier
j est un entier
sRequete est une chaîne
sTableDesc est une Description de Fichier
sChpDesc est une Description de Rubrique
sRequeteAjout est une Source de Données
MaVue est une Source de Données

//Description de la nouvelle table triée en RéseauB
sTableDesc..Nom={cNomFichierHF}+"TRI"
sTableDesc..CryptageFic=hCryptageStandard
sTableDesc..Type=hFichierNormal

//Description des rubriques du fichier
POUR i=1 A {cNomFichierHF}..NbRubrique
	sChpDesc..Nom="Champ"+i
	sChpDesc..Type=hRubTexte
	sChpDesc..Taille=255
	HDécritRubrique(sTableDesc,sChpDesc)	
FIN

HAnnuleDéclaration({cNomFichierHF}+"TRI")

//description du fichier dans l'analyse
HDécritFichier(sTableDesc)

//creation du fichier HF
HCréation({cNomFichierHF}+"TRI")

HCréeVue(MaVue,cNomFichierHF,"*",hVueExclusive)
HOptimise(MaVue)

sRequete="SELECT * FROM ["+{MaVue}+"] INNER JOIN TABLE_RB ON (LEFT("+lst_chp_fin[1][1]+",2)=TABLE_RB.DEP) 
ORDER BY TABLE_RB.ZONE,"+cNomRub

HExécuteRequêteSQL(sRequeteTriRB,sRequete)

HLitPremier(sRequeteTriRB)

TANTQUE PAS HEnDehors(sRequeteTriRB)
	HCopieEnreg({cNomFichierHF}+"TRI",sRequeteTriRB,hValDéfaut)
	HAjoute({cNomFichierHF}+"TRI")
	HLitSuivant(sRequeteTriRB)
FIN


Esperant que cela aidera quelqu'un.


PS : n'hésitez pas a me faire part de vos remarques si vous pensez que certains point pourraient etre ameliorer.

PS2 : il me reste a effectuer les controles d'erreur

Merci enormement pour votre aide et LONGUE VIE A WDFORGE

Contribution le : 26/04/2005 13:49
_________________
Windev POOOOWWWWAAA!!!!!!
Créer un fichier PDF de la contribution Imprimer


Re: A Propos de SQL
Developpeur WDF
Inscrit:
10/02/2005 14:25
De Lille
Post(s): 123
Je vais essayer de créer un algorithme de tri afin de ne pas utiliser d'instruction SQl et peu etre pouvoir améliorer le temps d'execution.

Si quelqu'un a de la doc concernant les tris sur plusieurs éléments je suis preneur

En vous remerciant

Contribution le : 26/04/2005 17:31
_________________
Windev POOOOWWWWAAA!!!!!!
Créer un fichier PDF de la contribution Imprimer


Re: A Propos de SQL
DSI WDF
Inscrit:
15/03/2005 14:22
Post(s): 238
A mon avis, tout algo de tri dans WD sera plus lent que ce qui est fait en SQL.

Cependant, c'est tout de même interessant, car il m'est arrivé d'avoir besoin d'exploiter une requete sur ordres différents. ça a finis par une requete "manuelle" (pas dans l'éditeur).

Bon courrage tout de même.

Contribution le : 27/04/2005 09:18
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant
(1) 2 »




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2