Announcement

Collapse
No announcement yet.

"WHERE"-Anweisung auf ADO_OLEDB_Jet4 Access-Datenbank

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

  • "WHERE"-Anweisung auf ADO_OLEDB_Jet4 Access-Datenbank

    Hallo, ich habe folgendes Problem:<BR>
    Ich erhalte folgende Fehlermeldung, wenn ich über eine TADOQuery Komponente auf eine MS-ACCESS Datei zugreife:<BR>
    <I>EOleException:atentypen in Kriterienausdruck unverträglich</I><BR>
    SQL-Anweisung:<BR>
    <PRE>
    SELECT *
    FROM TabellenName
    WHERE TIME_STAMP_ERROR < '01.04.01 00:00:00';
    </PRE><P>
    Was mache ich falsch?
    Ich benutze BCB5 und ADO-Express.(incl. Updates)<BR>
    Zugriff über ADO_OLEDB_Jet4.<P>
    Danke für jeden Tip!

  • #2
    Hallo Mark,

    ich gehe mal davon aus, das TIME_STAMP_ERROR ein Datetime-Feld ist. Wenn du nun in der Abfrage einen String für das Datum verwenden willst, dann würde das bei Acces so aussehen: WHERE (WHERE TIME_STAMP_ERROR < {ts '2001-01-04 00:00:00'})

    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,

      normalerweise baut man die SQL-Anweisungen in diesem Fall nicht als Zeichenkette zusammen, sondern verwendet einen <b>Parameter</b>. Im Objektinspektor legt man dann den Datentyp dieses Parameters fest, so dass sich bei der späteren Wert-Übergabe Delphi um den Rest kümmert

      Comment


      • #4
        Hallo Falk!<p>
        Danke!<br>
        Deine Vermutung mit dem Datetime-Feld ist richtig. Die SQL-Abfrage funktioniert jetzt.<br>
        Das Problem ist deshalb aufgetreten, weil ich abwechselnd auf einen MS_SQLSERVER_2000 und dann auf die lokale Access Datei zugreifen muß. Der SQLSERVER hat so immer funktioniert

        Comment


        • #5
          Hallo Andreas!<P>
          Ich bin erst kürzlich in meiner Anwendung von der BDE auf ADO umgestiegen.(also ADO-Neuling)<BR>
          Ich habe vorher auch mit Parameter gearbeitet, habe aber bei Einsatz der DateTime Felder in der "WHERE"-Anweisung dann diese Fehlermeldung erhalten(Zugriff auf SQL-Server2000):<P>
          <I>EOleException::[Microsoft][ODBC SQL Server Driver]Optionales Feature wurde nicht implementiert</I><P>
          Da habe ich mir natürlich gedacht, dass können wir auch über SQL-Text erledigen. Leider ziehen solche Eingebungen dann doch weitere Probleme nach sich.<BR>
          Wenn ich allerdings nicht über ODBC zugreife und den "OLE DB Provider for SQL Server" benutze, habe ich dieses Problem nicht. Ist mir aber leider erst gerade eben aufgefallen, dass ich ODBC benutze

          Comment


          • #6
            Hallo,

            Parameter verwenden und damit Datetime direkt übergeben ist ein schöner Luxus. Ich hab mit Parametern die Datumswerte darstellen unter Oracle nur Erfolg wenn ich sie vom Typ String deklariere und dann in der Abfrage vom Server wieder in ein Datum umwandeln lasse, also nach dem Motto: ... where xyDatum = To_Date(:w_Datum, 'DD.MM.YYYY') ... Glücklicherweise bietet Oracle die Funktion To_Date als SQL-Funktion an. Eine Abfrage mit einem Parameter als Datetime führt zu völlig zusammenhanglosen Fehlermeldungen. Siehe dazu auch http://212.20.164.99\webx?50@@.ee86b02/7

            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


            • #7
              Hallo,

              wenn man den ODBC-Treiber über MSDASQL für den Zugriff auf den Microsoft SQL Server verwendet, darf man nur den Cursortype ctDynamic und Tabellen mit Primärschlüsseln verwenden, wobei die Schlüsselspalte in <b>jeder</b> SELECT-Abfrage aufgeführt sein muss. Microsoft hat einige drastische Beispiele (inkl. ungewollter Datenverlust) in ihrer Knowlegde Base, die die Folgen des Missachtens dieser Regeln drastisch schildern.

              Fazit: Auf MSDASQL verzichten und statt dessen <b>immer</b> den nativen OLE DB-Provider verwenden

              Comment

              Working...
              X