Announcement

Collapse
No announcement yet.

WHERE Klausel mit Datum unter ORACLE

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

  • WHERE Klausel mit Datum unter ORACLE

    Hallo,
    <p>ich habe ein Problem mit ORACLE 8, einer ADO_QUERY und einer WHERE-Klausel
    mit Datum (kommt aus zwei TDateTimePickern).
    <p>Folgender Code funktioniert:
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL.Clear;
    <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL.Add ('SELECT XPRODUCTNUMBER');
    <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL.Add ('FROM OQS_FEHLER');
    <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL.Add ('WHERE (PRDAT BETWEEN ' + QuotedStr(FormatDateTime
    ('dd.mm.yyyy',dtp_From.Date)) +
    <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    ' AND ' + QuotedStr(FormatDateTime ('dd.mm.yyyy',dtp_To.Date)) + ')');
    <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL.Add ('GROUP BY XPRODUCTNUMBER');
    <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL.Add ('ORDER BY XPRODUCTNUMBER');
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Prepared := True;
    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Open;
    <br>&nbsp;
    <p>Benutze ich dagegen eine Query mit Parametern (Datentyp = String) und
    setze die Parameter im Programm
    <p>&nbsp;&nbsp;&nbsp; Parameters.ParamByName('name1').Value := QuotedStr(FormatDateTime
    ('dd.mm.yyyy',dtp_From.Date))
    <br>&nbsp;&nbsp;&nbsp; Parameters.ParamByName('name2').Value := QuotedStr(FormatDateTime
    ('dd.mm.yyyy',dtp_To.Date))
    <p>so geht's nicht?
    <p>Warum?? Ist doch meiner Meinung nach das gleiche, oder etwa doch nicht?
    <p>Bin &uuml;ber jeden Hinweis dankbar, denn ich ben&ouml;tige noch andere
    Abfragen, die umfangreicher sind, aber eben auch &uuml;ber Datum eine Selektion
    durchf&uuml;hren. Will die aber nicht im Programm Zusammenbasteln.
    <p>Ich arbeite mit D5 Enterprise.
    <br>&nbsp;
    <p>Gru&szlig;
    <p>Thomas

  • #2
    Hallo Thomas,

    wenn Du die Version mit den Parametern verwendest, mußt Du bei der Übergabe an den Parameter (Parameters.ParamByName('name1').Value := ) das QuotedStr weglassen. Beim Zusammenbau der eigentlichen Abfrage wird automatisch dafür gesorgt das die Strings korrekt übergeben werden.

    Gruß Fal
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Hallo Falk,
      <p>Danke f&uuml;r die schnelle Antwort.
      <p>Jetzt klappt es. Habe aber jetzt noch etwas anderes gefunden, was ich
      nicht kappier.
      <p>Benutze ich die Abfrage mit Parameter, dann darf vor
      <p><b>while not Eof do begin</b>
      <br><b>&nbsp;&nbsp;&nbsp; //<i>Felder auslesen</i></b>
      <br><b>&nbsp;&nbsp;&nbsp; Next;</b>
      <br><b>end;</b>
      <p>kein First stehen (sonst w&auml;re es schon lange gegangen, denn das
      ohne QuotedStr hatte ich es bereits probiert). Baue ich die Abfrage im Programm
      zusammen, so macht das First nichts (soll heißen: keine Exception).
      <p>Als Fehlermeldung erh&auml;lt man <i>Die Position des Rowsets kann nicht
      neu gestartet werden.</i>
      <br>Bei anderen Datenbanken macht das nix. Was hat das zu bedeuten?
      <br>&nbsp;
      <p>Gru&szlig;
      <p>Thoma

      Comment

      Working...
      X