Results 1 to 4 of 4

Thread: Gebruik van BETWEEN in DataView.RowFilter

  1. #1

    Gebruik van BETWEEN in DataView.RowFilter

    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;

  2. #2
    SillyMember
    Join Date
    May 2003
    Location
    Gent
    Posts
    7,725
    De BETWEEN operator wordt niet ondersteund.
    SUBSTR ook niet, wel SUBSTRING(expression, start, length).
    Bijvoorbeeld (is wel VB.NET )
    Code:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ 
      Handles Button1.Click
        Dim formatBetween As String = _
            "PostAuthor >= '{0}' and PostAuthor <= '{1}'"
        DataView1.RowFilter = String.Format(formatBetween, "Picasso12", "Spike")
    End Sub
    
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
      Handles Button2.Click
        Dim formatLike As String = _
            "PostAuthor LIKE '{0}%' or PostAuthor LIKE '%{1}'"
       DataView1.RowFilter = String.Format(formatLike, "Pica", "ike")
    End Sub
    
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
      Handles Button3.Click
        Dim formatSubStr As String =   "SUBSTRING(PostAuthor,3,3) = '{0}'"
        DataView1.RowFilter = String.Format(formatSubStr, "ike")
    End Sub
    All methodologies are based on fear. -- Kent Beck.

  3. #3
    SillyMember
    Join Date
    May 2003
    Location
    Gent
    Posts
    7,725
    In Delphi:
    Code:
    const
      formatBetween = 'PostAuthor >= ''{0}'' and PostAuthor <= ''{1}''';
      formatLike = 'PostAuthor LIKE ''{0}%'' or PostAuthor LIKE ''%{1}''';
      formatSubStr = 'SUBSTRING(PostAuthor,3,3) = ''{0}''';
    
    procedure TWinForm.Button1_Click(sender: System.Object; e: System.EventArgs);
    begin
       DataView1.RowFilter :=
         System.String.Format(formatBetween, 'Picasso12', 'Spike')
    end;
    
    procedure TWinForm.Button2_Click(sender: System.Object; e: System.EventArgs);
    begin
      DataView1.RowFilter :=
        System.String.Format(formatLike, 'Pica', 'ike')
    end;
    
    procedure TWinForm.Button3_Click(sender: System.Object; e: System.EventArgs);
    begin
      DataView1.RowFilter :=
        System.String.Format(formatSubStr, 'ike')
    end;
    All methodologies are based on fear. -- Kent Beck.

  4. #4
    bedankt,

    Alles werkt!

    Greetz

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Ideeen voor plugin framework
    By pderuiter in forum Algemeen
    Replies: 27
    Last Post: 29-Jul-03, 00:04

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •