Announcement

Collapse
No announcement yet.

Parameterhandling SQL-Select geht (so) nicht ?

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

  • Parameterhandling SQL-Select geht (so) nicht ?

    folgender Code wirft Fehler "SQL-Anweisung enthält Fehler" ??
    <pre>
    vSQL := 'SELECT * FROM a_eingang1 WHERE ' +
    ' bereich = Bereich ' +
    ' AND catalog = Catalog';

    With ADOQryEingangAnz do
    begin
    Close;
    SQL.Clear;
    SQL.Add(vSQL);
    //*ParamByName('pBereich').AsString := g_sBereich;
    //*ParamByName('pCatalog').AsString := g_sCatalog;
    Parameters.ParamValues['pBereich'] := g_sBereich;
    Parameters.ParamValues['pCatalog'] := g_sCatalog;
    try
    Open;
    except
    on E: Exception do
    if not (E is ENoResultSet) then
    raise;
    end;
    End;

    folgender SQL-Code funktioniert, aber finde ich blöd :
    {
    vSQL := 'SELECT * FROM a_eingang1 WHERE ' +
    ' bereich = ' + QuotedStr(g_sBereich)+
    ' AND catalog = ' + QuotedStr(g_sCatalog);
    } und dann natürlich ohne Params sinngemäß weiter...

    </pre>

    was mache ich falsch ?

    MfG
    Wolf

  • #2
    vielleicht noch zu ergänzen :
    verwende Delphi 5 updt.1 mit mySQL per myOleDb von sw-soft
    die App. verwendet die TAdoQueryComponente, TDataSource und TDbGrid : muß ich stattdessen
    TADODataSet nehmen oder die Query per Code generieren und dann
    der TDataSource zuweisen oder wie oder was ?

    :-( ???????????????

    Wol

    Comment


    • #3
      Hallo,

      die ADO Express-Komponenten von Borland sind nur VCL-Wrapperkomponenten für die nativen ADO-Objekte von Microsoft. Dies bedeutet, dass man sich an die von ADO aufgestellten Spielregeln halten muss.

      Generell ist TADODataSet die bessere Wahl. Auch sollte die SELECT-Anweisung im Objektinspektor fest zugewiesen werden, damit Delphi beim Anklicken der Eigenschaft <b>Parameters</b> die von ADO erwartete Kollektion mit den einzelnen Parameter-Objektinstanzen für jeden Parameter in der SELECT-Anweisung füllen kann.

      Wenn das feste Zuweisen der SQL-Anweisung im Objektinspektor nicht in Frage kommt, muss man <br>
      a) entweder selbst <b>Refresh</b> aufrufen, oder <br>
      b) mit <b>CreateParameter</b> die Kollektion selbst füllen

      Comment


      • #4
        danke für Antwort, Herr Kosch !

        die von Ihnen und anderen Forumfans veröffentlichen Codeteile habe ich
        mittlerweile alle durchprobiert , kriege immer die informative Meldung
        "Anweisung enthält einen Fehler"

        Vermutung : die MyOleDB (sw-oft : von irgendeiner Uni..) hat ne Macke oder irgendwie ist deren Implementation nicht vollständig.
        Außerdem stürzt die Anwendung -innerhalb Delphi-IDE gestartet wg. Debug- regelmäßig ab; Ablauf nur als EXE möglich.. :-(

        Habe auch noch andere DLL's usw. probiert;oft haperts schon an der
        Doku, die nur einfachste Fälle schildert..

        Bin ziemlich in Zeitdruck !
        Derzeit stelle ich den INSERT-SQL als String zusammen;
        war ein bißchen Fleißarbeit, aber funzt 100%ig in meinem Sinne :-))

        Wie heißt eigentlich Ihr Buch zu diem Thema genau ?

        Mit besten Wünschen für die Festtage und den Jahreswechsel
        Wolf Fiet

        Comment


        • #5
          ich meine das Thema ADO + Delphi ! :-

          Comment


          • #6
            Hallo,

            der Erfolg mit ADO steht und fällt mit der Qualität und der Dokumentation des OLE DB Providers, für die SQL-Datenbank sollte zudem ein Tool verfügbar sein, dass alle zur Datenbank geschickten SQL-Anweisung mitprotokollieren kann. In meinem Buch "ADO mit Delphi" gehe ich im Schwerpunkt auf den Microsoft SQL Server 7/2000 ein, die ACCESS-Datenbanken werden aber auch nicht völlig ignoriert

            Comment


            • #7
              Wo bleibt das Buch!!! DAS brauche ich - und besser gestern als morgen.

              Hauen Sie in die Tasten :-

              Comment


              • #8
                Hallo,

                am letzten Tag des vergangenen Jahres habe ich die CDROM mit dem Manuskript und den Dateien für die CDROM zum Buch an der Verlag abgeschickt. Ich habe also keine Einfluss mehr darauf, wann das gedruckte Buch erhältlich ist

                Comment

                Working...
                X