VB Code of expressie nodig voor selectie

Status
Niet open voor verdere reacties.

Powerblade

Gebruiker
Lid geworden
21 mrt 2008
Berichten
60
Beste Mensen,

Hoe geef je bij een SQL-instructie de creteria aan , dus expressie of de code, om alle producten te selecteren die beginnen met "-door klant ingevoerde waarde-"

Dus mensen moeten via toetsenbord aangeven bijvoorbeeld de letter A, als de klant dit keer A kiest laat hij alles zien die beginnen met A.

Dus het belangrijkste is, hoe geef je aan dat hij moet kijken naar klantinvoer en niet naar een vooraf gedefinieerde waarde.

alvast bedankt

Powerblade
 
Waar gebruikt?

Hoe wil je de sql-instructie gebruiken? Als je die wilt samenstellen vanuit een formulier dan kun je waardes uit het formulier invoeren door het als strings achter elkaar te plakken. Je krijgt dan iets als:
Code:
"SELECT * FROM tabel WHERE veld='" & [formulierveld] & "'"
Dit voorbeeld werkt met een tekstveld, daarom staan er enkele kwootjes omheen. De sql zelf is ook een string, daarom staan daar dubbele kwoots omheen.
 
Hallo, bedankt voor je reactie,

Eigenlijk zit het zo:

Ik heb een formulier Orders.
Daarin zit een subformulier invoer orders, hier voer je producten in zoals naam product, aantal prijs, subtotaal.
Nou is het veld Producten een keuzelijt met invoervak. On focus event staat op f4, dus als je met enter of tab erop komt, klapt deze automatisch open.

Nu het probleem. als de klant invoert A, dan moet deze keuzelijst alleen de producten laten zien d.m.v. een criteria die dus door de klant aangegeven wordt, die beginnen met A.

Is hier een mogelijkheid in, dus heel simpel alle producten in een keuzelijst laten zien die aan deze voorwaarden voldoen. Toets je A, laat alleen een lijst zien met alle producten die beginnen met A, typ je AB dan laat hij alle producten zien die beginnen met AB.

Ik zit al een week met alleen deze probleem!

Ik hoop dat het mogelijk is, want anders kan ik de database weggooien. :((

alvast bedankt voor all hulp
 
Twee mogelijkheden

De simpele manier is om je zoveel mogelijk aan de standaard access-functionaliteit te houden. Dat zou betekenen dat je de lijst niet beperkt tot alleen de regels die met een A beginnen, maar dat je bij het typen van een A automatisch naar de regels springt die met een A beginnen, dat is de standaard manier van hoe access dit afhandelt.

Ben je hier niet tevreden mee dan kan het natuurlijk anders, maar daar moet je dan volgens mij zelf wat werk voor doen. Je kunt natuurlijk op dit punt je database weggooien, dan ben je er ook vanaf. Als je perse de lijst in wilt perken op beginletter, dan kun je bijvoorbeeld een stukje code schrijven onder de gebeurtenis bij bijwerken. Dat wordt zoiets als:
Code:
Sub keuzelijst_Change()
  Dim ts As String
  ts = "SELECT mijnveld FROM mijntabel"
  If Not keuzelijst.Text = "" Then ts = ts & " WHERE mijnveld LIKE " & Chr(34) & keuzelijst.Text & "*" & Chr(34)
  ts = ts & " ORDER BY mijnveld"
  keuzelijst.RowSource = ts
End Sub
Hierbij heb ik aangenomen dat je huidige rijbron van de keuzelijst SELECT mijnveld FROM mijntabel ORDER BY mijnveld is, en dat je keuzelijst keuzelijst heet.
 
Laatst bewerkt:
De volgende gegevens ga ik proberen, thanks by the way..:

Naam keuzelijst: lala
Veld: ProdictId
tabel: Detail orders

Sub lala_Change()
Dim ts As String
ts = "SELECT ProductId FROM Detail orders"
If Not keuzelijst.Text = "" Then ts = ts & " WHERE ProductId LIKE " & Chr(34) & keuzelijst.Text & "*" & Chr(34)
ts = ts & " ORDER BY ProductId"
keuzelijst.RowSource = ts
End Sub

Nogmaals bedankt, ik laat weel horen wat er van is gekomen, anders post ik de database wel, want ik draai bijna door van al het coderen en uitproberen...

gr
 
het is niet gelukt, zo ziet de sql eruit van de keuzelijst met invoervak ( lala):

SELECT [poa fatih].productid, [poa fatih].Produktnaam, [poa fatih].[prijs per eenheid], [poa fatih].[prijs op afspraak], [poa fatih].klantid
FROM [poa fatih]
WHERE ((([poa fatih]![klantid])=[Forms]![Orders]![KlantId]))
ORDER BY [poa fatih].productid, [poa fatih].Produktnaam, [poa fatih].[prijs per eenheid], [poa fatih].[prijs op afspraak];

Ik hoop dat je hiermee de code van hierboven ingevuld kan posten, mijn kop weegt nu al 110 KG....

nogmaals many thanks Sesam..
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan