begin process at 2012 05 28 06:10:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive ASP & ASP.NET

 > 

Archives ASP & ASP.NET

 > 

Divers

 > 

OPTIMISATION


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

OPTIMISATION

lundi 21 mars 2005 à 17:17:19 | OPTIMISATION

Jackboy

J'aimerai qu'un "pro" de l'optimisation puisse me regularisé et optimisé ce code... Pas nécessaire de tout passer a la loupe, mais si vous trouvé des methode + simple et moin gourmante, bien me le faire savoir. L'optimisation ce trouverai en nécessité dans le code ou ce trouve la boucle de sélection pour chaque image (a partir de la ligne 119), Merci d'avance pour votre coup de main !!!



 dim Browse_Graphic_File_Name
 dim Browse_Graphic_File_Description
 dim Browse_Graphic_File_Type
 dim Browse_Graphic_File_Name_id
 dim Browse_Graphic_File_Description_id
 dim Browse_Graphic_File_Type_id

 'récuperation du formulaire (4 champs)
 Browse_Graphic_File_Name = Request.form("Browse_Graphic_File_Name") 'champs 1
 Browse_Graphic_File_Description = Request.form("Browse_Graphic_File_Description") 'champs 2
 Browse_Graphic_File_Type = Request.form("Browse_Graphic_File_Type") 'champs 3
 Browse_Graphic_File_Name_id = "44" 'valeur static pour le champ 1, désigner le type du champs (voir table ELEMENT)
 Browse_Graphic_File_Description_id = "43" 'valeur static pour le champ 2, désigner le type du champs (voir table ELEMENT)
 Browse_Graphic_File_Type_id = "45" 'valeur static pour le champ 3, désigner le type du champs (voir table ELEMENT)

 '*****************************************************
 ' connection pour recuperation et editer la table
 ' METD_EDIT_CITATION selon les nouvelle enregistrement
 ' de l'usager, permettre d'avoir une table pour ré-édition
 '****************************************************
 Connection_M3Cat strCon
 dim strMETD_EDIT_BROWSEGRAPHICS
 strMETD_EDIT_BROWSEGRAPHICS = "SELECT * FROM METS_EDIT_BROWSEGRAPHICS"
 dim RS_METD_EDIT_BROWSEGRAPHICS
 Set RS_METD_EDIT_BROWSEGRAPHICS = Server.CreateObject("ADODB.Recordset")
 RS_METD_EDIT_BROWSEGRAPHICS.CursorType = 2
 RS_METD_EDIT_BROWSEGRAPHICS.LockType = 3  
 
 'ouverture de la bd selon la requete et infos de la bd
 RS_METD_EDIT_BROWSEGRAPHICS.Open strMETD_EDIT_BROWSEGRAPHICS, strCon
 
 'var pour éditer la table METS_EDIT_BROWSEGRAPHICS
 dim Browse_Graphic_File_Name_Edit
 dim Browse_Graphic_File_Description_Edit
 dim Browse_Graphic_File_Type_Edit
 
 Browse_Graphic_File_Name_Edit = Browse_Graphic_File_Name
 Browse_Graphic_File_Description_Edit = Browse_Graphic_File_Description
 Browse_Graphic_File_Type_Edit = Browse_Graphic_File_Type
 
 'édition de la table
 RS_METD_EDIT_BROWSEGRAPHICS("Browse_Graphic_File_Name") = Originator_Edit
 RS_METD_EDIT_BROWSEGRAPHICS("Browse_Graphic_File_Description") = Browse_Graphic_File_Description_Edit
 RS_METD_EDIT_BROWSEGRAPHICS("Browse_Graphic_File_Type") = Browse_Graphic_File_Type
 
 RS_METD_EDIT_BROWSEGRAPHICS.Update
 RS_METD_EDIT_BROWSEGRAPHICS.Close
 set RS_METD_EDIT_BROWSEGRAPHICS = nothing
 '****************************************************
 ' fin recuperation
 '****************************************************
  
 'nom de la collection (ex.: ESM 2003)
 metadata_name_collection = session("NameServerMeta")
 
 'Exprésion réguliere qui permet de capter, si il y a lieu les espace remplacer par un %20
 'dans le request.QueryString émis dans la page de collection
 'sinon recherche de la collection erroné
 set regExp = new regExp
 regExp.Pattern = "[%20]"
 regExp.Global = true
 regExp.IgnoreCase = false
 strClean = regExp.replace(metadata_name_collection, " ")

 '*****************************************************
 ' connection pour recuperation dans la table DATASET
 ' de la valeur DATS_ID de la collection selon le nom
 ' de la collection. Plusieurs collections sont insérés dans la
 ' meme table dataset, mais chacune ayant un id différent.
 ' Attacher lr id à chaque nouvelle enregistrement (formulaire)
 '****************************************************
 Connection_M3Cat strCon
 strSqlNameCollection = "SELECT DATS_ID, DATS_NAME FROM DATASET WHERE DATS_NAME = '"& metadata_name_collection &"'"
 Set RS_DATASET = Server.CreateObject("ADODB.Recordset")
 RS_DATASET.CursorType = 1
 RS_DATASET.LockType = 1  
 'ouverture de la bd selon la requete et infos de la bd
 RS_DATASET.Open strSqlNameCollection, strCon
 DATS_COLLECTION_ID = RS_DATASET("DATS_ID")
 RS_DATASET.Close
 set RS_DATASET = nothing
 '****************************************************
 ' fin recuperation
 '****************************************************
 
 '*****************************************************
 ' connection pour recuperation, dans la table DATASET,
 ' de chaque image ayant un PARENT_DATS_ID (id de la collection trouvé + haut)
 ' égal a la celui de la collection DATS_ID
 '****************************************************
 strSqlDataset = "SELECT * FROM DATASET WHERE PARENT_DATS_ID = "& DATS_COLLECTION_ID
 Set RS_DATASET_2 = Server.CreateObject("ADODB.Recordset")
 RS_DATASET_2.CursorType = 1
 RS_DATASET_2.LockType = 1
 RS_DATASET_2.Open strSqlDataset, strCon
 '*****************************************************
 ' fin de la connection mais utilisation + bas
 '****************************************************

 
 '*****************************************************
 '*****************************************************
 '*****************************************************
 ' OPTIMISATION NÉCESSAIRE CAR PLUS DE 1700 IMAGES ET +
 ' A VÉRIFIER MULTIPLIER PAR LE NOMBRE DE CHAMPS DU
 ' FORMULAIRE, CE QUI DONNE 5100 REQUETTE A LA QUEUE,
 'POSSIBILITER DUN FORMULAIRE AYANT 14 CHAMPS DONC...
 '*****************************************************
 '*****************************************************
 '*****************************************************
 
 
 '*****************************************************
 ' connection pour ajout ou edition de la table METD_VALUE
 ' doit passer chaque image et verifier si la donner
 ' est présente, si oui editer, sinon ajouter
 '****************************************************
 Set RS_METD_VALUE = Server.CreateObject("ADODB.Recordset")
 RS_METD_VALUE.CursorType = 3
 RS_METD_VALUE.LockType = 3

 '*****************************************************
 ' boucle qui sélectionne chaque image de la table dataset
 ' ayant le PARENT_DATS_ID de la collection, insere
 ' les valeur du formulaire et ce pour chaque image,
 '*****************************************************
 do while not RS_DATASET_2.EOF 'recherche de chaque image dans la bd (au dessus de 1600 images a passé a la queue)

  DATASET_NAME = RS_DATASET_2("DATS_NAME")
  METD_VALUE_DATS_ID = RS_DATASET_2("DATS_ID")

  NameForm = ""
  Form_Metd_Id = ""

  'récupere tous les champs du formulaire (ici 3)
  'et ajoute un enregistrement dans la
  'table METD_VALUE pour chaque champs
  for i = 1 to 3
   select case i
   case "1" 'champs 1
    NameForm = Browse_Graphic_File_Name
    Form_Metd_Id = Browse_Graphic_File_Name_id
   case "2" 'champs 2
    NameForm = Browse_Graphic_File_Description
    Form_Metd_Id = Browse_Graphic_File_Description_id   
   case "3" 'champs 3
    NameForm = Browse_Graphic_File_Type
    Form_Metd_Id = Browse_Graphic_File_Type_id   
   case else 'aucun champs (erreur)
    NameForm = ""
    Form_Metd_Id = ""
   End Select

   '*****************************************************
   ' connection pour add OU edit dans la table METD_VALUE
   ' et ce pour chaque image étant relié à la collection
   ' requete sql qui vérifie si un enregistrement est présent
   ' selon un Id et un valeur si oui edit sinon ajoute
   '****************************************************
   strSqlMetdValue = "SELECT * From METD_VALUE where METD_ID = "& Form_Metd_Id &" and DATS_ID = "& METD_VALUE_DATS_ID
   RS_METD_VALUE.Open strSqlMetdValue, strCon

   'Édition si l'enregistrement à été trouvé dans la bd
   if RS_METD_VALUE.RecordCount <> "-1" and RS_METD_VALUE.RecordCount > "0" then
    RS_METD_VALUE("METD_Value") = NameForm 'valeur du champs entrer par l'usager
    'RS_METD_VALUE("PARNT_METD_VALUE_ID") = "0" 'valeur par default pour le moment
    'RS_METD_VALUE("METD_OCC") = "1" 'valeur par default pour le moment
    RS_METD_VALUE("METD_ID") = Form_Metd_Id 'insère le type déterminant la valeur insérer
    'RS_METD_VALUE("PARAM_ID") = "0" 'valeur par default pour le moment
    RS_METD_VALUE("DATS_ID") = METD_VALUE_DATS_ID 'attacher l'id de l'image
   
   'Ajout si l'enrtegistrement n'a pas été trouvé dans la bd
   else
    RS_METD_VALUE.addnew 'ajouter un enregistrement dans la table METD_VALUE
    RS_METD_VALUE("METD_Value") = NameForm 'valeur du champs entrer par l'usager
    RS_METD_VALUE("PARNT_METD_VALUE_ID") = "0" 'valeur par default pour le moment
    RS_METD_VALUE("METD_OCC") = "1" 'valeur par default pour le moment
    RS_METD_VALUE("METD_ID") = Form_Metd_Id 'insère le type déterminant la valeur insérer
    RS_METD_VALUE("PARAM_ID") = "0" 'valeur par default pour le moment
    RS_METD_VALUE("DATS_ID") = METD_VALUE_DATS_ID 'attacher l'id de l'image
   end if
   
   RS_METD_VALUE.update 'updater la table METD_VALUE
   RS_METD_VALUE.close 'fermer la table METD_VALUE
   
  next 'passer au prochain champs du formulaire
   
  RS_DATASET_2.movenext 'passer a la prochaine image

 loop 'refaire la procedure pour la prochaine image trouvé dans la table DATASET
 
 'end if
 set RS_METD_VALUE = nothing 'vider la table METD_VALUE
 
 RS_DATASET_2.close 'fermer la table DATASET
 set RS_DATASET_2 = nothing 'vider la table DATASET
 

mercredi 23 mars 2005 à 21:40:00 | Re : OPTIMISATION

Yopyop


euh.. tu peux expliquer ce que tu fais en français car la c'est  pas très clair ....
juste  le principe général, table1 table2, ...

parceque là, il me semble que tu fais hyper compliqué pour pas grand chose...

En attendant:

Au lieu de
 '*****************************************************
 ' connection pour recuperation dans la table DATASET
 ' de la valeur DATS_ID de la collection selon le nom
 ' de la collection. Plusieurs collections sont insérés dans la
 ' meme table dataset, mais chacune ayant un id différent.
 ' Attacher lr id à chaque nouvelle enregistrement (formulaire)
 '****************************************************
 Connection_M3Cat strCon
 strSqlNameCollection = "SELECT DATS_ID, DATS_NAME FROM DATASET WHERE DATS_NAME = '"& metadata_name_collection &"'"
 Set RS_DATASET = Server.CreateObject("ADODB.Recordset")
 RS_DATASET.CursorType = 1
 RS_DATASET.LockType = 1 
 'ouverture de la bd selon la requete et infos de la bd
 RS_DATASET.Open strSqlNameCollection, strCon
 DATS_COLLECTION_ID = RS_DATASET("DATS_ID")
 RS_DATASET.Close
 set RS_DATASET = nothing
 '****************************************************
 ' fin recuperation
 '****************************************************

 '*****************************************************
 ' connection pour recuperation, dans la table DATASET,
 ' de chaque image ayant un PARENT_DATS_ID (id de la collection trouvé + haut)
 ' égal a la celui de la collection DATS_ID
 '****************************************************
 strSqlDataset = "SELECT * FROM DATASET WHERE PARENT_DATS_ID = "& DATS_COLLECTION_ID
 Set RS_DATASET_2 = Server.CreateObject("ADODB.Recordset")
 RS_DATASET_2.CursorType = 1
 RS_DATASET_2.LockType = 1
 RS_DATASET_2.Open strSqlDataset, strCon
 
 'tu peux faire directement
  '*****************************************************
 ' connection pour recuperation, dans la table DATASET,
 ' de chaque image ayant un PARENT_DATS_ID (id de la collection trouvé + haut)
 ' égal a la celui de la collection DATS_ID
 '****************************************************
 strSqlDataset = "SELECT * FROM DATASET WHERE PARENT_DATS_ID = (SELECT DATS_ID FROM DATASET WHERE DATS_NAME = '"& metadata_name_collection &"')"
 Set RS_DATASET_2 = Server.CreateObject("ADODB.Recordset")
 RS_DATASET_2.CursorType = 1
 RS_DATASET_2.LockType = 1
 RS_DATASET_2.Open strSqlDataset, strCon
 
 '*****************************************************
 ' boucle qui sélectionne chaque image de la table dataset
 ' ayant le PARENT_DATS_ID de la collection, insere
 ' les valeur du formulaire et ce pour chaque image,
 '*****************************************************
 
A propos:
 DATASET_NAME = RS_DATASET_2("DATS_NAME") 'tu ne l'utilises pas ??

Et la partie

  for i = 1 to 3
   select case i
   case "1" 'champs 1
    NameForm = Browse_Graphic_File_Name
    Form_Metd_Id = Browse_Graphic_File_Name_id
   case "2" 'champs 2
    NameForm = Browse_Graphic_File_Description
    Form_Metd_Id = Browse_Graphic_File_Description_id  
   case "3" 'champs 3
    NameForm = Browse_Graphic_File_Type
    Form_Metd_Id = Browse_Graphic_File_Type_id  
   case else 'aucun champs (erreur)
    NameForm = ""
    Form_Metd_Id = ""
   End Select

Je ne la comprends pas du tout ???

tes valeurs seront toujours
    NameForm = Browse_Graphic_File_Type
    Form_Metd_Id = Browse_Graphic_File_Type_id  

pourrais-tu expliquer ce que tu as comme tables, ce que tu a comme formulaire et ce que tu veux faire ?

yopyop
jeudi 24 mars 2005 à 20:32:42 | Re : OPTIMISATION

Jackboy

salut !

bien merci d'avoir pris le temps de me reponde. Pour ce qui est de la boucle for, je recupere les champs du formulaire. Ce qui arrive ces que j'ai une bd donc la table DATASET qui comporte au dessus de 1700 enregistrement (images), chaque image est relie a une collection, je dois recuperer le id de l'image ainsi que l'id de sa collection, pour chaque images je dois insérerer ou editer les valeurs de chaque champs de mon formulaire et ce a la queue dans la table METD_VALUE.

