Re: LENTEUR CS | Sujet: Re: LENTEUR CS par Anonyme sur 30/5/2005 14:50:00
Bonjour,
Je ne passe plus par cette requete horrible et affreuse. Voila aujourd'hui ce que ca donne :
req est une chaîne= " SELECT StopBtl,Rebut,Vendue,Bouteille.Observations,DateOrigine,IDBouteille,NumMesser,NumLot,NumFabrication, " +...
" CategorieActuel,Fournisseur.Nom,Emballage.Type,lot.IDLot,lot.StopLot,lot.Categorie FROM "+...
" Bouteille,Lot,Emballage,Fournisseur WHERE lot.IDLot = Bouteille.IDLot AND Emballage.IDEmballage=lot.IDEmballage AND Fournisseur.IDFournisseur=lot.IDFournisseur"
Resultat_Bte est une Source de Données
SI CHP_NumMesser<>Null ALORS
req+= " AND Bouteille.NumMesser="+CHP_NumMesser
FIN
SI CHP_NumLot<>Null ALORS
req+= " AND lot.NumLot="+CHP_NumLot
FIN
SI CHP_NumFabrication<>Null ALORS
req+= " AND Bouteille.NumFabrication="+CHP_NumFabrication
FIN
SI Combo_Emballage<>Null ALORS
HLitRecherche(Emballage,Type,Combo_Emballage..ValeurAffichée,hIdentique)
SI HTrouve(Emballage) ALORS
req+= " AND lot.IDEmballage=" + Emballage.IDEmballage
FIN
FIN
SI COMBO_Categorie<>Null ALORS
SELON typerech
CAS RECH_BTE :
req+= " AND Bouteille.CategorieActuel="+(COMBO_Categorie-1)
CAS RECH_LOT :
req+= " AND lot.Categorie="+(COMBO_Categorie-1)
FIN
FIN
SI Combo_Reglement<>Null ALORS
SELON typerech
CAS RECH_BTE :
req+= " AND Bouteille.ReglementActuel ='"+ Combo_Reglement..ValeurAffichée +"'"
CAS RECH_LOT :
req+= " AND lot.Reglement ='"+ Combo_Reglement..ValeurAffichée +"'"
FIN
FIN
SI COMBO_Fabricant<>Null ALORS
req+=" AND Fournisseur.IDFournisseur = "+COMBO_Fabricant..ValeurMémorisée
FIN
SI CHP_DateOrigine<>Null ALORS
req+= " AND lot.DateOrigine="+ CHP_DateOrigine
FIN
SI CHP_PressionEp<>Null ALORS
req+= " AND lot.PressionEpreuve="+CHP_PressionEp
FIN
ValParam,ValParam2,ValParam3,ValParam5 sont des Variants=Null
SELON INTERRUPT_Rech[1]
CAS 1:
req+=" AND Bouteille.StopBtl=1"
CAS -1:
req+=" AND Bouteille.StopBtl=0"
FIN
SELON INTERRUPT_Rech[2]
CAS 1:
req+=" AND Bouteille.Rebut=1"
CAS -1:
req+=" AND Bouteille.Rebut=0"
FIN
SELON INTERRUPT_Rech[3]
CAS 1:
req+=" AND Bouteille.Vendue=1"
CAS -1:
req+=" AND Bouteille.Vendue=0"
FIN
req+=" ORDER BY Bouteille.NumMesser ASC"
SI HExécuteRequêteSQL(Resultat_Bte,req) ALORS
HLitPremier(Resultat_Bte)
TANTQUE PAS HEnDehors(Resultat_Bte)
SELON typerech
//recherche Bouteille
CAS RECH_BTE :
TableAjoute(Table_Bouteille ,Resultat_Bte.IDBouteille+TAB+Resultat_Bte.NumMesser+TAB+Resultat_Bte.NumFabrication+TAB+...
Resultat_Bte.NumLot+TAB+GetTypeEpreuve(False,"",Resultat_Bte.CategorieActuel)+TAB+Resultat_Bte.Type+TAB+Resultat_Bte.Nom+TAB+Resultat_Bte.DateOrigine+TAB+...
Resultat_Bte.Observations+TAB+Resultat_Bte.Vendue+TAB+0+TAB+Resultat_Bte.Rebut+TAB+Resultat_Bte.StopBtl)
//Couleurs
SI Resultat_Bte.StopBtl ALORS
Table_Bouteille[Table_Bouteille..Occurrence]..CouleurFond=Coul_Btl_Stop..CouleurFond
FIN
SI Resultat_Bte.Rebut ALORS
Table_Bouteille[Table_Bouteille..Occurrence]..CouleurFond=Coul_Btl_Reforme..CouleurFond
FIN
SI Resultat_Bte.Vendue ALORS
Table_Bouteille[Table_Bouteille..Occurrence]..CouleurFond=Coul_Btl_Vente..CouleurFond
FIN
CAS RECH_LOT :
numbtlfin est un entier
SI TableCherche(TABLE_Lot.NumLot,Resultat_Bte.IDLot)=-1
TableAjoute(TABLE_Lot,Resultat_Bte.IDLot+TAB+Resultat_Bte.NumLot+TAB+Resultat_Bte.Type+TAB+GetTypeEpreuve(False,"",Resultat_Bte.Categorie)+...
TAB+Resultat_Bte.Nom+TAB+Resultat_Bte.NumMesser+TAB+numbtlfin+TAB+Resultat_Bte.Observations+TAB+Resultat_Bte.StopLot)
FIN
FIN
HLitSuivant(Resultat_Bte)
FIN
HAnnuleDéclaration(Resultat_Bte)
Je construit moimeme ma requete. Ca va deja beaucoup plus vite sauf lorsque je fait une recherche sur certain critére notamment sur Emballage la vraiment ca rame.
Pour la volumétrie :
Emballage : 89 Fournisseur : 25 Bouteille : 74 370 Lot :199
D'autant plus que il s'agit d'une base de test en réalité il faut s'attendre pour le fichier bouteille pres de 400 000 enregistrements a peu pres 1000 pour les lots et je pese mes mots a peu pres 1000 aussi pour fournisseur et emballage ca doit etre a peu pres ça
|
|
Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
|