Hallo,
ik heb een vraagje.
Ik heb een DataView waar mijn records in gestored zijn.
Nu wil ik een filter gaan toevoegen zodat ik kan kiezen welke records ik wil gaan zien uit die DataView. Ik heb daarvoor dus gebruik gemaakt van een RowFilter. Dit werkt goed op een uitzondering na.
Ik wil in sommige gevallen velden zien met een postcode die tussen 2 bepaalde waardes liggen. De velden zijn NIET numeriek (ik bedoel dat er in die velden ook nog de landcode zit dus B, NL). Nu heb ik al geprobeerd van een BETWEEN operator te gebruiken maar dit geeft steevast de fout van een ongekend keyword 'BETWEEN'. Ik vermoed dat dit komt omdat ik hem gebruik bij string velden. Ik dacht dus ook eens de landcode eruit te filteren met een SUBSTR maar ook dit geeft fout van ongekend keyword 'SUBSTR'.
Dus hoe kan ik het beste een BETWEEN operator op string velden gebruiken in een RowFilter of hoe kan ik velden laten zien waarvan de postcode ( niet numeriek ) tussen 2 bepaalde niet numerieke waardes ligt.
Ik heb hieronder ter illustratie de code toegevoegd van de functie waar ik mijn searchString opbouw en van de procedure waar ik mijn filtering toepas.
Code voor searchString op te bouwen
Code:function SetProvincie(iProv:integer; blnAnd:boolean): string; var resultString:string; andString:string; begin if blnAnd then andString := ' and ' else andString := ''; case iProv of 0: resultString := ''; 1: resultString := andString + 't_pstc like ''B-2%'''; //Antwerpen 2: resultString := andString + '((t_pstc like ''B-7%'') or (substr(t_pstc,3,4) between ''B-6000%'' and ''B-6599%''))'; //Henegouwen 3: resultString := andString + 't_pstc between ''B-3500%'' and ''B-3999%'''; //Limburg 4: resultString := andString + 't_pstc like ''B-4%'''; //Luik 5: resultString := andString + 't_pstc between ''B-6600%'' and ''B-6999%'''; //Luxemburg 6: resultString := andString + 't_pstc like ''B-5%'''; //Namen 7: resultString := andString + 't_pstc like ''B-9%'''; //Oost-Vlaanderen 8: resultString := andString + '((t_pstc between ''B-1500%'' and ''B-1999%'') or (t_pstc between ''B-3000%'' and ''B-3499%''))'; //Vlaams-Brabant 9: resultString := andString + 't_pstc between ''B-1000%'' and ''B-1499%'''; //Waals-Brabant + Brussel 10: resultString := andString + 't_pstc like ''B-8%'''; //West-Vlaanderen end; setProvincie := resultString; end;
Code waar filtering wordt toegepast
Code:procedure TWebForm1.FilterRows(); begin if (dpiAanbestOverview.EditText <> '') then searchString := 't_aanb = ' + '''' + dpiAanbestOverview.Date.ToString + '''' + setProvincie(cboProvince.SelectedIndex,true) else searchString := setProvincie(cboProvince.SelectedIndex,false); dvwAanbestOverview.Table := (Session['dstAanbestOverviewTable'] as DataTable); dvwAanbestOverview.RowFilter := searchString; dgrAanbestOverview.DataSource := dvwAanbestOverview; dgrAanbestOverview.CurrentPageIndex := 0; dgrAanbestOverview.DataBind; Label1.Text := searchString; end;
Bookmarks