Announcement

Collapse
No announcement yet.

Datensätze filtern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datensätze filtern

    Mit der unten aufgeführten procedure will ich Datensätze filtern, die mit dem Wert
    der Caption des Radiobuttons übereinstimmen.
    Ohne Syntaxfehler, funktioniert aber nicht.
    Frage: Was habe ich vergessen.
    Bin am verzweifeln.

    procedure TForm1.RadioButton1Click(Sender: TObject);
    begin
    if radiobutton1.checked=true then
    begin
    if query1.active = true then query1.close;
    query1.sql.clear;
    query1.sql.add
    ('select*from country where Name like :nachname');
    query1.params[0].AsString:=RadioButton1.Caption;
    query1.open;
    end;
    end;

    Danke für Hilfe
    Peter H.

  • #2
    Hallo,

    wo liegt das Problem? Bei mir funktioniert das folgende Beispiel:
    <pre>
    procedure TForm1.Button1Click(Sender: TObject);
    var
    sSearchValue : String;
    begin
    with RadioGroup1 do
    sSearchValue := Items[ItemIndex];
    Query1.Active := False;
    Query1.Params[0].Value := sSearchValue;
    Query1.Active := True;
    end;
    </pre>
    Es ist immer eine gute Idee, anstelle der SQL-Zuweisung im eigenen Programm während der Entwicklung mit einem im Objektinspektor fest eingetragenen SQL-Text zu beginnen, da so im Objektinspektor der <b>Parameter</b> konfiguriert werden kann (Parameter-Typ, Datentyp):
    <pre>
    object Form1: TForm1
    Left = 210
    Top = 129
    Width = 696
    Height = 434
    Caption = 'Form1'
    Color = clBtnFace
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    OldCreateOrder = False
    PixelsPerInch = 96
    TextHeight = 13
    object Button1: TButton
    Left = 104
    Top = 64
    Width = 75
    Height = 25
    Caption = 'Button1'
    TabOrder = 0
    OnClick = Button1Click
    end
    object RadioGroup1: TRadioGroup
    Left = 16
    Top = 112
    Width = 193
    Height = 105
    Caption = 'RadioGroup1'
    ItemIndex = 0
    Items.Strings = (
    'Bolivia'
    'Canada'
    'Chile')
    TabOrder = 1
    end
    object DBGrid1: TDBGrid
    Left = 16
    Top = 224
    Width = 593
    Height = 169
    DataSource = DataSource1
    TabOrder = 2
    TitleFont.Charset = DEFAULT_CHARSET
    TitleFont.Color = clWindowText
    TitleFont.Height = -11
    TitleFont.Name = 'MS Sans Serif'
    TitleFont.Style = []
    end<font color="#FF0000">
    object Query1: TQuery
    DatabaseName = 'DBDEMOS'
    SQL.Strings = (
    'SELECT * FROM COUNTRY '
    'WHERE Name LIKE :nachname')
    Left = 32
    Top = 64
    ParamData = <
    item
    DataType = ftString
    Name = 'nachname'
    ParamType = ptInput
    end>
    object Query1Name: TStringField
    FieldName = 'Name'
    Origin = 'DBDEMOS."COUNTRY.DB".Name'
    Size = 24
    end
    object Query1Capital: TStringField
    FieldName = 'Capital'
    Origin = 'DBDEMOS."COUNTRY.DB".Capital'
    Size = 24
    end
    object Query1Continent: TStringField
    FieldName = 'Continent'
    Origin = 'DBDEMOS."COUNTRY.DB".Continent'
    Size = 24
    end
    object Query1Area: TFloatField
    FieldName = 'Area'
    Origin = 'DBDEMOS."COUNTRY.DB".Area'
    end
    object Query1Population: TFloatField
    FieldName = 'Population'
    Origin = 'DBDEMOS."COUNTRY.DB".Population'
    end
    end</font>
    object DataSource1: TDataSource
    DataSet = Query1
    Left = 64
    Top = 64
    end
    end
    </pre>
    P.S: Wenn bei <b>LIKE</b> ohne Jokerzeichen (_ oder %) gearbeitet wird, müssen die Suchbegriffe völlig identisch mit dem vorhandenen Datenbankwert sein.
    &#10

    Comment


    • #3
      Danke,
      Hat sich erledigt
      mfg Pete

      Comment

      Working...
      X