Question : accélérer le findfirst avec la définition de question

J'ai accès 2007 en tant que l'embout avant et serveur 2008 de SQL comme partie postérieure.  J'employais… les rs = etc
Since du
Set de Me.RecordsetClone
rs.findfirst qu'il était vraiment lent j'a changé en une définition de question avec parameters.
Should pas qui soit plus rapide ?   Puisque dans mon cas c'est not.
Can que vous regardez svp mon code joint et me dire ce que j'ai fait du tort ?  Il semble réellement fonctionner mais c'est toujours très slow.
class= > " clair " de
> de " codeSnippet " de class= de
class= " lineNumbers " de
class= de
1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
consultation " de " codeSnippet810813 d'id= " de
Private de class= () 'à la date
        Faible DB comme DAO.Database
        Faible QD comme DAO.QueryDef
        Faibles rs comme DAO.Recordset
        Placer DB = CurrentDb ()
        Placer QD = db.QueryDefs ! qryEvaluation
        QD. Paramètres ! ClientFileNo = txtClientFileNo
        QD. Paramètres ! WorkstationID = txtWorkstationID
        QD. Paramètres ! EvalDate = cboEvalDate.Text
        Placer les rs = le qd.OpenRecordset
               Si le bNewRevu = rectifient alors 'ceci si 021108 4h00
            Appeler AddEvalRcd 'si ajoutant la �ère date/eval à un poste de travail
            bNewRevu = faux
            cboName.Value = nulle
            cboWorkstation.Value = nulle
            cboEvalDate.Value = nulle
            DoCmd.GoToControl « fsubEvalService »
            Sortir le sous-marin
        Autrement
            'très lent ici sur la consultation 
            rs.FindFirst « [ClientFileNo] et [WorkstationID] et [EvalID] = » et txtClientFileNo et txtWorkstationID et cboEvalDate.Value
         Finir si
class= > " clair " de
solutions >Related class= >rsFind de " qRelatedChild " de class= de NoMatch " de title= " du href= " /Microsoft/Development/MS_Access/Access_Coding-Macros/Q_26340272.html " de

Réponse : accélérer le findfirst avec la définition de question

Ainsi ce que nous faisons ici trouve le disque dans le recordset courant en employant l'objet de RecordsetClone.  Une fois le disque est trouvé que nous plaçons le repère de forme pour être les mêmes que le repère de recordset ainsi la forme montrera le disque désiré.  Il y a quelques choses pour considérer comme ce qui s'il y a les changements unsaved sur la forme quand l'utilisateur choisit la boîte combinée.  Vous pouvez ajouter une commande de disque d'économies à cette pièce du sous-marin ou vous pouvez déterminer lui et faire autre chose.  En outre, que se produit si une allumette n'est pas trouvée ?  Ce mai ou mai ne pas être une possibilité basée sur votre en forme de projet.  Regarder l'exemple d'Allen Browne pour l'insite http://allenbrowne.com/ser-03.html

Consultation de cboEvalDate_AfterUpdate secondaire privé () 'à la date
        Faible DB comme DAO.Database
        Faible QD comme DAO.QueryDef
        Faibles rs comme DAO.Recordset, rsFind comme DAO.Recordset
        Placer DB = CurrentDb ()
        Placer QD = db.QueryDefs ! qryEvaluation
        QD. Paramètres ! ClientFileNo = txtClientFileNo
        QD. Paramètres ! WorkstationID = txtWorkstationID
        QD. Paramètres ! EvalDate = cboEvalDate.Text
        Placer les rs = le qd.OpenRecordset
        Si le bNewRevu = rectifient alors 'ceci si 021108 4h00
            Appeler AddEvalRcd 'si ajoutant la �ère date/eval à un poste de travail
            bNewRevu = faux
            cboName.Value = nulle
            cboWorkstation.Value = nulle
            cboEvalDate.Value = nulle
            DoCmd.GoToControl « fsubEvalService »
            Sortir le sous-marin
        Autrement
            'permettre à l'utilisateur de choisir parmi dropdown (using EvalID)
            'très lent ici sur la consultation 7/12/10
            'rs.MoveFirst

            Placer le rsFind = le Me.RecordsetClone
                'suppose que ClientFileNo et WorkstationID sont des gisements des textes.  Enlever les citations de entourage (Chr (34)) si l'un ou l'autre sont numérique
            rsFind.FindFirst « EvalDate = # » et Me.cboEvalDate et « # et ClientFileNo = » et Chr (34) et Me.txt ClientFileNo et Chr (34) et « et WorkstationID = » et Chr (34) et Me.txt WorkstationID et Chr (34)
                'placer la marque de livre de forme au repère de recordset
            Me.Boolmark = rsFind.Bookmark
            Placer le rsFind = rien

         Finir si

Troupe de l'OM
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us