VB dataset 6tyś rekordów

0

Witam was mam dataseta co ma około 6 tyś rekordów niestety każde pole rekordu muszę sprawdzić z następnymi rekordami i ich polami co najlepsze mamy pola 1,2,3,4, więc pole 1 muszę sprawdzić we wszystkich polach następnego rekordu i tak dalej. Z tego wszystkiego wyszło mi coś takiego :

   If ds.Tables("zest").Rows.Count > 0 Then  ' SPRAWDZAMY CZY DATASET MA COŚ W SOBIE

                        For i = 0 To ds.Tables("zest").Rows.Count - 1 ' JEŚLI MA TO  WYKONUJEMY PĘTLE  KTÓRA BĘDZIE POBIERAĆ REKORD I SPRAWDZAĆ GO Z NASTĘPNYMI JAK SPRAWDZI TO WEŹMIE NASTĘPNY I BD GO SPRAWDZAĆ Z KOLEJNYMI ALE OPRÓCZ SIEBIE SAMEJ 
        id = ds.Tables("zest").Rows(i).Item("ID")

                        For c = 0 To ds.Tables("zest").Rows.Count - 1
                            If ds.Tables("zest").Rows(c).Item("ID") <> id Then   ' JEŚLI  ID REKORDU JEST INNE TO SPRAWDZAJ REKORD 

                        If ((ds.Tables("zest").Rows(i).Item("a") Like ds.Tables("zest").Rows(c).Item("a") Or ds.Tables("zest").Rows(i).Item("a") Like ds.Tables("zest").Rows(c).Item("b") Or ds.Tables("zest").Rows(i).Item("a") Like ds.Tables("zest").Rows(c).Item("c") Or ds.Tables("zest").Rows(i).Item("a") Like ds.Tables("zest").Rows(c).Item("d") Or ds.Tables("zest").Rows(i).Item("a") Like ds.Tables("zest").Rows(c).Item("e") Or ds.Tables("zest").Rows(i).Item("a") Like ds.Tables("zest").Rows(c).Item("f")) And (ds.Tables("zest").Rows(i).Item("b") Like ds.Tables("zest").Rows(c).Item("a") Or ds.Tables("zest").Rows(i).Item("b") Like ds.Tables("zest").Rows(c).Item("b") Or ds.Tables("zest").Rows(i).Item("b") Like ds.Tables("zest").Rows(c).Item("c") Or ds.Tables("zest").Rows(i).Item("b") Like ds.Tables("zest").Rows(c).Item("d") Or ds.Tables("zest").Rows(i).Item("b") Like ds.Tables("zest").Rows(c).Item("e") Or ds.Tables("zest").Rows(i).Item("b") Like ds.Tables("zest").Rows(c).Item("f")) And (ds.Tables("zest").Rows(i).Item("c") Like ds.Tables("zest").Rows(c).Item("a") Or ds.Tables("zest").Rows(i).Item("c") Like ds.Tables("zest").Rows(c).Item("b") Or ds.Tables("zest").Rows(i).Item("c") Like ds.Tables("zest").Rows(c).Item("c") Or ds.Tables("zest").Rows(i).Item("c") Like ds.Tables("zest").Rows(c).Item("d") Or ds.Tables("zest").Rows(i).Item("c") Like ds.Tables("zest").Rows(c).Item("e") Or ds.Tables("zest").Rows(i).Item("c") Like ds.Tables("zest").Rows(c).Item("f")) And (ds.Tables("zest").Rows(i).Item("d") Like ds.Tables("zest").Rows(c).Item("a") Or ds.Tables("zest").Rows(i).Item("d") Like ds.Tables("zest").Rows(c).Item("b") Or ds.Tables("zest").Rows(i).Item("d") Like ds.Tables("zest").Rows(c).Item("c") Or ds.Tables("zest").Rows(i).Item("d") Like ds.Tables("zest").Rows(c).Item("d") Or ds.Tables("zest").Rows(i).Item("d") Like ds.Tables("zest").Rows(c).Item("e") Or ds.Tables("zest").Rows(i).Item("d") Like ds.Tables("zest").Rows(c).Item("f")) And (ds.Tables("zest").Rows(i).Item("e") Like ds.Tables("zest").Rows(c).Item("a") Or ds.Tables("zest").Rows(i).Item("e") Like ds.Tables("zest").Rows(c).Item("b") Or ds.Tables("zest").Rows(i).Item("e") Like ds.Tables("zest").Rows(c).Item("c") Or ds.Tables("zest").Rows(i).Item("e") Like ds.Tables("zest").Rows(c).Item("d") Or ds.Tables("zest").Rows(i).Item("e") Like ds.Tables("zest").Rows(c).Item("e") Or ds.Tables("zest").Rows(i).Item("e") Like ds.Tables("zest").Rows(c).Item("f")) And (ds.Tables("zest").Rows(i).Item("f") Like ds.Tables("zest").Rows(c).Item("a") Or ds.Tables("zest").Rows(i).Item("f") Like ds.Tables("zest").Rows(c).Item("b") Or ds.Tables("zest").Rows(i).Item("f") Like ds.Tables("zest").Rows(c).Item("c") Or ds.Tables("zest").Rows(i).Item("f") Like ds.Tables("zest").Rows(c).Item("d") Or ds.Tables("zest").Rows(i).Item("f") Like ds.Tables("zest").Rows(c).Item("e") Or ds.Tables("zest").Rows(i).Item("f") Like ds.Tables("zest").Rows(c).Item("f"))) Then
                        'tabela.Rows.Add(id, ds.Tables("zest").Rows(c).Item("ID"), ds.Tables("zest").Rows(i).Item("a"), ds.Tables("zest").Rows(i).Item("b"), ds.Tables("zest").Rows(i).Item("c"), ds.Tables("zest").Rows(i).Item("d"), ds.Tables("zest").Rows(i).Item("e"), ds.Tables("zest").Rows(i).Item("f"))  ' TUTAJ CAŁY IF, JEST DOŚĆ OBSZERNY  JAK WIDAĆ KAŻDE POLE JEST SPRAWDZANE  Z KAŻDYM POLEM NASTĘPNEGO REKORDU WIĘC A JEST SPRAWDZANE Z A,B,C,D,E,F  POTEM B JEST SPRAWDZANE Z A,B,C,D,E,F . I  JEŚLI WSZYSTKIE WARTOŚCI WYSTĄPIĄ TO DODA MI TEN REKORD TO TABELI 
                         End If
                         End If
                        Next c
                        Next i
                        

Wszystko było by fajnie ale jednak przy 6 tysiącach czas oczekiwania jest hardcorowo długi Pętla jeśli dobrze liczę wykona się 30 tyś razy :D. Jest jeszcze jakaś inna metoda żeby uzyskać taki efekt ? Ok wiem zapytanie SQL niestety SQL nie znam SQL na takim poziomie.

używaj <code class="vb"></code> - msm

0

Zmień strukturę na taką, jak Ci zaproponowano na GL.

0

Marcin ty jesteś wszędzie :D. Problem w tym że nie znam się na SQL aż tak dogłębnie co najlepsze nie odwołuje się prosto do bazy tylko do pliku mdb stworzonego w accesie gdyby to była baza postawiona gdzieś na serwerze to bym zwyczajnie posprawdzał sobie sumy kontrolne wierszy i po robocie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1