Toon posts:

[VB] Regel filteren op bv. derde komma

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb CSV file (comma seperated file) waarin allemaal tekstregels staan die gescheiden zijn doormiddel van een komma. Wanneer ik deze komma vervang door bijvoorbeeld </td><td> dan kan ik een HTML-pagina genereren die het CSV-bestand omzet naar een tabel die ik kan weergeven in een browser.

Nu zou ik graag deze tabel willen sorteren (alfabetisch) op bijvoorbeeld de derde kolom. Hoe doe ik dat??

Ik kan wel sorteren op de eerste kolom, maar dat doe ik om een vrij omslachtige manier, nl. met het dos-commando sort. Te weten:

more < p:\info\lijst1.txt |sort /+1 >>p:\info\lijst2.txt

In lijst1.txt staan alle regels door elkaar. In lijst twee staat alles op alfabetisch volgorde vanaf het eerste karakter. Lijst2 importeer ik in een VBscript en daar laat ik het replace commando er op los om een tabel te genereren.

Dus mijn vraag hoe kan ik sorten op, in principe, ieder willekeurige kolom?

  • Freee!!
  • Registratie: December 2002
  • Laatst online: 10:59

Freee!!

Trotse papa van Toon en Len!

Eerste mogelijkheid is natuurlijk de lijst op de gewenste volgorde aanmaken. Als dat niet lukt, kun je dan op de komma's uitlijnen? Zoja, dan is de DOS SORT nog steeds mogelijk (/+<startpositie>)

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT


Verwijderd

Topicstarter
Ok maar /+ startpositie is wel aardig. Maar hoe doe ik dat bij zoiets:

veld1_met_meer_zoveel_karakters , kolom2, kolom3 , kolom4 , kolom5
veld2_met_minder_karakters , kolom2, kolom3 , kolom4 , kolom5
veld3_met_nog_minder , kolom2, kolom3 , kolom4 , kolom5

Kun je ook de startpositie van de komma opgeven????

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 15:12

NetForce1

(inspiratie == 0) -> true

Je komma's kun je uitlijnen door de velden op te vullen met spaties.

Of je maakt een type
Visual Basic:
1
2
3
4
5
6
Type Regel
  kolom1 as String(20)
  kolom2 as String(10)
  kolom3 as String(10)
  enz..
End Type

[ Voor 54% gewijzigd door NetForce1 op 31-12-2002 11:12 ]

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


Verwijderd

Topicstarter
[note]Je komma's kun je uitlijnen door de velden op te vullen met spaties.[/note]

Das geen optie. Er staan wel 2000 (verschillende) regels (wel vast aantal kolommen (dus ook komma's) in!

  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

kun je niet met b.v. acces de csv importeren en vervolgens in acces sorteren?

of anders zou ik het misschien doen door het met split() in een array te mikken per regel, en vervolgens in een temp tabel te zetten. Als je die dan uitleest kun je natuurlijk een ORDER by meegeven in de query... Hangt er een beetje vanaf hoe netjes het moet worden en hoe vaak je het wilt gaan gebruiken :)

kaart != map && bottel != fles
Wacht op antwoord


Verwijderd

Topicstarter
Het mooiste is natuurlijk alles in een database pleuren en wat mooie queries (middels PHP of ASP) er op los laten. Maar helaas behoort dat niet tot mijn mogelijkheden en moet ik het doen met een CSV-filetje en VBScript.

  • Freee!!
  • Registratie: December 2002
  • Laatst online: 10:59

Freee!!

Trotse papa van Toon en Len!

j_du_pee schreef op 31 December 2002 @ 11:11:
kun je niet met b.v. acces de csv importeren en vervolgens in acces sorteren?
[...]
Wilde ik ook net voorstellen (na nog even nagedacht te hebben), Excel is natuurlijk ook mogelijk.

Maar het handigste is en blijft natuurlijk (indien mogelijk) om de lijst direct in de gewenste volgorde aan te maken :P

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT


Verwijderd

Topicstarter
j_du_pee schreef op 31 December 2002 @ 11:11:
kun je niet met b.v. acces de csv importeren en vervolgens in acces sorteren?
[...]
Nee want hij wordt om die 10 minuten worden ingelezen. Het moet dus automatisch gaan.

  • Freee!!
  • Registratie: December 2002
  • Laatst online: 10:59

Freee!!

Trotse papa van Toon en Len!

Verwijderd schreef op 31 December 2002 @ 11:29:
[...]
Nee want hij wordt om die 10 minuten worden ingelezen. Het moet dus automatisch gaan.
Volgens mij moet een VBScript best met Access kunnen werken.

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT


  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

Verwijderd schreef op 31 December 2002 @ 11:29:
[...]


Nee want hij wordt om die 10 minuten worden ingelezen. Het moet dus automatisch gaan.
je kunt dan wellicht met VBA hetzelfde doen, of Access als COM object aanmaken en diezelfde VBA code gebruiken...

Misschien is het anders een optie het geheel te converteren naar XML en dat te sorteren met de functies die daar voor zijn..

/me j_du_pee zou geen zin hebben zijn eigen sort-algorithme te schrijven...


edit:
sorteeralgorithme; misschien kun je daar ook nog wat mee, maar ik denk dat ik voor de xml variant zou gaan ;)

[ Voor 23% gewijzigd door j_du_pee op 31-12-2002 11:40 ]

kaart != map && bottel != fles
Wacht op antwoord


  • Freee!!
  • Registratie: December 2002
  • Laatst online: 10:59

Freee!!

Trotse papa van Toon en Len!

j_du_pee schreef op 31 December 2002 @ 11:33:
[...]
/me j_du_pee zou geen zin hebben zijn eigen sort-algorithme te schrijven...
[...]
Je hoeft niet je eigen sort-algorithme te schrijven, er zijn er al genoeg (en veel goede), je hoeft er alleen maar één uit te kiezen en te implementeren >:)

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT

Pagina: 1