Frage : findfirst mit Fragendefinition beschleunigen

Ich habe Zugang 2007 als Vorderseite und SQL-Server 2008 als Nachrechner.  Ich benutzte…
Set rs = Me.RecordsetClone
rs.findfirst etc
Since, das es ich änderte zu einer Fragendefinition mit parameters.
Should nicht wirklich langsam war, das schneller ist?   Weil in meinem Fall es not.
Can ist, das Sie bitte meinen angebrachten Code betrachten und mir erklären, was ich schadete?  Er scheint wirklich zu arbeiten, aber es ist noch sehr slow.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
Private VorcboEvalDate_AfterUpdate () 'Nachschlagen bis zu Datum
        Schwaches DB als DAO.Database
        Schwacher qd als DAO.QueryDef
        Schwache rs als DAO.Recordset
        Einstellen DB = CurrentDb ()
        Einstellen qd = db.QueryDefs! qryEvaluation
        qd. Parameter! ClientFileNo = txtClientFileNo
        qd. Parameter! WorkstationID = txtWorkstationID
        qd. Parameter! EvalDate = cboEvalDate.Text
        Rs = qd.OpenRecordset einstellen
               Wenn bNewRevu = dann 'dieses wenn 021108 4:00 ausrichten
            AddEvalRcd benennen ', wenn Sie 1. Datum/eval einem Arbeitsplatz hinzufügen
            bNewRevu = falsch
            cboName.Value = Null
            cboWorkstation.Value = Null
            cboEvalDate.Value = Null
            DoCmd.GoToControl „fsubEvalService“
            Unterseeboot herausnehmen
        Sonst
            'sehr langsam hier auf Nachschlagen 
            rs.FindFirst „[ClientFileNo] u. [WorkstationID] u. [EvalID] =“ u. txtClientFileNo u. txtWorkstationID u. cboEvalDate.Value
         Beenden wenn

Antwort : findfirst mit Fragendefinition beschleunigen

So, was wir hier tun, findet die Aufzeichnung im gegenwärtigen recordset indem die Anwendung des RecordsetClone Gegenstandes.  Einmal gefunden die Aufzeichnung, dass wir das Formbookmark einstellen, um zu sein die selben, denen das recordset Bookmark also die Form die gewünschte Aufzeichnung anzeigen.  Es gibt einige Sachen, zum zu betrachten wie, was, wenn es unsaved Änderungen auf der Form gibt, wenn der Benutzer den kombinierten Kasten vorwählt.  Sie können einen Abwehraufzeichnungsbefehl diesem Teil des Unterseeboots hinzufügen, oder Sie können auf es prüfen und noch etwas tun.  Auch was geschieht, wenn ein Gleiches nicht gefunden?  Dieses Mai oder Mai eine Möglichkeit nicht sein gegründet nach Ihrem Formentwurf.  Beispiel Allen-Brownes betrachten nach insite http://allenbrowne.com/ser-03.html

Privates VorcboEvalDate_AfterUpdate () 'Nachschlagen bis zu Datum
        Schwaches DB als DAO.Database
        Schwacher qd als DAO.QueryDef
        Schwache rs als DAO.Recordset, rsFind als DAO.Recordset
        Einstellen DB = CurrentDb ()
        Einstellen qd = db.QueryDefs! qryEvaluation
        qd. Parameter! ClientFileNo = txtClientFileNo
        qd. Parameter! WorkstationID = txtWorkstationID
        qd. Parameter! EvalDate = cboEvalDate.Text
        Rs = qd.OpenRecordset einstellen
        Wenn bNewRevu = dann 'dieses wenn 021108 4:00 ausrichten
            AddEvalRcd benennen ', wenn Sie 1. Datum/eval einem Arbeitsplatz hinzufügen
            bNewRevu = falsch
            cboName.Value = Null
            cboWorkstation.Value = Null
            cboEvalDate.Value = Null
            DoCmd.GoToControl „fsubEvalService“
            Unterseeboot herausnehmen
        Sonst
            'Benutzer erlauben, von Drop-Down vorzuwählen (using EvalID)
            'sehr langsam hier auf Nachschlagen 7/12/10
            'rs.MoveFirst

            rsFind = Me.RecordsetClone einstellen
                'annimmt ', dass ClientFileNo und WorkstationID Textfelder sind.  Umgebende Anführungsstriche (Chr (34) entfernen) wenn irgendein numerisch sind
            rsFind.FindFirst „EvalDate = #“ u. Me.cboEvalDate u. „# und ClientFileNo =“ u. Chr (34) u. Me.txt ClientFileNo u. Chr (34) u. „und WorkstationID =“ u. Chr (34) u. Me.txt WorkstationID u. Chr (34)
                'die Formbuchmarkierung auf das recordset Bookmark einstellen
            Me.Boolmark = rsFind.Bookmark
            rsFind einstellen = nichts

         Beenden wenn

OM-Gruppe
Weitere Lösungen  
 
programming4us programming4us