Delphi-PRAXiS
Seite 2 von 3     12 3      

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)

Hansa 10. Jan 2005 12:34

Re: nullen ersetzen in sql abfrage
 
Du verwendest ziemlich ungleiche Sachen, z.B. "0 AS Autrag..." oder "IS NULL". Warum das alles ? Dann noch was, was man nie machen sollte, z.B.: "auftrag.KZ_Status="Ware in Reparatur", also direkte String-Vergleiche in der DB. Noch nie gesehen so was. :shock: Bei einem Union muß alles die gleiche Struktur haben. Da jetzt einem Datum eine 0 vorzugaukeln o.ä., ich weiß nicht, ob das was wird.

Versuche besser eine einheitliche Linie da rein zu kriegen und die Statements so kurz wie möglich zu machen. Spalte notfalls alles in ein paar Stored Procedures auf und behandele dann erst die Rückgabewerte. Denn selbst, wenn das irgendwann auf diese Weise geht, dann weißt Du in kurzer Zeit nicht mehr warum überhaupt und es geht wieder von Vorne los.

stonimahoni 10. Jan 2005 13:00

Re: nullen ersetzen in sql abfrage
 
also ich habs ez soweit abgeändert : NULL AS Rep_zurueck_datum usw. aber :
fehlermeldung :
unterschiedliche typen für feld 'rep_zurueck_datum';
erwartet : datetime - gefunden : varbytes


:gruebel:

Hasse 10. Jan 2005 13:11

Re: nullen ersetzen in sql abfrage
 
Ich hab mir jetzt mal eine ADOQuery erstellt, die ich über ADOConnection1 an die Access 2000 -Datenbank gekoppelt habe. Dann eine Datasource-Komponente und ein DBGrid. Der Query habe folgenden SQL-String hinterlegt:

Select Artnr, '' as Ausgangsdatum from tzl;

activ auf true und es funzt. Mein DBGrid hat zwei Spalten ART und Ausgangsdatum, letztere ist leer.

jensw_2000 10. Jan 2005 13:20

Re: nullen ersetzen in sql abfrage
 
Die Meldung kommst bestimmt wenn du deinen Tabelle / Query im delphi öffnest oder ?

Dann nach mal einen Doppelklick auf der Tabelle / Query und ändere in den Eigenschaften der Felder mal den FieldType auf VARIANT.

Ich mache es immer so, das diese statischen Zuordnungen für die Spalten garnicht erst setze. Das hält einem eine Menge Ärger vom Hals wenn man mal die Struktur in der DB ändern muß ...

@Hansa
Man lernt echt immer wieder dazu. Dachte bis eben das es unter Access keine Stored Procedures gibt. Stimmt aber .. :stupid:


@stonimahoni
Ich muss jetzt erstmal eine Weile weg. Bin heute Abend wieder da falls noch Fragen sind.
Aber es finden sich bestimmt noch ein paar Leutchen, die Dir in der Zwischenzeit helfen können ...


:hi:

shmia 10. Jan 2005 13:44

Re: nullen ersetzen in sql abfrage
 
hier meine Hinweise an Dich:

1.) String Literale innerhalb von SQL werden nur in einfache Anführungszeichen (nicht in doppelte) gesetzt

2.) wenn von vornerein klar ist, dass es keine doppelten Datensätze gibt, dann sollte man unbedingt UNION ALL anstelle von UNION verwenden, da UNION ALL deutlich schneller arbeitet und weniger RAM benötigt.

3.) bei einer UNION [ALL] werden die Datentypen schon in der 1. SELECT Anweisung festgelegt.
Falls möglich stellt man die SELECT Abfrage an den Anfang, bei der alle Datumsfelder mit Werten gefüllt sind.

stonimahoni 10. Jan 2005 14:07

Re: nullen ersetzen in sql abfrage
 
hi shmia

danke für deine tipps aber das mit dem select bei dem alle ds gefüllt sind an erste stelle geht nicht wie du meinem code entnehmen kannst

es sind 3 unterschiedliche bedingungen ( abfragen ) die ich zu einer zusammengefastt habe (-n möchte ) weil sie an einem stück abgearbeitet weden muss ( also alle 3 abfragen müssen bei aufruf abgearbeitet werden )
und jede abfrage hat ihr gefüllten felder an anderer stelle und auch andere gefüllte felder


@ jensw_2000:
>Die Meldung kommst bestimmt wenn du deinen Tabelle / Query im delphi öffnest oder ?

>Dann nach mal einen Doppelklick auf der Tabelle / Query und ändere in den Eigenschaften der Felder >mal den FieldType auf VARIANT.

die meldung bekomm ich wen nich mein prog compilieren will

wo änder ich die eigenschaft in variant ??? finde nirgends was

jensw_2000 10. Jan 2005 21:52

Re: nullen ersetzen in sql abfrage
 
Zitat:

die meldung bekomm ich wen nich mein prog compilieren will
Also kommt die Fehlermeldung beim Starten des Projektes, sobald die Query auf active:=true gesetzt wird.

Mach mal einen Doppelklick auf deinem Query Objekt.
Dann öffnet sich ein kleines Fenster. Wenn das leer ist, irre ich mich und der Fehler liegt woanders.
Wenn du dort eine Liste mit Spaltennamen aus deiner Abfrage findest, dann schau dir mal das Feld 'rep_zurueck_datum' an. Wenn du es anklicklst, siehst du oben im Objektinspektor, das es als TDateTimeField deklariert ist.

Ich persönlich würde alle Einträge in der Feldliste löschen, weil das echt nur behindert wenn man mal Änderungen an der DB vornehmen muß.

Wenn du die Feldliste behalten möchtest, dann lösche einfach nur das Feld 'rep_zurueck_datum', klicke mit der rechten MT in die Feldliste und wähle ->neues Feld.
Bei Name schreibst du dann wieder rep_zurueck_datum rein und beim Typ wähst du VARIANT.

Das Selbe für alle weiteren Spalten die "virtuell" hinzugefügte NULLS enthalten ...

:hi:

stonimahoni 11. Jan 2005 07:08

Re: nullen ersetzen in sql abfrage
 
ok der alte fehler ist jetzt dann weg ABER :
jetzt schreibt er mir was von wegen :
rep_zurueck_datum feldgrösse erwartet 16 - gefunden 8

wie bring ich dem das nun bei ? im objektinspektor ist das feld mit einer grösse von 16 hinterlegt / angelegt

in der db ist es halt ein datumsfeld, was wahrscheinlich auch "nur" die 8 stellen hat.
*grummel*
wisst ihr da nun auch noch rat ??

danköö


mfg

stoni

jensw_2000 11. Jan 2005 07:37

Re: nullen ersetzen in sql abfrage
 
Lösche die Felder doch einfach. Am Besten gleich alle ... Was nützen die, ausser das man das Displayformat zur Designzeit einstellen kann ?
Willst du jedesmal mit Problemen kämpfen, wenn du was an deiner DB änderst ?

stonimahoni 11. Jan 2005 07:41

Re: nullen ersetzen in sql abfrage
 
nein hast recht
alle felder gelöscht - werd nun mal testen


danke soweit :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr.
Seite 2 von 3     12 3      

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