YES !!
Dat betekent dus dat die ene mogelijke hinderpaal voor eens en altijd weggewerkt is.
Het enige wat je nu nog moet doen is CommandText optimaliseren.
Als je telkens een afwijkende opvraging moet doen kan je misschien best iedere keer een afzonderlijke code schrijven. Het gaat uiteindelijk telkens over één (toegegeven, het kan een langere worden) aan te passen regel.
wel nog beter filteren
In je werkende code heb je nu staan "select ... from ... where chargenummer = ..."
WHERE is altijd waar je mee begint, en criteria toevoegen doe je met de operatoren AND en OR. In geval van OR wel altijd goed nadenken waar het gebruik van haakjes vereist is:
"where (x=1 and y=2) or z=3" is iets anders dan "where x=1 and (y=2 or z=3)"
Het is ook perfect mogelijk om x (of y, enz) meermaals te gebruiken, bv:
"where x>10 and x<20 and y>z"
Nog een interessante. Stel dat je 4 verschillende waarden wil vinden:
"where x=100 or x=150 or x=200 or x=250"
is hetzelfde als
"where x in (100,150,200,250)"
Zoals eerder gezegd kan je ook met variabelen werken. Dat is met name aan te raden als je meermaals hetzelfde type van opvraging wil doen.
Stel dat je iedere keer moet kunnen selecteren op chargenummer, artikel en lokatie.
In de bestaande werkwijze zou dat kunnen zijn:
"where chargenummer = 500 and artikel = 'Jonagold' and lokatie = 'kelder'"
Let op de noodzakelijke enkele aanhalingstekens bij alfanumerieke gegevens, die moeten straks terugkomen!
Je voorziet dus een methode waarmee de gebruiker die zoekwaarden kan ingeven. Ik neem hier voor het gemak een werkblad 'Keuzes' waar in kolom A de benamingen staan en in kolom B wordt dan ingevuld: chargenummer in B1, enz.
We gaan de variabelen een andere naam geven dan je databasevelden (is zelfs niet nodig maar wel minder verwarrend).
Vooraleer je databaseconnectie te realiseren haal je die gegevens dus op. Daartoe komt bv. vooraan in je code:
With Sheets("Keuzes")
zoek_chargenummer = .[B1]
zoek_artikel = .[B2]
zoek_lokatie = .[B3]
End With
Dan kan je verdere code er zo uitzien:
.CommandText = "select ... from ... where chargenummer = " & zoek_chargenummer & " and artikel = '" & zoek_artikel & "' and lokatie = '" & zoek_locatie & "'"
(Ik heb hier nu wel geen database bij de hand en dus de code uit de losse pols geschreven, hopelijk zit er geen fout in...)
Tja, het is nu terug jouw beurt! Experimenteren en nog experimenteren, denk ik zo!
En als je vast komt te zitten... één adres: oplossing.be!
Succes!
pitufo