Access zoeken naar nummer

Pagina: 1
Acties:

Vraag


Acties:
  • +1 Henk 'm!

  • BladeSlayer1000
  • Registratie: April 2013
  • Laatst online: 14:03
Geachte,

Momenteel ben ik bezig om een zoekformulier te maken voor mijn werk waar we door de openstaande orders kunnen zoeken in ms Access 2016.

Nou ben ik zo ver dat ik op de meeste data kan zoeken, zoals bestelnummer, datum en de voornaam van de klant alleen krijg ik het niet werkend om te zoeken op telefoonnummer. Ik loop al de hele dag te zoeken op het internet naar oplossingen, maar tot nu toe tevergeefs.

Hieronder een afbeelding van de query:
Afbeeldingslocatie: http://i64.tinypic.com/ilvpn5.png

Ik heb ook de query zelf even hieronder genoteerd:
code:
1
2
3
4
SELECT DISTINCT OrderedProducts.orderID, Customers.primairPhone, Customers.secondairPhone, Orders.orderDate, Orders.Paid, Customers.firstname, Orders.orderTracking
FROM (Customers INNER JOIN Orders ON Customers.customerID = Orders.cusomterID) INNER JOIN OrderedProducts ON Orders.orderID = OrderedProducts.orderID
WHERE (((OrderedProducts.orderID) Like "*" & [forms]![searchOrders]![SearchCheck] & "*")) OR (((Customers.primairPhone) Like "#" & [forms]![searchOrders]![SearchCheck] & "#")) OR (((Customers.secondairPhone) Like "*" & [forms]![searchOrders]![SearchCheck] & "*")) OR (((Orders.orderDate) Like "*" & [forms]![searchOrders]![SearchCheck] & "*")) OR (((Customers.firstname) Like "*" & [forms]![searchOrders]![SearchCheck] & "*")) OR (((Orders.orderTracking)="Besteld")) OR (((Orders.orderTracking)="Nalevering"))
ORDER BY Orders.orderDate;


En de database:
Afbeeldingslocatie: http://i65.tinypic.com/2irnapu.png
De fields primairPhone en secondairPhone hebben allebei een input mask die er zo uit ziet:
!9999999999;0;_
Ik heb ook al gekeken of het helpt om de input mask te verwijderen, maar dat werkte ook niet.

Het formulier is opgebouwd uit een text box waar ik de waarde invoer, en vervolgens worden de resultaten weergeven in een list box, doormiddel van de bovenstaande query.

Weet iemand toevallig een oplossing? Mochten er nog meer dingen nodig zijn, dan hoor ik het graag.

[ Voor 30% gewijzigd door BladeSlayer1000 op 01-01-2016 16:46 . Reden: De query zelf toegevoegd. ]

Beste antwoord (via NMe op 05-01-2016 15:38)


  • TallManNL
  • Registratie: Oktober 2005
  • Laatst online: 09-10 17:59
Dit heeft te maken met hoeveel haakjes je in je where hebt staan

code:
1
Where (A AND B) OR C

is heel wat anders dan
code:
1
WHERE A AND (B OR C)


jouw query is effectief
code:
1
WHERE OrderID OR primairPhone OR secundairPhone OR FirstName AND Besteld OR Nalevering OR Klaar


Denk dat je meer hebt aan
code:
1
WHERE OrderID OR primairPhone OR secundairPhone OR FirstName AND (Besteld OR Nalevering OR Klaar)

[ Voor 7% gewijzigd door TallManNL op 01-01-2016 19:56 ]

geheelonthouder met geheugenverlies

Alle reacties


Acties:
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Waarom gebruik je bij een telefoonnummer een # in de Like?
Los daarvan: afhankelijk van het aantal records in de tabel kon de performance wel eens dramatisch worden na verloop van tijd...

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • BladeSlayer1000
  • Registratie: April 2013
  • Laatst online: 14:03
RobIII schreef op vrijdag 01 januari 2016 @ 16:55:
Waarom gebruik je bij een telefoonnummer een # in de Like?
Los daarvan: afhankelijk van het aantal records in de tabel kon de performance wel eens dramatisch worden na verloop van tijd...
De # was een 'oplossing' die ik tegenkwam op stackoverflow, dat werkte dus niet.
Ik ken de basis van SQL maar niet voldoende om de performance te verbeteren. Hoe zou ik de performance kunnen verbeteren?

Acties:
  • +1 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Ik zou even kijken wat de like operator eigenlijk doet.. MSDN: Like Operator (Microsoft Access SQL) [Access 2007 Developer Reference] En dan zie je dat # iets anders doet dan *. En waarschijnlijk wil je dat niet. ;)

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • BladeSlayer1000
  • Registratie: April 2013
  • Laatst online: 14:03
Ik heb zojuist de query wat aangepast, en nu werkt de zoekfunctie naar behoren.
Bedankt allemaal voor het helpen :)

Wat ik heb gedaan is de zoekmogelijkheid bij orderDate verwijderd, en de # bij primairPhone veranderd door een *.
Hieronder een afbeelding hoe de query er nu uitziet:
Afbeeldingslocatie: http://i63.tinypic.com/2urbeht.png

Of in SQL:
code:
1
2
3
4
SELECT DISTINCT OrderedProducts.orderID, Customers.primairPhone, Customers.secondairPhone, Orders.orderDate, Orders.Paid, Customers.firstname, Orders.orderTracking
FROM (Customers INNER JOIN Orders ON Customers.customerID = Orders.cusomterID) INNER JOIN OrderedProducts ON Orders.orderID = OrderedProducts.orderID
WHERE (((OrderedProducts.orderID) Like "*" & [forms]![searchOrders]![SearchCheck] & "*")) OR (((Customers.primairPhone) Like "*" & [forms]![searchOrders]![SearchCheck] & "*")) OR (((Customers.secondairPhone) Like "*" & [forms]![searchOrders]![SearchCheck] & "*")) OR (((Customers.firstname) Like "*" & [forms]![searchOrders]![SearchCheck] & "*") AND ((Orders.orderTracking)="Besteld")) OR (((Orders.orderTracking)="Nalevering"))
ORDER BY Orders.orderDate;

Acties:
  • 0 Henk 'm!

  • BladeSlayer1000
  • Registratie: April 2013
  • Laatst online: 14:03
Om een reden blijft mijn query vreemd doen, ik heb nu de volgende query die ervoor moet zorgen dat er alleen orders worden getoond die de status hebben: 'Besteld', 'Nalevering' of 'Klaar om opgehaald te worden'. Maar hij toont letterlijk alle bestellingen..

Nogmaals de query in SQL:
code:
1
2
3
4
SELECT DISTINCT OrderedProducts.orderID, Customers.primairPhone, Customers.secondairPhone, Orders.orderDate, Orders.Paid, Customers.firstname, Orders.orderTracking
FROM (Customers INNER JOIN Orders ON Customers.customerID = Orders.cusomterID) INNER JOIN OrderedProducts ON Orders.orderID = OrderedProducts.orderID
WHERE (((OrderedProducts.orderID) Like "*" & [forms]![searchOrders]![SearchCheck] & "*")) OR (((Customers.primairPhone) Like "*" & [forms]![searchOrders]![SearchCheck] & "*")) OR (((Customers.secondairPhone) Like "*" & [forms]![searchOrders]![SearchCheck] & "*")) OR (((Customers.firstname) Like "*" & [forms]![searchOrders]![SearchCheck] & "*") AND ((Orders.orderTracking)="Besteld")) OR (((Orders.orderTracking)="Nalevering")) OR (((Orders.orderTracking)="Klaar om opgehaald te worden"))
ORDER BY Orders.orderDate;


Zou dit te maken hebben omdat de query niet geoptimaliseerd is?

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • TallManNL
  • Registratie: Oktober 2005
  • Laatst online: 09-10 17:59
Dit heeft te maken met hoeveel haakjes je in je where hebt staan

code:
1
Where (A AND B) OR C

is heel wat anders dan
code:
1
WHERE A AND (B OR C)


jouw query is effectief
code:
1
WHERE OrderID OR primairPhone OR secundairPhone OR FirstName AND Besteld OR Nalevering OR Klaar


Denk dat je meer hebt aan
code:
1
WHERE OrderID OR primairPhone OR secundairPhone OR FirstName AND (Besteld OR Nalevering OR Klaar)

[ Voor 7% gewijzigd door TallManNL op 01-01-2016 19:56 ]

geheelonthouder met geheugenverlies


Acties:
  • 0 Henk 'm!

  • BladeSlayer1000
  • Registratie: April 2013
  • Laatst online: 14:03
TallManNL schreef op vrijdag 01 januari 2016 @ 19:56:
Dit heeft te maken met hoeveel haakjes je in je where hebt staan

code:
1
Where (A AND B) OR C

is heel wat anders dan
code:
1
WHERE A AND (B OR C)


jouw query is effectief
code:
1
WHERE OrderID OR primairPhone OR secundairPhone OR FirstName AND Besteld OR Nalevering OR Klaar


Denk dat je meer hebt aan
code:
1
WHERE OrderID OR primairPhone OR secundairPhone OR FirstName AND (Besteld OR Nalevering OR Klaar)
Wat een domme fout van mij 8)7 die had ik nog zelfs wel kunnen vinden.
Misschien zit ik al te lang eraan te werken, of ben ik nog steeds niet 100% van gisteravond :P

In ieder geval bedankt voor de oplossing!
Pagina: 1