Explication de la procedure :

L'usager choisi une collection (ex.: ESM 2003) et un type de formulaire (Browse Graphics), je recupere donc l'id de la collection. Je recupere chaques champs de mon formulaire. J'ai une table respective pour chaque formulaire pour en garder la sauce pour edition ulterieur donc j'entre les modification dans la table respective au formulaire(ex.: METS_EDIT_BROWSEGRAPHICS). Ensuite je fais un regExp au cas ou l'url a mis un %20 car s'il y avait un espace, je remet donc l'espace car sinon un erreur, ensuite j'ouvre ma table DATASET pour en recuperer l'id de la collection choisi précédement par l'usager, ensuite je réouvre ma table DATASET pour en recuperer chaque images boucle (do while not RS_DATASET_2.EOF) ayant l'id de la collection correspondante. Pour chaque image trouvé je recupere le premier champs de mon formulaire (boucle for), j'ouvre METD_VALUE et je vérifie si mon enregistrement est present dans ma table, si oui (if RS_METD_VALUE.RecordCount <> "-1" and RS_METD_VALUE.RecordCount > "0") j'edite mon enregistrement, sinon je l'ajoute a la queue, je ferme et j'update METD_VALUE et je boucle mon for pour recuperer le prochain champs ( i ) et je refait la procedure (de meme pour chaque champs de mon formulaire ce qui peut etre long car peut aller a 16 champs) ensuite les champs passé je passe a la prochaine image et refait la procedure en entier...

héhé du stock tous sa... je sais qu'il y a optimisation possible, ces ma raison de ma venu sur le forum !!!!

jeudi 24 mars 2005 à 23:32:14 | Re : OPTIMISATION

Yopyop

Salut,

Pourrais-tu m'envoyer ton code asp + une description complète de ta base de donneés (tables,champs, contraintes d'intégrités).

J'ai un long weekend (Pâques) et je veux bien passer un peu de temps pour te donner un coup de main (si j'y arrive).

yopyop
vendredi 25 mars 2005 à 06:35:25 | Re : OPTIMISATION

Jackboy

salut !

bien merci beaucoup ! je t'ai envoyer le tout en message privé, j'attend de tes nouvelles !!! thx !!



Cette discussion est classée dans : rs, id, value, browse, metd


Répondre à ce message

Sujets en rapport avec ce message

lien avec id [ par xclear ] Salutj'ai ça response.write ""&rs("id")&"   "&rs("titre")&""et je voudrai inserer en response.write ce truc",650,500,"menubar=no,scrol Erreur Sql Between [ par Jackboy ] Salut j'ai une requete sql avec un between :sqlString = "SELECT * FROM METD_VALUE WHERE METD_VALUE BETWEEN '290925.559819631' AND '295782.332545452'"A [C#] Problème avec evement Command [ par oxayotl ] Bonjour,j'ai créé dynamiquement deux LinkButton contenant des panels, labels...... J'ai voulu créer un évènement Command qui, avec l'aide d'un command insertion dans champ d'apres id [ par drjey ] Salut je voudrais asvoir si on peut m'aider a faire l'insertion des 3 champs dans ma base de donnee en recuperant l'id et en allant d'un point precis Problème de liste [ par ellandebasque ] Bonjour, j'ai un problème pour ajouter des éléments dans une collection : tous les éléments sont égaux. Grâce au débogueur (pas-à-pas) j'ai constat&#2 suppression dans plusieurs tables [ par xclear ] Salut à tousj'ai ca:if request.form("id")"" then SQL = "SELECT * FROM forums WHERE id_forum=0" RS.open SQL,conn,3,3 RS.addnew RS("password_for Validation d'un formulaire asp en javascript [ par Sunflower20 ] Bonjour... J'ai réellement besoin d'aide! Ya déjà plusieurs heures je que j'essais de trouver une solution, mais toujours rien.Je dois valider que tou Link button asp.net [ par abdo_dotnet10 ] Salut tout le mondej'essaye de creer des linkButton d'une maniere dynamique, pour les 2 premiers ça marche(ça veux dire lorsque je clique sur le linkb exporter une table access vers excel [ par ahmani24 ] Bonjour tout le monde,Lors de l'exportation d'une table access vers excel je rencontre le message d'erreur suivant:Microsoft Excel ne peut pas convert recuperer 1 variable dans un trigger (C#) [ par bootchoz ] bonjour,je debute en c# et je n'arrive pas a recuperer la valeur d'une variable @id_pers pour l'inserer dans une table via un trigger.voici le code de


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales