Fehler Conversion error from string "".

Forum für neue Firebird-Anwender.

Moderator: thorben.braun

Antworten
MiWi
Beiträge: 2
Registriert: Di 2. Okt 2018, 14:25

Di 2. Okt 2018, 15:21

Hallo zusammen,

wenn ich folgendene Befehle ausführe

Select b.adressnr, b.belegnr, b.gesamt,b.datumme ,CAST(k.KDPauschvon AS DATE), CAST(k.KDGenehm AS DATE)
from belegpos b, kunden k
where b.adressnr = k.kundennr
and belegtyp = "V"
and belegart = "LI"
and not (wgr like "test%" or wgr="sens")
and datumme>=CAST(k.KDPauschvon AS DATE)
and datumme<=CAST(k.KDGenehm AS DATE)
order by belegnr;

bekomme ich diese Fehlermeldung:

SQL-Fehler in Schritt 1:
TA_SQL.SelectQuery: Overflow occurred during data type conversion.Conversion error from string "".

Select b.adressnr, b.belegnr, b.gesamt,b.datumme ,CAST(k.KDPauschvon AS DATE), CAST(k.KDGenehm AS DATE)
from belegpos b, kunden k
where b.adressnr = k.kundennr
and belegtyp = "V"
and belegart = "LI"
and not (wgr like "test%" or wgr="sens")
and datumme>=CAST(k.KDPauschvon AS DATE)
and datumme<=CAST(k.KDGenehm AS DATE)
order by belegnr

Füge ich nach "where b.adressnr = k.kundennr" noch den Befehl "and kundennr="10212" ein, läuft das ganze ohne Fehler durch. Die Felder KDPauschvon bzw. KDGenehm haben das Format [VAR]CHAR10 bzw. [VAR]CHAR 15. CAST innerhalb von Select um die Spalten nach den Regel einens Datums sortieren zu können.

Dier SQL Abfrage erfolg innerhalb des Warenwirtschaftssystem GDI mit der Datenbank Firebird 2.5.1.26351 (64-Bit) .

Gruß MiWi
sroland
Beiträge: 4
Registriert: Fr 27. Jul 2018, 08:38

Mi 3. Okt 2018, 16:13

Hallo Miw,
mache einen
Select ohne Join auf:
Select k.KDPauschvon, k.KDGenehm, k.kundennr
from kunden k

und suche den oder die Datensätze mit dem nicht zu konvertierenden Eintrag.
Denke der Cast geht wegen eines oder mehreren bestimmten Datensätze schief.
lg Roland Siegel
s-plus GmbH
schreiner-plus.de
bfuerchau
Beiträge: 38
Registriert: Mo 7. Mai 2018, 18:09

Mi 3. Okt 2018, 23:24

Die Fehlermeldung ist ja eindeutig:
... from String ""

D.h., eines der beiden Castfelder ist leer (nicht NULL) und enthält kein Datum.
Also such mal die Zeilen, die kein Datum haben.

Durch die weitere Einschränkung bist du an den fehlerhaaften Daten nicht vorbeigekommen, daher kein Fehler.
MiWi
Beiträge: 2
Registriert: Di 2. Okt 2018, 14:25

Do 4. Okt 2018, 11:08

Danke für die Antworten,

Fehler erkannt, die Datums Felder sind tatsächlich nicht alle gefüllt, da nicht alle Kunden diese Angaben benötigen. Werde jetzt nach einem eindeutigen Wert im Kundenstamm suchen bzw. einen neuen Eintrag anlegen.

Gruß MiWi
bfuerchau
Beiträge: 38
Registriert: Mo 7. Mai 2018, 18:09

Fr 5. Okt 2018, 09:40

Einfacher wäre u.U.:

select ....
from
belegpos b
inner join kunden k

on b.adressnr = k.kundennr
and k.KDPauschvon > '' and k.KDGenehm > ''

where belegtyp = "V"
...

da die on-Klausel vor der Where-Klausel ausgewertet wird.
Antworten