Announcement

Collapse
No announcement yet.

Wie kann ich einer Access Abfrage Parameter übergeben?

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

  • Wie kann ich einer Access Abfrage Parameter übergeben?

    Die Frage ist sehr dringend! ich hoffe auf baldige antwort

    ich hab versucht (zum test einmal!):

    1 dbgrid liegt auf einem from
    ein TADODATAset ist mit der Abfrage verbunden
    es müssen zwei parameter übergeben werden (vondatum, bisdatum)

    weder zur laufzeit noch zur laufzeit kann ich der Abfrage parameter übergeben

    Zur laufzeit habe ich das so gelöst
    <pre>
    with ADODataSet1 do
    begin
    close;
    Parameters[0].Value := '1.1.1995';
    Parameters[1].Value := '1.1.2001';
    open;
    end;
    </pre>

    Bitte um HIlfe

    BINE

  • #2
    Hallo,

    das folgende Beispiel demonstriert das Prinzip, wobei der Zugriff über TADODataSet mit CommandType = <b>cmdStoredProc</b> erfolgt. Das Beispiel verwendet die Abfrage <i>'Personalumsätze nach Land'</i> aus der Microsoft-Beispieldatenbank NORDWIND.MDB. Da eine ACCESS-Abfrage keine richtige Stored Procedure ist, müssen die Parameter mit dem richtigen Namen und Datentyp von Hand im Objektinspektor (Eigenschaft <b>Parameters</b>) angelegt werden:

    a) PAS-Datei:
    <pre>
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

    type
    TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    ADODataSet1: TADODataSet;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    private
    { Private-Deklarationen }
    public
    { Public-Deklarationen }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.DFM}

    end.
    </pre>
    b) DFM-Datei:
    <pre>
    object Form1: TForm1
    Left = 192
    Top = 107
    Width = 696
    Height = 480
    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 DBGrid1: TDBGrid
    Left = 24
    Top = 56
    Width = 657
    Height = 120
    DataSource = DataSource1
    TabOrder = 0
    TitleFont.Charset = DEFAULT_CHARSET
    TitleFont.Color = clWindowText
    TitleFont.Height = -11
    TitleFont.Name = 'MS Sans Serif'
    TitleFont.Style = []
    end
    object ADOConnection1: TADOConnection
    Connected = True
    ConnectionString =
    'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Pr' +
    'ogramme\Microsoft Office\Office\Samples\Nordwind.mdb;Mode=Share ' +
    'Deny None;Extended Properties="";Jet OLEDB:System database="";Je' +
    't OLEDB:Registry Path="";Jet OLEDBatabase Password="";Jet OLED' +
    'B:Engine Type=5;Jet OLEDBatabase Locking Mode=1;Jet OLEDB:Glob' +
    'al Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet O' +
    'LEDB:New Database Password="";Jet OLEDB:Create System Database=F' +
    'alse;Jet OLEDB:Encrypt Database=False;Jet OLEDBon'#39't Copy Local' +
    'e on Compact=False;Jet OLEDB:Compact Without Replica Repair=Fals' +
    'e;Jet OLEDB:SFP=False'
    Mode = cmShareDenyNone
    Provider = 'Microsoft.Jet.OLEDB.4.0'
    Left = 24
    Top = 16
    end
    object ADODataSet1: TADODataSet
    Active = True
    AutoCalcFields = False
    Connection = ADOConnection1
    CursorType = ctStatic
    CommandText = 'Personalumsätze nach Land'
    CommandType = cmdStoredProc
    Parameters = <
    item
    Name = 'Anfangsdatum'
    DataType = ftDateTime
    Value = 35431d
    end
    item
    Name = 'Enddatum'
    DataType = ftDateTime
    Value = 36892d
    end>
    Left = 64
    Top = 16
    end
    object DataSource1: TDataSource
    DataSet = ADODataSet1
    Left = 96
    Top = 16
    end
    end
    </pre>
    Wenn die visuelle Entwicklung über den Objektinspektor erfolgreich war, überschreibt das Programm zur Laufzeit die Parameterwerte:
    <pre>
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    with ADODataSet1 do
    begin
    Parameters[0].Value := '1.1.1995';
    Parameters[1].Value := '1.1.2001';
    Active := True;
    end;
    end;
    </pre>
    &#10

    Comment


    • #3
      ich werde das mal testen :O) Danke für deine Antwort

      BINE :O

      Comment

      Working...
      X