Toon posts:

[SQL] Sorteren en bepaalde characters negeren bij sorteren*

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik zoek een manier om volgende te bekomen :

uit een access tabel haal ik een tabel met verschillende gegevens in, oa ook namen.
Nu moet ik die namen sorteren maar met ORDER BY is het niet genoeg, ORDER BY sorteert zo :

CLARISSE
CUFFEZ
D'HAVELOOSE
D'OOSTERLINCK
DAVID
DE CORTE
DE MUNCK
DEBRUYNE

En het moet zijn :


CLARISSE
CUFFEZ
DAVID
DEBRUYNE
DE CORTE
D'HAVELOOSE
DE MUNCK
D'OOSTERLINCK

Met andere woorden, geen rekening houden met spaties. Is dit nog mogelijk via sql of hoe kan ik dit anders oplossen?

Dit alles moet in een Listview komen. De namen zijn slechts 1 kolom van een tabel met 20 kolommen.

Thanks

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op dinsdag 17 april 2007 @ 22:20:
Met andere woorden, geen rekening houden met spaties.
SQL:
1
Order By Replace(Naam, ' ', '')


Maar ik neem aan dat je bedoelt: geen rekening houden met leestekens.


SQL:
1
Order By Replace(Replace(Naam, ' ', ''), '''', '')
whoami schreef op dinsdag 17 april 2007 @ 22:54:
kut, steekt die rob me voor toen ik nog ff wat aan het testen was :(
Muhahaha! >:) Prutz0r! :+

[ Voor 99% gewijzigd door RobIII op 17-04-2007 22:56 ]

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


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Dit heeft niets met VB.NET te maken, en ook niets met een ListView; dit probleem is volledig SQL gerelateerd.
Wat je zou kunnen doen, is je ORDER BY clause als volgt maken:
code:
1
ORDER BY REPLACE (REPLACE (naam, '''', ''), ' ', '')

Dit wordt wel een beetje ranzig zo natuurlijk als je een hele boel karakters hebt waar je geen rekening wilt mee houden, maar dit zou je kunnen oplossen door gebruik te maken van een UDF.

kut, steekt die rob me voor toen ik nog ff wat aan het testen was :(

[ Voor 8% gewijzigd door whoami op 17-04-2007 22:55 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
Thanks voor de reply,

zo stel ik m'n sql string op :

Visual Basic .NET:
1
Dim strSQL As String = "SELECT * FROM lln ORDER BY REPLACE(naam, ' ','')" 


dit kent vb.net blijkbaar niet, in runtime krijg ik : "Undefined function 'REPLACE' in expression."

[ Voor 6% gewijzigd door Verwijderd op 17-04-2007 23:01 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op dinsdag 17 april 2007 @ 22:55:
Thanks voor de reply,

zo stel ik m'n sql string op :

Dim strSQL As String = "SELECT * FROM lln ORDER BY REPLACE(naam, ' ','')"

dit kent vb.net blijkbaar niet, in runtime krijg ik : "Undefined function 'REPLACE' in expression."
Welke SQL gaat het hier over?
En als je code post, gebruik dan aub code tags.
whoami schreef op dinsdag 17 april 2007 @ 22:57:
:'( weeral.... * whoami gaat maar maffen
pwned! :>
Hoe vaak heb je de luxe om door twee moderators te worden geholpen? :Y)

[ Voor 27% gewijzigd door RobIII op 17-04-2007 22:59 ]

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


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Replace is een SQL Server specifieke functie; VB.NET moet die idd niet kennen maar de DB die je gebruikt wel.
Welke DB gebruik je ?
:'( weeral.... * whoami gaat maar maffen

[ Voor 15% gewijzigd door whoami op 17-04-2007 22:58 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ik haal m'n gegevens uit een access 2003 databank.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op dinsdag 17 april 2007 @ 23:00:
Ik haal m'n gegevens uit een access 2003 databank.
Bij mijn weten kent access ook gewoon de replace functie :?
Post eens wat meer (relevante!) code (en bij deze het verzoek dit soort informatie voortaan in de topicstart meteen te vermelden).

[ Voor 25% gewijzigd door RobIII op 17-04-2007 23:04 ]

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


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Mja, ik weet niet of je in Access kunt sorteren op iets dat niet in je SELECT list staat ?

^^
dat is het dus niet; aangezien een dergelijke query rechtstreeks in Access wel gaat.
Ben je zeker dat je geen syntax errors in je query hebt ?
Moet je die quotes in VB.NET niet escapen ? (/me C#-er en geen vb.netter)

[ Voor 55% gewijzigd door whoami op 17-04-2007 23:06 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
SUPER

Access kent dus inderdaad de replace funtie, als ik een query maak en de sql ervan aanpas werkt het wel.

Thanks u guys!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op dinsdag 17 april 2007 @ 23:06:
Access kent dus inderdaad de replace funtie, als ik een query maak en de sql ervan aanpas werkt het wel.
Wat is het verschil met net dan toen het niet werkte? :? En zou je zo vriendelijk willen zijn je oplossing te posten voor future reference?

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


Verwijderd

Topicstarter
Het werkt nog niet in m'n vb.net applicatie, maar in access zelf werkt het wel, dus is het een kwestie van de juiste string door te geven.

Als ik morgen verder kan werken hieraan zal ik zeker nog de oplossing posten, maar nu sluit ik af voor vanavond. Ik moet morgen om 6 op om lekker 2 uur in de fille te gaan staan schuiven naar Brussel :-)

Thanks

Verwijderd

Topicstarter
reden waarom het niet werkt vanuit .net :

VB/VBA function works only with the combo JET+ACCESS. You are using JET+VBthat would NOT work. The only functions that will work with JET+VB are the SQL-JET functions. Replace is a VBA (or VB) function, not an SQL function, same for Mid$( ), a VB/VBA function (but not for iif, since Jet-SQL defines iif and, to the contrary of the VB-iff, it evaluates only the required arguments, not all the three). So, in short, sorry, will work only with JET+ACCESS.

ik zal dus een stored procedure maken en die oproepen. The easy way out

Verwijderd

Topicstarter
en ja hoor, stored procedures werken ook niet.

terug naar af dus :)
Pagina: 1