IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP Discussion :

Lecture directe avec seek


Sujet :

ASP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 902
    Par défaut Lecture directe avec seek
    Bonjour, je débute avec asp, je voudrais faire une lecture directe sur une table Access en utilisant l'instruction seek, je l'ai utilisée sur Access en VBA et cela fonctionnait, le problème est que je ne trouve aucune info sur ça pour le faire en asp 3.0 en tout cas aucun exemple complet. Voici la façon que je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim rs 'as ADODB.Recordset
    Set rs = Server.CreateObject("ADODB.Recordset")
    If rs.Supports(adSeek) = True Then
          rs.Index ="ID"
          Response.Write("L167") & ("<BR>")
    	  rs.Seek "482702", 2
    	  Response.Write("L169") & ("<BR>")
        end if
    Ca fonctionne jusqu'à la ligne 167
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Response.Write("L167") & ("<BR>")
    ensuite le seek ne fonctionne pas
    ID est de type texte, en type num ça ne marche pas non plus...
    La connexion à la base fonctionne.


    Voilà si quelqu'un a une idée MERCI

  2. #2
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 575
    Par défaut
    Bonjour,
    On peut dire qu'ASP (ou ASP Classic) est devenu un peu comme une relique du passé! Créé par Microsoft en 1996, il faisait partie des premières technologies de script côté serveur pour le web, permettant de créer des sites dynamiques avec des langages comme VBScript ou JScript. Malgré sa popularité dans les années 90 et début des années 2000, ASP a été dépassé depuis par ASP.NET, sorti en 2002, et bien d'autres technologies modernes.
    Pour quelqu'un qui travaille encore avec ASP aujourd'hui, c'est un peu comme un archéologue en train de fouiller dans les premières couches du développement web. Certains projets anciens, dans les entreprises notamment, continuent de s'appuyer sur ASP pour des raisons de compatibilité et de coût de migration, mais pour de nouvelles applications, c’est rare. Les développeurs actuels se tournent généralement vers des frameworks plus modernes comme ASP.NET Core, Python avec Django ou Flask, Node.js, Ruby on Rails, etc.

    Dans le cadre d'une mission via ma SSII, j'ai passé un entretien avec une entreprise qui cherchait à recruter des jeunes de 20 à 25 ans. Cependant, ces jeunes ne voulaient pas voir d'expérience ASP sur leur CV. En fin de compte, l'entreprise n'a pas retenu ma candidature, même si elle n'a pas réussi à trouver de jeunes ayant des compétences en ASP.

    À moins d’être sur un projet qui l’exige spécifiquement, apprendre ASP Classic (ASP3) aujourd’hui n’est pas recommandé. Cette technologie est largement dépassée et ne bénéficie plus de mises à jour ni de support de Microsoft, rendant son utilisation risquée sur le plan de la sécurité et peu efficace en termes de performance et de maintenance.
    Cependant, il existe des raisons spécifiques pour lesquelles l’apprentissage d’ASP pourrait être pertinent :

    1. Maintenance de projets existants : Si vous travaillez dans une entreprise avec un système legacy en ASP Classic, le comprendre peut être utile pour maintenir ou migrer le code.
    2. Migration de l’ancien vers le nouveau : Comprendre ASP Classic peut aider dans la transition vers ASP.NET ou une autre technologie moderne en rendant la réécriture plus fluide.

    Si vous apprenez pour un développement de nouvelles compétences web, il est préférable de se tourner vers des technologies actuelles comme ASP.NET Core pour l’univers Microsoft ou d’autres frameworks modernes (Node.js, Django, etc.). Ceux-ci offrent plus de fonctionnalités, de sécurité et de possibilités pour développer des applications modernes et évolutives.


    Détails sur la méthode Seek en ASP

    But :La méthode Seek permet de rechercher rapidement des enregistrements dans un Recordset basé sur une clé d'index. Cela te permet d'accéder directement à un enregistrement spécifique sans avoir à parcourir tous les enregistrements de la table.
    Conditions d'utilisation :

    • Type de Recordset : Seek s'utilise avec un Recordset de type Table (généralement créé avec ADO). Si tu travailles avec un Recordset basé sur une requête SQL, Seek ne sera pas disponible.
    • Index : Avant d'utiliser Seek, tu dois t'assurer que le champ sur lequel tu souhaites effectuer la recherche est indexé dans la base de données. Cela peut inclure des index uniques ou composites.

    Syntaxe :


    Utilisation efficace :L'utilisation de Seek est particulièrement avantageuse pour les grandes tables, car elle te permet d'accéder directement à un enregistrement sans parcourir l'ensemble du Recordset, ce qui améliore les performances.
    Exemple de fonctionnement


    1. Ouvrir le Recordset dans ton code ASP, ouvre le Recordset de manière à t'assurer qu'il est de type table :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      Set rs = Server.CreateObject("ADODB.Recordset")
      rs.Open "SELECT * FROM Clients", yourConnectionString, adOpenKeyset, adLockOptimistic
    2. Définir l'Index :Assure-toi que la table Clients a un index basé sur les champs que tu souhaites interroger.
    3. Utiliser Seek pour rechercher un client avec un Nom et un Prénom spécifiques, utilise :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      rs.Seek Array("Dupont", "Jean")
       
       
      Cela place le Recordset sur l'enregistrement correspondant à ces valeurs.

    Conclusion

    Dans le contexte d'ASP, Seek est un moyen efficace de récupérer des enregistrements basés sur des clés indexées. En utilisant Seek avec des clés uniques ou composites, tu peux améliorer les performances de ton application ASP lors de l'accès à des données.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 902
    Par défaut
    Citation Envoyé par Thumb down Voir le message
    Conditions d'utilisation :

    [LIST][*]Type de Recordset : Seek s'utilise avec un Recordset de type Table (généralement créé avec ADO). Si tu travailles avec un Recordset basé sur une requête SQL, Seek ne sera pas disponible.
    ******************************
    Bonjour merci pour ta réponse, je n'arrive pas à créé un recordset type table avec ADO,
    D'autre part tu code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open "SELECT * FROM Clients", yourConnectionString, adOpenKeyset, adLockOptimistic
    yourConnectionString c'est le nom que l'on donne à l'objet connexion ? pour moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set objConnect = Server.CreateObject("ADODB.Connection")
    J'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim rs 'as ADODB.Recordset
    	 Set rs = Server.CreateObject("ADODB.Recordset")
             rs.Open "T_Comptes",objConnect
    	If rs.Supports(adIndex) = True Then
    	  rs.index="ID"
              Response.Write("suport index") & ("<BR>")
    	 end if
    	If rs.Supports(adSeek) = True Then
    	  Response.Write("suport seek") & ("<BR>")
    	end if
    Pour ce bloc ,le "open" fonctionne mais je ne crois pas que c'est la bonne façon d'ouvrir le recordset(type table) car les rs.supports ne fonctionnent pas(adIndex) et (adSeek)
    Du coup le seek ne fontionne pas non plus
    où ID est égal à 482702

  4. #4
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 575
    Par défaut
    Bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <%Set objConnect = Server.CreateObject("ADODB.Connection")
     
    objConnect.open ConnectionString
    Set Rs = Server.CreateObject("ADODB.Recordset")
    Rs.Open "Clients", objConnect , 1, 3 ,512
     
     
    if not Rs.eof then
       rs.index="ID"
       rs.Seek 482702
       %>
       <table>
       <%while not Rs.eof
       %><tr><td><%=rs(0)%></td></tr>
      <% rs.movenext
      wend%>
      </table>
    <%end if%>
    Dans cet extrait, on ouvre une connexion ADO (objConnect) et un Recordset (Rs) pour accéder aux données de la table Clients.
    Explication des lignes de code


    1. Création de la connexion et du Recordset :
      • Server.CreateObject("ADODB.Connection") crée un objet connexion (objConnect) pour établir une liaison avec la base de données.
      • Server.CreateObject("ADODB.Recordset") crée un objet Recordset (Rs) qui permet de manipuler les enregistrements dans la table.

    2. Ouverture du Recordset :
      • Rs.Open "Clients", objConnect , 1, 3 ,512 ouvre le Recordset sur la table Clients avec la connexion objConnect.
      • Les paramètres 1 et 3 contrôlent le type de curseur et le type de verrouillage, permettant de naviguer et modifier les enregistrements.
      • 512 est l’option qui indique que le Recordset doit être en mode Table, permettant un accès rapide aux enregistrements, requis pour utiliser Seek.

    3. Vérification de la fin de fichier :
      • If Not Rs.EOF Then vérifie que le Recordset n'est pas vide. EOF signifie End of File ; ainsi, si le Recordset est vide, EOF serait True, mais ici, on exécute le code uniquement si des enregistrements sont présents.

    4. Utilisation de l’index et de Seek :
      • Rs.Index = "ID" spécifie que l’on veut utiliser l’index basé sur le champ ID. Cela permet d'accélérer la recherche en utilisant Seek sur cette clé.
      • Rs.Seek 482702 recherche directement l'enregistrement où ID est égal à 482702. Seek utilise l'index pour positionner le curseur sur l'enregistrement correspondant sans parcourir toute la table, ce qui est plus rapide, surtout avec de grandes tables.


    es tu sur du nom de l'index ID?
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    dim  cat,objConnect 
    Set objConnect = Server.CreateObject("ADODB.Connection")
    Set cat = Server.CreateObject("ADOX.Catalog")
    Set cat.ActiveConnection =objConnect 
    dim tbl
    ' Accéder à la table souhaitée et lister ses index
    Set tbl = cat.Tables("Clients") 
    For Each idx In tbl.Indexes
        Response.Write "Nom de l'index : " & idx.Name & "<br>"
    Next

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 902
    Par défaut
    Citation Envoyé par Thumb down Voir le message
    es tu sur du nom de l'index ID?
    Bsr et merci pour tes explications, oui ID est bien l'index de la table, pour moi maintenant ç a marche MERCI !

  6. #6
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 575
    Par défaut

    Bonjour,
    tu trouveras en pièces jointe un version ASP3 et ASPX
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/02/2006, 10h11
  2. Problème de lecture registre avec RegEnumKeyEx
    Par mdriesbach dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 28/10/2005, 11h27
  3. Empêcher l'accès direct avec squid
    Par Amélie Ladoque dans le forum Réseau
    Réponses: 6
    Dernier message: 11/04/2005, 14h49
  4. Ecrire directement avec une autre langue???
    Par touhami dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 21/02/2005, 21h57
  5. lecture balises avec des &lt;
    Par petitelulu dans le forum XML/XSL et SOAP
    Réponses: 11
    Dernier message: 03/09/2003, 09h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo