Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi nullen ersetzen in sql abfrage (https://www.delphipraxis.net/37771-nullen-ersetzen-sql-abfrage.html)

stonimahoni 10. Jan 2005 10:59


nullen ersetzen in sql abfrage
 
hi leute

ich hab mal wieder ein kleines prob und bin heut nicht so auf der höhe daher folgende frage :

ich habe mir einen union select gebastelt und da ist ja voraussetzung, dass in jedem select die gleiche anzahl der felder vorkommt. daher musste ich mir auch "platzhalter" anlegen.
die platzhalter geben mir eine "0" aus. die eigentlichen felder sind jedoch datumsfelder.
jetzt das problem : wenn ich den select durchführe und die daten in mein db grid einfliessen und anzeigen lassen möchte kommt ein fehler und zwar , dass er ein datum erwartet aber einen widestring findet . ich denk mal das hängt mit den nullen zusammen.
wie kann ich das umgehen oder abändern, dass statt den nullen einfach leere felder an den stellen dann jeweils angezeigt werden ?!

thx 4 help

mfg

stoni

rochus 10. Jan 2005 11:07

Re: nullen ersetzen in sql abfrage
 
probier mal die methoden "OnGetText". Weiß nicht genau, ob dir das hilft, könnte aber sein.

mfg
rochus

DiscMix 10. Jan 2005 11:10

Re: nullen ersetzen in sql abfrage
 
kannst du mal bitte deine abfrage posten, evtl. gibts dann mehr tips.

Hasse 10. Jan 2005 11:10

Re: nullen ersetzen in sql abfrage
 
Moin,

wie wärs mit einem anderen Platzhalter z.B '' as Spalte. Ich nutze das teilweise in Access.

jensw_2000 10. Jan 2005 11:23

Re: nullen ersetzen in sql abfrage
 
Die SQL Abfrage und das verwendete Datenbanksystem (MSSQL, Access, MySQL...) wären echt hilfreich.
Da einige SQL Befehle nur auf bestimmten SQL Servern laufen und auf anderen nicht.


Ich denke mal das deine Anfrage etwa so aussieht..

SQL-Code:
SELECT ID,Name,Vorname, Email, Eintrittsdatum FROM Personal
UNION ALL
SELECT ID,Name,Vorname, Email, '0' as Eintrittsdatum FROM Adressen
Du solltest die virtuelle Spalte entweder als NULL as 'Eintrittsdatum' bzw.
als "richtigen Datumswert" as "Eintrittsdatum" erstellen.

Dein Grid sollte die Variante mit dem NULL akteptieren.

:hi:

stonimahoni 10. Jan 2005 12:03

Re: nullen ersetzen in sql abfrage
 
ok also hier mal der quellcode von der selectabfrage :
so habe ich es jetzt :

Delphi-Quellcode:
with ADODSMahnwesen do begin
        Active:= False;
        sqlstrmahn:= 'SELECT auftrag.Repnr, auftrag.Annahmedatum, auftrag.Kunden_nummer, auftrag.Ean, '
                   + 'auftrag.Artikelbezeichnung, auftrag.Ausgangsdatum, auftrag.Beschaedigung1, 0 AS auftrag.Rep_zurueck_datum, '
                   + 'auftrag.Kudienst_mahn1, auftrag.KZ_Status, 0 AS auftrag.Kudienst_mahn2, 0 AS auftrag.Kundeninfo1 '
                   + 'FROM stamm INNER JOIN auftrag ON stamm.Ark = auftrag.Ark '
                   + 'WHERE (((auftrag.Ausgangsdatum)<(Date()-10)) AND ((auftrag.Kudienst_mahn1) Is Null) '
                   + 'AND ((auftrag.KZ_Status)="Ware in Reparatur" Or (auftrag.KZ_Status)="Ware für Kostenvoranschlag an Kundendienst")) '
                   + 'UNION SELECT auftrag.Repnr, auftrag.Annahmedatum, auftrag.Kunden_nummer, auftrag.Ean, '
                   + 'auftrag.Artikelbezeichnung, auftrag.Ausgangsdatum, auftrag.Beschaedigung1, 0 AS auftrag.Rep_zurueck_datum, '
                   + 'auftrag.Kudienst_mahn1, auftrag.KZ_Status, auftrag.Kudienst_mahn2, 0 AS auftrag.Kundeninfo1 '
                   + 'FROM stamm INNER JOIN auftrag ON stamm.Ark = auftrag.Ark '
                   + 'WHERE (((auftrag.Kudienst_mahn1)<(Date()-10)) AND ((auftrag.KZ_Status)="Ware in Reparatur" '
                   + 'Or (auftrag.KZ_Status)="Ware für Kostenvoranschlag an Kundendienst") AND ((auftrag.Kudienst_mahn2) Is Null)) '
                   + 'UNION SELECT auftrag.Repnr, auftrag.Annahmedatum, auftrag.Kunden_nummer, auftrag.Ean, '
                   + 'auftrag.Artikelbezeichnung, 0 AS auftrag.Ausgangsdatum, auftrag.Beschaedigung1, auftrag.Rep_zurueck_datum, '
                   + '0 AS auftrag.Kudienst_mahn1, auftrag.KZ_Status, 0 AS auftrag.Kudienst_mahn2, auftrag.Kundeninfo1 '
                   + 'FROM stamm INNER JOIN auftrag ON stamm.Ark = auftrag.Ark '
                   + 'WHERE (((auftrag.Rep_zurueck_datum)<(Date()-10)) AND ((auftrag.KZ_Status)="Ware an Lager") AND ((auftrag.Kundeninfo1) Is Null));';
        CommandText := sqlstrmahn;
        Active:= True;
ich hoffe ihr könnt damit was anfangen

@ jensw_2000 : ist eine access db


so hatte ich es vorher :
Delphi-Quellcode:
       sqlstrmahn:= 'SELECT auftrag.Repnr, auftrag.Annahmedatum, auftrag.Kunden_nummer, auftrag.Ean, '
                   + 'auftrag.Artikelbezeichnung, auftrag.Ausgangsdatum, auftrag.Beschaedigung1, 0 AS Ausdr1, '
                   + 'auftrag.Kudienst_mahn1, auftrag.KZ_Status, 0 AS Ausdr2, 0 AS Ausdr3 '
                   + 'FROM stamm INNER JOIN auftrag ON stamm.Ark = auftrag.Ark '
                   + 'WHERE (((auftrag.Ausgangsdatum)<(Date()-10)) AND ((auftrag.Kudienst_mahn1) Is Null) '
                   + 'AND ((auftrag.KZ_Status)="Ware in Reparatur" Or (auftrag.KZ_Status)="Ware für Kostenvoranschlag an Kundendienst")) '
                   + 'UNION SELECT auftrag.Repnr, auftrag.Annahmedatum, auftrag.Kunden_nummer, auftrag.Ean, '
                   + 'auftrag.Artikelbezeichnung, auftrag.Ausgangsdatum, auftrag.Beschaedigung1, 0 AS Ausdr1, '
                   + 'auftrag.Kudienst_mahn1, auftrag.KZ_Status, auftrag.Kudienst_mahn2, 0 AS Ausdr2 '
                   + 'FROM stamm INNER JOIN auftrag ON stamm.Ark = auftrag.Ark '
                   + 'WHERE (((auftrag.Kudienst_mahn1)<(Date()-10)) AND ((auftrag.KZ_Status)="Ware in Reparatur" '
                   + 'Or (auftrag.KZ_Status)="Ware für Kostenvoranschlag an Kundendienst") AND ((auftrag.Kudienst_mahn2) Is Null)) '
                   + 'UNION SELECT auftrag.Repnr, auftrag.Annahmedatum, auftrag.Kunden_nummer, auftrag.Ean, '
                   + 'auftrag.Artikelbezeichnung, 0 AS Ausdr1, auftrag.Beschaedigung1, auftrag.Rep_zurueck_datum, '
                   + '0 AS Ausdr2, auftrag.KZ_Status, 0 AS Ausdr3, auftrag.Kundeninfo1 '
                   + 'FROM stamm INNER JOIN auftrag ON stamm.Ark = auftrag.Ark '
                   + 'WHERE (((auftrag.Rep_zurueck_datum)<(Date()-10)) AND ((auftrag.KZ_Status)="Ware an Lager") AND ((auftrag.Kundeninfo1) Is Null));';

Hasse 10. Jan 2005 12:11

Re: nullen ersetzen in sql abfrage
 
Dann sollte NULL as Ausdruck gehen

stonimahoni 10. Jan 2005 12:15

Re: nullen ersetzen in sql abfrage
 
leider nein :(

fehler zitat :
die selcet anweisung schliesst ein reserviertes wort oder einen argumentnamen ein, das/der falsch, mit falscher zeichensetzung oder überhaupt nicht eingegeben wurde.

jensw_2000 10. Jan 2005 12:25

Re: nullen ersetzen in sql abfrage
 
Code:
 0 AS auftrag.Ausgangsdatum
Das geht so nicht.
Ausgangsdatum ist in diesen fall eine "virtuelle" Spalte

Da musst du den Tabellenverweis weglassen.

Wenn Access ...
Code:
NULL AS Ausgangsdatum
... nicht akzeptiert dann versuche es mal bitte mit


Code:
 '' AS Ausgangsdatum

:hi:

jensw_2000 10. Jan 2005 12:27

Re: nullen ersetzen in sql abfrage
 
aus, Schluß ... :wall:


SQL-Code:
NULL AS 'Ausgangsdatum'

oder

'' AS 'Ausgangsdatum'
so muß das ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:26 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz