Supportnet / Forum / Datenbanken
Seek Method mit verknüpften Tabellen
Frage
Hallo zusammen,
Ich habe das Problem. Das ich mit der "FindFirst" Funktion zuviel Zeit brauche. Nun gibt es ja die "Seek" Funktion.
Situation:
Eine Verknüpfte Tabelle, (tblArtikel) und auf dieser Tabelle ist dann eine Abfrage aufbebaut(qryArtikel)
In dieser Abrage suche ich nach einem Artikel(ArtNr).
Frage:
Wie kann ich die Seek Funktion bei der qryArtikel verwenden. Das Problem, ist die Verknüpfte Tabelle!
Gruss Iso
Antwort 1 von El Bobbele
Hallo Iso!
Seek kann auf verknüpften Tabellen nicht angewendet werden, ohne Wenn und Aber. Versuche stattdessen eine Filterung der Abfrage mit einem passenden Kriterium. Wenn das auch zu langsam ist, dann gehen dir allmählich die Optionen aus. Vielleicht kann mit einem Blick auf den betroffenen Code noch eine Optimierung durchgeführt werden. Ausserdem wäre es interessant zu wissen, wieviele Datensätze denn durchsucht werden sollen?
Gruss
El Bobbele
Seek kann auf verknüpften Tabellen nicht angewendet werden, ohne Wenn und Aber. Versuche stattdessen eine Filterung der Abfrage mit einem passenden Kriterium. Wenn das auch zu langsam ist, dann gehen dir allmählich die Optionen aus. Vielleicht kann mit einem Blick auf den betroffenen Code noch eine Optimierung durchgeführt werden. Ausserdem wäre es interessant zu wissen, wieviele Datensätze denn durchsucht werden sollen?
Gruss
El Bobbele
Antwort 2 von Iso
Hallo EL
Besten dank für deine Antwort.
Die Funkion sieht volgendermassen aus.
Ich habe sie auf das wesentliche gekürzt!
For intloop = 0 To AnzDatensaetze
Select Case Lieferanten
Case "L00001"
.........
rstQuelleL00001.MoveNext
Case "L00002"
........
rstQuelleL00002.MoveNext
Case Else ' Andere Werte.
End Select
strKriteriumNeuerLiferant = "[HstArtikelnummer] = '" & QHerstNr & "'"
rstZielArtHSTArtBestelln.FindFirst strKriteriumNeuerLiferant
If rstZielArtHSTArtBestelln.NoMatch Then
Call ZielArtikel
Call ZielLieferant_neuer_Artikel
Call ZielKalkulation
Else
ArtikelNr = rstZielArtHSTArtBestelln!Artikelnummer
Lieferant = rstZielArtHSTArtBestelln!Lieferant
strArtikelLieferant = ArtikelNr + Lieferant
strArtikelLieferantsuchen = "[strArtikelLieferant] = '" & strArtikelLieferant & "'"
rstZielArtHSTArtBestelln.FindFirst strArtikelLieferantsuchen
If rstZielArtHSTArtBestelln.NoMatch Then
rstZielLiferant.AddNew
'ArtikelNr = rstZielART!Artikelnummer
rstZielLiferant!Artikelnummer = ArtikelNr
rstZielLiferant!Lieferant = LieferantenInt
rstZielLiferant!Bestellnummer = QArtNr
'rstZielLiferant!DatumLetzterEK
rstZielLiferant!LetzterEK = QEPinkl
rstZielLiferant!Waehrung = "CHF"
rstZielLiferant!Preiseinheit = 1
rstZielLiferant!Mengeneinheit = "Stk."
rstZielLiferant!Rabatt = Rabatt
rstZielLiferant!Lieferfrist = 1
rstZielLiferant!Losgroesse = 1
rstZielLiferant!Mindestbestellmenge = 1
'rstZielLiferant!Aktualisierung
'rstZielLiferant!EKRabattgruppe
rstZielLiferant!Aktionspreis = 0
'rstZielLiferant!AktionspreisVon
'rstZielLiferant!AktionspreisBis
rstZielLiferant!AktionspreisPreiseinheit = 1
rstZielLiferant!AktionspreisMengeneinheit = 1
rstZielLiferant!AktionspreisWaehrung = "CHF"
rstZielLiferant.Update
End If
End If
Aktualisieren:
Next intloop
////
Ich hoffe, dass ich da was machen kann.
Gruss Iso
Besten dank für deine Antwort.
Die Funkion sieht volgendermassen aus.
Ich habe sie auf das wesentliche gekürzt!
For intloop = 0 To AnzDatensaetze
Select Case Lieferanten
Case "L00001"
.........
rstQuelleL00001.MoveNext
Case "L00002"
........
rstQuelleL00002.MoveNext
Case Else ' Andere Werte.
End Select
strKriteriumNeuerLiferant = "[HstArtikelnummer] = '" & QHerstNr & "'"
rstZielArtHSTArtBestelln.FindFirst strKriteriumNeuerLiferant
If rstZielArtHSTArtBestelln.NoMatch Then
Call ZielArtikel
Call ZielLieferant_neuer_Artikel
Call ZielKalkulation
Else
ArtikelNr = rstZielArtHSTArtBestelln!Artikelnummer
Lieferant = rstZielArtHSTArtBestelln!Lieferant
strArtikelLieferant = ArtikelNr + Lieferant
strArtikelLieferantsuchen = "[strArtikelLieferant] = '" & strArtikelLieferant & "'"
rstZielArtHSTArtBestelln.FindFirst strArtikelLieferantsuchen
If rstZielArtHSTArtBestelln.NoMatch Then
rstZielLiferant.AddNew
'ArtikelNr = rstZielART!Artikelnummer
rstZielLiferant!Artikelnummer = ArtikelNr
rstZielLiferant!Lieferant = LieferantenInt
rstZielLiferant!Bestellnummer = QArtNr
'rstZielLiferant!DatumLetzterEK
rstZielLiferant!LetzterEK = QEPinkl
rstZielLiferant!Waehrung = "CHF"
rstZielLiferant!Preiseinheit = 1
rstZielLiferant!Mengeneinheit = "Stk."
rstZielLiferant!Rabatt = Rabatt
rstZielLiferant!Lieferfrist = 1
rstZielLiferant!Losgroesse = 1
rstZielLiferant!Mindestbestellmenge = 1
'rstZielLiferant!Aktualisierung
'rstZielLiferant!EKRabattgruppe
rstZielLiferant!Aktionspreis = 0
'rstZielLiferant!AktionspreisVon
'rstZielLiferant!AktionspreisBis
rstZielLiferant!AktionspreisPreiseinheit = 1
rstZielLiferant!AktionspreisMengeneinheit = 1
rstZielLiferant!AktionspreisWaehrung = "CHF"
rstZielLiferant.Update
End If
End If
Aktualisieren:
Next intloop
////
Ich hoffe, dass ich da was machen kann.
Gruss Iso
Antwort 3 von El Bobbele
Hallo Iso!
Der gezeigte Codeschnipsel reicht allein nicht aus, um da eine Optimierung durchführen zu können. Dazu braucht es schon die ganze Prozedur, inkl. des merkwürdigen Select-Abschnittes. Werden dort tatsächlich Lieferanten im Code hartverdrahtet benutzt? Was machen die drei Prozeduraufrufe von ZielArtikel bis ZielKalkulation? Warum verwendest du eine Schleife mit intLoop, wenn intLoop offensichtlich nirgends verwendet wird? Ein bisschen Erklärung zu dem ganzen Vorgang wäre sicherlich auch hilfreich.
Ggfs. kannst du mir die Datenbank auch schicken an elbobbele@yahoo.de.
Gruss
El Bobbele
Der gezeigte Codeschnipsel reicht allein nicht aus, um da eine Optimierung durchführen zu können. Dazu braucht es schon die ganze Prozedur, inkl. des merkwürdigen Select-Abschnittes. Werden dort tatsächlich Lieferanten im Code hartverdrahtet benutzt? Was machen die drei Prozeduraufrufe von ZielArtikel bis ZielKalkulation? Warum verwendest du eine Schleife mit intLoop, wenn intLoop offensichtlich nirgends verwendet wird? Ein bisschen Erklärung zu dem ganzen Vorgang wäre sicherlich auch hilfreich.
Ggfs. kannst du mir die Datenbank auch schicken an elbobbele@yahoo.de.
Gruss
El Bobbele

