VB6 2Probs Filter und Lange SQL Abfrage

Hallo…

Ich habe da 2 Probleme.

  1. SQL Abfrage:
    Ich habe eine SQL Abfrage die verdammt lang ist also kann sie nicht in einer Zeile nach .Source des RecordSets stehen.
    Gibt es eine möglichkeit diese so zu trennen das die funktionsfähigkeit 100% gegeben ist ohne Performanceverluste usw.?
    Meine Idee war den string in 3 Variablen aufzuteilen
    SQLStr1 2 und 3 … Aber wie verknüpfe ich die bei source so das es funktioniert?

  2. Filterfunktion in deinem DataGrid
    Ich habe ein RecordSet mit dem SQL select gefüllt. Zudem habe ich noch eine suche eingebaut bei der alle datensätze nach dem suchbegriff durchsucht werden und dann dem DGV Datagrid übergeben werden.

Mein Ziel ist es nun einen Filter für die Spalte Abmessung 1 und Abmessung 2 zu erstellen, dass wenn man zb bei der Suche nach Blech sucht noch die abmessung Filtern kann oder auch ohne die suche.

Möglich macht das eine Filterfunktion. Nur wie Baue ich die am besten so das sie eine sehr hohe Performance hat? Das problem ist, dass die DB verdammt groß ist. Ist eine normale Filter funktion schnell genug das nix nachhängt?

Danke schon mal im Vorraus.
Grüße digitalfreak

Hallo digitalfreak!

Wenn ich das richtig verstehe ist das aber VBA, nicht VB6 oder?!

Meine Idee war den string in 3 Variablen aufzuteilen
SQLStr1 2 und 3 … Aber wie verknüpfe ich die bei source so
das es funktioniert?

In VBA:

DeinSQLString = String1 & String2 & String3

Oder willst du was ins SQL-Fenster schreiben?! Da kenn ich mich nicht aus!

Mein Ziel ist es nun einen Filter für die Spalte Abmessung 1
und Abmessung 2 zu erstellen, dass wenn man zb bei der Suche
nach Blech sucht noch die abmessung Filtern kann oder auch
ohne die suche.

Erster Filter:
X.Filter = „Abmessung1 = ‚Blech‘“
X.FilterOn = True

Zweiter Filter:
Dim strAbmessung as String

strAbmessung = … (z.B. 50x50)

X.Filter = „Abmessung1 = ‚Blech‘ AND Abmessung2 = '“ & strAbmessung & „’“
X.FilterOn = True

X ist das Objekt, auf den der Filter angewand werden soll.
z.B. Formular1 wenn es mit der Tabelle verknüpft ist, oder Report…

Für Blech musst du natürlich auch eine Variable verwenden und so wie strAbmessung einbauen.

Möglich macht das eine Filterfunktion. Nur wie Baue ich die am
besten so das sie eine sehr hohe Performance hat? Das problem
ist, dass die DB verdammt groß ist. Ist eine normale Filter
funktion schnell genug das nix nachhängt?

Meiner erfahrung nach geht so ne Abfrage verdammt schnell! Glaube nicht, dass man die Performance mit einer selbstgebastelten funktion noch steigern kann.

Gruß, Phil

Hallo,

Ich habe da 2 Probleme.

  1. SQL Abfrage:
    Ich habe eine SQL Abfrage die verdammt lang ist also kann sie
    nicht in einer Zeile nach .Source des RecordSets stehen.
    Gibt es eine möglichkeit diese so zu trennen das die
    funktionsfähigkeit 100% gegeben ist ohne Performanceverluste
    usw.?

Ja, kein Problem.
Mal ein Beispiel mit einem eher kurzen SQL-String bei mir, als Erklärung wird das aber reichen.

SQLString1 = "SELECT material\_data.\* FROM material\_data WHERE FIELD01 ''"

dürfte ich auch so schreiben:

SQLString1 = "SELECT material\_data.\* \_
 FROM material\_data WHERE FIELD01 ''"

Ein ‚Unterstrich‘ hinter ein leerzeichen und dann Enter, der Rest kommt in die nächste Zeile. Der Code wird leichter lesbar und VB stört’s nicht.

  1. Filterfunktion in deinem DataGrid
    Ich habe ein RecordSet mit dem SQL select gefüllt. Zudem habe
    ich noch eine suche eingebaut bei der alle datensätze nach dem
    suchbegriff durchsucht werden und dann dem DGV Datagrid
    übergeben werden.

Mein Ziel ist es nun einen Filter für die Spalte Abmessung 1
und Abmessung 2 zu erstellen, dass wenn man zb bei der Suche
nach Blech sucht noch die abmessung Filtern kann oder auch
ohne die suche.

su = "Feld1 = '" & File1.List(i) & "' \_
AND Feld2 = " & rst1("Feld3")
Adodc1.Recordset.Filter = su

Möglich macht das eine Filterfunktion. Nur wie Baue ich die am
besten so das sie eine sehr hohe Performance hat? Das problem
ist, dass die DB verdammt groß ist. Ist eine normale Filter
funktion schnell genug das nix nachhängt?

Das passiert ja ebenfalls auf dem Server und wird von der DB-Engine erledigt, schneller geht’s IMHO nicht.

Gruß, Rainer