![]() |
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. |
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: |
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. |
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: |
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. |
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 |
Re: nullen ersetzen in sql abfrage
Zitat:
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: |
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 |
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 ? |
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 07:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz