AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi nullen ersetzen in sql abfrage
Thema durchsuchen
Ansicht
Themen-Optionen

nullen ersetzen in sql abfrage

Ein Thema von stonimahoni · begonnen am 10. Jan 2005 · letzter Beitrag vom 11. Jan 2005
Antwort Antwort
Seite 2 von 3     12 3      
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#11

Re: nullen ersetzen in sql abfrage

  Alt 10. Jan 2005, 13:34
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. 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.
Gruß
Hansa
  Mit Zitat antworten Zitat
stonimahoni

Registriert seit: 12. Okt 2004
146 Beiträge
 
Delphi 7 Professional
 
#12

Re: nullen ersetzen in sql abfrage

  Alt 10. Jan 2005, 14:00
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


Carsten
  Mit Zitat antworten Zitat
Hasse

Registriert seit: 24. Sep 2004
Ort: Bad Kösen
35 Beiträge
 
Delphi 7 Professional
 
#13

Re: nullen ersetzen in sql abfrage

  Alt 10. Jan 2005, 14:11
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.
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#14

Re: nullen ersetzen in sql abfrage

  Alt 10. Jan 2005, 14:20
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 ..


@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 ...


  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#15

Re: nullen ersetzen in sql abfrage

  Alt 10. Jan 2005, 14:44
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.
Andreas
  Mit Zitat antworten Zitat
stonimahoni

Registriert seit: 12. Okt 2004
146 Beiträge
 
Delphi 7 Professional
 
#16

Re: nullen ersetzen in sql abfrage

  Alt 10. Jan 2005, 15:07
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
Carsten
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#17

Re: nullen ersetzen in sql abfrage

  Alt 10. Jan 2005, 22:52
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 ...

  Mit Zitat antworten Zitat
stonimahoni

Registriert seit: 12. Okt 2004
146 Beiträge
 
Delphi 7 Professional
 
#18

Re: nullen ersetzen in sql abfrage

  Alt 11. Jan 2005, 08:08
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
Carsten
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#19

Re: nullen ersetzen in sql abfrage

  Alt 11. Jan 2005, 08:37
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 ?
  Mit Zitat antworten Zitat
stonimahoni

Registriert seit: 12. Okt 2004
146 Beiträge
 
Delphi 7 Professional
 
#20

Re: nullen ersetzen in sql abfrage

  Alt 11. Jan 2005, 08:41
nein hast recht
alle felder gelöscht - werd nun mal testen


danke soweit
Carsten
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:46 Uhr.
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