Fehler in SQL-String

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von markusbreitenstein.

    Fehler in SQL-String

    Guten Morgen

    Ich bekomme folgenden SQL nicht zum laufen :

    SQL-Abfrage

    1. SELECT fertig_k.auf_code, CAST((SUBSTR(fertig_k.auf_code, 3, 4) + SUBSTR(fertig_k.auf_code, 8, 4)) as decimal ) AS FE_CODE, fertig_k.art_code, fertig_k.status, ARTIKEL.name1
    2. FROM fertig_k, ARTIKEL
    3. WHERE fertig_k.art_code = ARTIKEL.code AND (fertig_k.status < 4)
    4. ORDER BY fertig_k.art_code

    wobei im feld auf_code eine zahl im format wie folgt gespeichert ist : A-1234-5678 und ich die Zahlen daraus brauche um sie Verknüpfen zu können.
    Ich bekomme immer folgende Fehlermeldung wie in der angehängten Datei

    Stehe grad richtig auf dem Schlauch......
    Bilder
    • fehler_sql.PNG

      24,37 kB, 513×451, 116 mal angesehen
    Am lernen...
    nutz den Abfragegenerator, wenn du das im Visual Studio machst

    folgendes löst man völlig anders:

    SQL-Abfrage

    1. WHERE fertig_k.art_code = ARTIKEL.code​

    nutze dafür einen Join, wenn du das per Editor zusammenklickst ist relativ einfach sichtbar wie sowas funktioniert.

    ​weiterhin ist A-1234-5678 ​natürlich keine Zahl, sondern in meinen Augen ein String in dem auch Zahlen sind

    KBT schrieb:

    nutz den Abfragegenerator, wenn du das im Visual Studio machst

    folgendes löst man völlig anders:

    SQL-Abfrage

    1. WHERE fertig_k.art_code = ARTIKEL.code​

    nutze dafür einen Join, wenn du das per Editor zusammenklickst ist relativ einfach sichtbar wie sowas funktioniert.

    ​weiterhin ist A-1234-5678 ​natürlich keine Zahl, sondern in meinen Augen ein String in dem auch Zahlen sind

    Das ist ja genau das Problem. Wenn ich es as String weitergebe, bekomme ich 12345678, was ja korrekt ist. um es aber mit der übergeordneten Tabelle zu Verknüpfen, brauche ich das ganze als zahl.. und beim cast mault er rum....
    Am lernen...
    @markusbreitenstein: So wie mich die Fehlermeldung anschaut, versteht die SQL Version, die du verwendest das "AS" nicht. Schreib uns doch bitte, wie @petaod gesagt hat, welche Version und was für ein SQL du verwendest (MySQL, MSSQL, TSQL, ...)

    Edit: Hab einfach mal nach CAST und SQL gegoogelt: docs.microsoft.com/de-de/sql/t…-and-convert-transact-sql => Ist also T-SQL
    @TE: Versuch doch mal wie im Link angegeben (ungefähr auf 1/3 der Seite) mal im Ziel-Cast-Format decimal anzugeben wie viele Stellen das Ergebnis haben soll.

    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    Hey, die Frage ist welche Datenbank du verwendest.

    Das mit dem Join das @KBT erwähnt hat ist auch so wie du es hast machbar und hat afaik keine Nachteile gegenüber der JOIN schreibweise, außer das es vielleicht etwas schlechter lesbar ist.

    LG
    Das ist meine Signatur und sie wird wunderbar sein!

    petaod schrieb:

    Welche DB verwendest du denn?

    In den meisten SQL-Dialekten heisst die Funktion SUBSTRING.


    Ich verwende dbf3 Dateien, unten der ConnectionString aus dem VS17

    VB.NET-Quellcode

    1. <connectionStrings>
    2. <add name="LagerKWAG.My.MySettings.ConnectionString" connectionString="Provider=VFPOLEDB.1;Data Source=C:\BOSS\;collate=machine;CODEPAGE=850;"
    3. providerName="System.Data.OleDb" />
    4. </connectionStrings>
    Am lernen...

    Mono schrieb:

    Meine leider auch. Könnte mir vorstellen das es da kein Decimal gibt.

    VS kritisiert ja das

    VB.NET-Quellcode

    1. ​as decimal
    . lustigerweise kann ich im Abfragegenerator die Vorschau starten und bekomme Werte, die nicht so sind wie sie sein sollen. lasse ich das

    VB.NET-Quellcode

    1. cast as decimal
    aus, sind die zahlen korrekt als Char dargestellt. ersetze ich

    VB.NET-Quellcode

    1. as decimal
    durch

    VB.NET-Quellcode

    1. as integer
    mault er wieder rum, aber Vorschau klappt wieder und zahlen sind auch wieder falsch.....
    Am lernen...