Thema Datum  Von Nutzer Rating
Antwort
Rot Durchsuchen einer großen Liste
20.10.2015 08:42:32 Marke
NotSolved
21.10.2015 16:28:06 Gast80944
NotSolved

Ansicht des Beitrags:
Von:
Marke
Datum:
20.10.2015 08:42:32
Views:
2300
Rating: Antwort:
  Ja
Thema:
Durchsuchen einer großen Liste

Guten Morgen alle zusammen,

 

mir stellt sich ein kleines Problem, das ich offenbar nicht so ganz in den Griff bekomme. Ich wäre sehr dankbar, falls mir jemand etwas weiterhelfen könnte :)

Ich habe eine Liste in Access in der ich nach jeweils einem bestimmten Datensatz suchen muss und das in möglichst kurzer Zeit.

 

Beschreibung:

- Ich lade eine Liste aus einer Datenbank (SQL-Server) und sortiere sie wie folgt:

TicketNo; Status; Responsible    //    SELECT * FROM Ticket_M1 WHERE (((Ticket_M1.TicketNo) Is Not Null)) ORDER BY Ticket_M1.Status DESC , Ticket_M1.ID;

- Nun bekomme ich eine TicketNo übergeben, suche nach dem Datensatz und makiere ihn in der Liste:

 
int2 = CDbl(Assign_To_TicketNo)                           // Übergabe der gesuchten TicketNo
ticket_list_quan = Ticket_list.ListCount                  // Anzahl der Listeneinträge

If ticket_list_quan <> 0 Then
Ticket_list.Selected(1) = True
int3 = ticket_list_quan

For i1 = 0 To (ticket_list_quan - 1)                       // Start der Suche

If boo1 = False Then
    int1 = int1 + 1
    chk_int1 = chk_int1 + 1
Else
    int1 = int1 + 1
End If

dbg_cnt1 = dbg_cnt1 + 1
Ticket_list.Selected(int1) = True
     
    If CDbl(Ticket_list.Column(2)) = int2 Then               // Überprüfen der TicketNo
    Exit For
    End If
 
        If chk_int1 >= 100 Then
            chk_str1 = Ticket_list.Column(3)
                If chk_str1 = "Closed" And int2 > 0 Then     // Auf "Closed" prüfen und Suche verkürzen
                int1 = ticket_list_quan
                boo1 = True
                int1 = (int2 - chk_int1)                     // TicketNo - durchlaufene Suche = Nahe gesuchter Stelle
            End If                                           // Aber nur bei Closed verwendbar!
            chk_int1 = 0
        End If
            
Next
 
- Vorgehensweise: Listenbereich mit Status "Open" & "Ongoing" wird schrittweise durchsucht. Ab Status "Closed" ist das Ticket einfach zu finden
durch (int2-chk_int1).
 
Problem:
Meistens sind die gesuchten Tickets Open oder Ongoing. Daher benötigt die For-Schleife recht lange (2-3s, je nach SQL-Serververbindung) um das jeweilige Ticket zu finden (ca 25000 Tickets vorhanden; davon 1/5 Ongoing oder Open).
Gerne würde ich die Suche in den Bereichen Open und Ongoing verbessern... jegliche Versuche sind bisher leider schief gelaufen...
 
Vielen Dank schon einmal im Voraus für eventuelle Lösungsvorschläge!!!
 

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Durchsuchen einer großen Liste
20.10.2015 08:42:32 Marke
NotSolved
21.10.2015 16:28:06 Gast80944
NotSolved