Announcement

Collapse
No announcement yet.

Nach String in Query sortieren - cast?

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

  • Nach String in Query sortieren - cast?

    Hallo,

    ich habe in einer Access-mdb eine Tabelle, auf die ich mit einer Abfrage (ADO) zugreifen möchte. Die enthält Nummern, die aber leider als string gespeichert sind.

    Um danach sortieren zu können, müssten diese Nummern in Integer umgewandelt werden.

    Ich habe probiert:
    <pre>sql.add('select CAST(ImageNumber AS INTEGER) as z,SOPInstanceUID from [image] where seriesnumber = :suchID order by z');
    </pre>

    Gibt aber einen Fehler.

    Weiß jemand wie's geht?

    Gruß Felix

  • #2
    Kann niemand helfen? Wäre wichtig für mich.

    Gruß Feli

    Comment


    • #3
      Im 'Order By' solltest du nicht mit dem Aliasnamen arbeiten,
      entweder benutze die Spaltenposition (hier also 1) oder
      pack den Cast gleich komplett in den 'Order By'.

      Grüße
      Ralf Janse

      Comment


      • #4
        Danke, aber der Ausdruck "select CAST(ImageNumber AS INTEGER) from..." alleine gibt schon einen "unbekannten Fehler".

        Ist die Syntax falsch?

        Danke ... Feli

        Comment


        • #5
          Hallo Felix,<BR><BR>die Konvertierung mit <B>Cast</B> funktioniert nur beim SQL-Server, nicht in Access. Hier ist die richtige Funktion <B>CInt()</B>. Die richtige Anweisung sollte also lauten:<BR>
          <B>Select CInt(ImageNumber), SOPInstanceUID from [image] where seriesnumber = :suchID order by CInt(ImageNumber)</B>.<BR>Ich hoffe, das war's.<BR><BR>Ola

          Comment


          • #6
            Hallo Olaf,

            super! Genau so geht's.

            Wo ist das eigentlich dokumentiert? (Ich habe bisher nur kleinere Anwendungen mit ADO geschrieben, bei denen ich ohne tieferes Wissen über ADO ausgekommen bin.)

            Vielen Dank nochmal.

            Gruß: Feli

            Comment


            • #7
              Hallo Felix,<BR><BR>die Syntax der SQL-Anweisung hat nichts mit ADO zu tun, sondern bezieht sich auf das Datenbanksystem auf das du über die Connection zugreifst. Du kannst also im Fall von Access die benötigten Abfragen direkt unter Access erstellen (das geht ja sehr komfortabel), die SQL-Ansicht kopieren und dann in dein Delphi Programm (ADOQuery oder besser ADODataset) übernehmen. Die Dokumentation findest du also direkt in der Access-Hilfedatei.<BR>Damit ist also klar, dass das Austauschen der Datenbank (z.B. von Access zum SQL-Server) nicht ohne weiteres, also ohne Anpassung der SQL-Syntax, möglich ist. Es gibt eben doch nicht <B>das</B> Standard-SQL, wie es immer sugerriert wird. Dafür kann man aber die speziellen Vorzüge der spezifischen Datenbank voll ausnutzen!<BR><BR>Ola

              Comment


              • #8
                Hallo,

                &gt;Es gibt eben doch nicht das Standard-SQL, wie es immer sugerriert wird.

                hinter ACCESS verbirgt sich auch <b>keine</b> SQL-Datenbank, sondern die Microsoft JET Engine <b>simuliert</b> SQL. Erst ab dem ACCESS 2000-Dateiformat (JET Engine 4) unterstützt Microsoft offiziell Teile aus dem SQL92-Standard.

                Generell gilt der SQL-Standard aber nur für die SQL-Datenbanken, die einen Hinweis auf die Kompatibilität auf der Verkaufsverpackung haben :-

                Comment


                • #9
                  Vielen Dank an beide - war sehr hilfreich für mich!

                  Gruß - Feli

                  Comment

                  Working...
                  X