anoniem Geplaatst: 16 november 2002 Delen Geplaatst: 16 november 2002 Ik heb 2 kolommen uit een database gehaald en die stop ik in een recordset Rs. [code:1:6900157dad]sql = "SELECT * FROM bezoekers ORDER BY Datum, Naam"[/code:1:6900157dad] Nu staat bij sommige records geen datum. Hij plaats nu eerst de records zonder datum (en naam op volgorde), dan met datum op volgorde (en naam op volgorde). Ik zou graag zien dat ie eerst alle records met datum pakt en dan pas de records zonder datum. Hoe doe ik dat? Quote Link naar reactie
anoniem Geplaatst: 16 november 2002 Auteur Delen Geplaatst: 16 november 2002 [quote:9c6b5f5814="Johant"]sql = "SELECT * FROM bezoekers ORDER BY Datum, Naam" [/quote:9c6b5f5814] Ik weet het niet zeker maar probeer eens: [code:1:9c6b5f5814] SELECT * FROM bezoekers ORDER BY Datum DESC, Naam DESC [/code:1:9c6b5f5814] Als dit niet werkt probeer dan eens DESC(ending) door ASC(ending) te vervangen. Marcel Quote Link naar reactie
anoniem Geplaatst: 16 november 2002 Auteur Delen Geplaatst: 16 november 2002 Volgens mij gaat het erom wel oplopend op datum te sorteren, maar dan niet beginnend met de null-datums. Dat zul je dan toch met twee queries/recordsets moeten doen: sql = "SELECT * FROM bezoekers WHERE Not IsNull(Datum) AND Datum <> "" ORDER BY Datum, Naam" en daarna sql = "SELECT * FROM bezoekers WHERE IsNull(Datum) OR Datum = "" ORDER BY Naam" Quote Link naar reactie
anoniem Geplaatst: 17 november 2002 Auteur Delen Geplaatst: 17 november 2002 Als je inderdaad dat wil zul je inderdaad twee verschillende query's moet gebruiken, ik had het denk ik niet volledig begrepen. Quote Link naar reactie
anoniem Geplaatst: 17 november 2002 Auteur Delen Geplaatst: 17 november 2002 in 1 query: [code:1:265d4e7a83] SELECT Naam, Datum, IIf(Datum IS NULL, 1, 0) FROM bezoekers ORDER BY 3 ASC, Datum ASC, Naam ASC [/code:1:265d4e7a83] Als je ze aflopend gesorteerd wil hebben (DESC) heb je natuurlijk nergens last van. Quote Link naar reactie
anoniem Geplaatst: 19 november 2002 Auteur Delen Geplaatst: 19 november 2002 Hi Annie, Kun je jouw code uitleggen, want die begrijp ik niet zo goed? Quote Link naar reactie
anoniem Geplaatst: 19 november 2002 Auteur Delen Geplaatst: 19 november 2002 [color=blue:99cc2d8bef]IIf(Datum IS NULL, 1, 0)[/color:99cc2d8bef] >> als Datum de waarde NULL heeft geef dan een 1 terug en anders een 0. [color=blue:99cc2d8bef]ORDER BY 3 ASC[/color:99cc2d8bef] >> sorteer op de 3e kolom uit de resultset (van laag naar hoog). Dus alle "geldige" datums krijgen in de derde kolom een 0 en zullen dus als eerste getoond worden. Quote Link naar reactie
anoniem Geplaatst: 19 november 2002 Auteur Delen Geplaatst: 19 november 2002 Je sorteert op de derde kolom met in de ORDER BY clause: 3 ASC. Bij de veldopsomming geef je de derde kolom geen naam mee. Ik heb je methode in Access geprobeerd en dan verzint ie zelf een kolomnaam, Expr1003 in mijn geval (en als ik naar designview switch maakt ie er Expr1 van). En dan sorteert ie dus ook niet op 3 ASC... En waarom expliciet ASC erbij vermeld? Ik ken niet anders dan dat dat default is, maar ik ken dan ook niet alle engines... (en ook niet alle tricks, handig, dat iiffen in een query). Ik zou er dus dit van maken: [code:1:e369eef7ef] SELECT Naam, Datum, IIf(Datum IS NULL, 1, 0) AS sortDatum FROM bezoekers ORDER BY sortDatum, Datum, Naam [/code:1:e369eef7ef] Quote Link naar reactie
anoniem Geplaatst: 19 november 2002 Auteur Delen Geplaatst: 19 november 2002 Voor zover ik weet doet: ORDER BY 3 ASC het volgende: sorteer op de 3e kolom in het result set. Maar dit weet ik niet zeker. Quote Link naar reactie
anoniem Geplaatst: 19 november 2002 Auteur Delen Geplaatst: 19 november 2002 [quote:f131e14c32="Paulus"]Je sorteert op de derde kolom met in de ORDER BY clause: 3 ASC.[/quote:f131e14c32] Klopt [quote:f131e14c32="Paulus"] Bij de veldopsomming geef je de derde kolom geen naam mee. [/quote:f131e14c32] Leek mij ook niet nodig, maar ik ken Access blijkbaar niet goed genoeg ;) [quote:f131e14c32="Paulus"] En waarom expliciet ASC erbij vermeld? Ik ken niet anders dan dat dat default is, maar ik ken dan ook niet alle engines... [/quote:f131e14c32] Klopt, is niet nodig, maar ik zou ze niet de kost willen geven die denken dat bij volgend voorbeeld alle kolommen aflopend gesorteerd worden: [i:f131e14c32]...ORDER BY a, b, c DESC[/i:f131e14c32] Dus voor de duidelijkheid eigenlijk. Quote Link naar reactie
anoniem Geplaatst: 19 november 2002 Auteur Delen Geplaatst: 19 november 2002 [quote:761b5469a6="Mvlstar"]Voor zover ik weet doet: ORDER BY 3 ASC het volgende: sorteer op de 3e kolom in het result set. Maar dit weet ik niet zeker.[/quote:761b5469a6] uhh, zei ik niet eerder daar iets over? [quote:761b5469a6="Annie"]ORDER BY 3 ASC >> sorteer op de 3e kolom uit de resultset (van laag naar hoog). [/quote:761b5469a6] Of geloof je me soms niet :cry: Quote Link naar reactie
anoniem Geplaatst: 19 november 2002 Auteur Delen Geplaatst: 19 november 2002 Ik gebruik nu de volgende sql: [code:1:f05a72c98e]SELECT * , IIF(Datum IS NULL, 1, 0) as sortDatum FROM bezoekers ORDER BY sortDatum, Datum, Naam[/code:1:f05a72c98e] Maar krijg helaas de volgende foutmelding. Haal ik de sortDatum bij de ORDER BY weg dan geeft ie de oude tabel goed weer. [quote:f05a72c98e]Microsoft OLE DB Provider for ODBC Drivers error '80040e10' [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. [/quote:f05a72c98e] Quote Link naar reactie
anoniem Geplaatst: 19 november 2002 Auteur Delen Geplaatst: 19 november 2002 SELECT *, IIF(...) FROM... Quote Link naar reactie
anoniem Geplaatst: 19 november 2002 Auteur Delen Geplaatst: 19 november 2002 Paulus, excuses, tijdens jouw bericht heb ik de mijne even wat aangepast. zie 2 hierboven. Ik krijg nog steeds die foutmelding. Quote Link naar reactie
anoniem Geplaatst: 19 november 2002 Auteur Delen Geplaatst: 19 november 2002 JA sorry, stom, die sortDatum zit natuurlijk niet in de tabel, je moet orderen op die IIF-functie en dan hoef je hem in principe niet in de SELECT mee te nemen: [code:1:b5967eb267] SELECT * FROM bezoekers ORDER BY IIf(Datum IS NULL, 1, 0), Datum, Naam [/code:1:b5967eb267] Dat zou hem moeten zijn. Quote Link naar reactie
anoniem Geplaatst: 19 november 2002 Auteur Delen Geplaatst: 19 november 2002 Fantastisch, hij doet het :P Hier was ik dus nooit op gekomen. Super... Quote Link naar reactie
anoniem Geplaatst: 19 november 2002 Auteur Delen Geplaatst: 19 november 2002 [quote:ef4afff52c="Johant"]Fantastisch, hij doet het :P Hier was ik dus nooit op gekomen. Super...[/quote:ef4afff52c] Ik ook niet. Weer wat geleerd :lol: Quote Link naar reactie
anoniem Geplaatst: 20 november 2002 Auteur Delen Geplaatst: 20 november 2002 [quote:5e2279d4a1="Annie"]uhh, zei ik niet eerder daar iets over? [/quote:5e2279d4a1] Tsja, te snel gelezen waarschijnlijk.... Maar goed alles is nu duidelijk en weer wat geleerd. Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen