Delphi-PRAXiS
Seite 1 von 7  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Abfrage aus 2 Tabellen in Access funktioniert nicht (https://www.delphipraxis.net/62041-abfrage-aus-2-tabellen-access-funktioniert-nicht.html)

StoRmtec 30. Jan 2006 10:03

Datenbank: Access • Zugriff über: ADO

Abfrage aus 2 Tabellen in Access funktioniert nicht
 
Hallo Leute

Hätte eine Hilfe gebraucht.

Und zwar habe ich eine Datenbank mit 2 Tabellen.

Druckerwartung | Druckerverbrauch

jetzt möchte ich eine Abfrage machen das er mir die ganzen Kosten zusammenzählt, das funktioniert auch aber wenn ich jetzt machen möchte das er mir nur einen gewissen Datumsbereich ermitteln soll dann bekomme ich eine Fehlermeldung. Weiß auch schon warum. Und zwar wenn zB. bei Druckerwartung in den Zeitraum kein Datum eingetragen ist dann bekomme ich die Fehlermeldung.

Das ist mein Code:
Delphi-Quellcode:
procedure TForm2.gesamtbuttonClick(Sender: TObject);
var gesamtall1, kostenverbrauchall1, kostenwartungall1 : extended;
begin
wartungall.Close;
wartungall.sql.clear;
wartungall.SQL.text := 'select sum(tonerkostengesamt) as Gesamtsumme from verbrauch where datumv between :von and :bis';
wartungall.Parameters.ParamByName('von').Value := StrToDate(edit1.Text);
wartungall.Parameters.ParamByName('bis').Value := StrToDate(edit2.Text);
wartungall.open;
gesverbrauchall.text := wartungall.FieldByName('Gesamtsumme').Value;
verbrauchall.Close;
verbrauchall.sql.clear;
verbrauchall.SQL.text := 'select sum(kosten) as Gesamtkosten from wartung where datum between :von and :bis';
verbrauchall.Parameters.ParamByName('von').Value := StrToDate(edit1.Text);
verbrauchall.Parameters.ParamByName('bis').Value := StrToDate(edit2.Text);
verbrauchall.open;
geswartungall.Text := verbrauchall.FieldByName('Gesamtkosten').Value;
kostenwartungall1 := strtofloat(geswartungall.Text);
kostenverbrauchall1 := strtofloat(gesverbrauchall.Text);
gesamtall1 := kostenwartungall1 + kostenverbrauchall1;
gesall.Text := floattostr(gesamtall1);
end;
Wie kann ich das machen wenn da kein Datum eingetragen ist das er mir trotzdem den anderen Wert ausgibt.

MFG
StoRmtec

marabu 30. Jan 2006 10:06

Re: Abfrage aus 2 Tabellen in Access funktioniert nicht
 
Hi,

du könntest die Bedingung erweitern:

SQL-Code:
... where datumv is not null and datumv between :von and :bis ...
Grüße vom marabu

StoRmtec 30. Jan 2006 10:12

Re: Abfrage aus 2 Tabellen in Access funktioniert nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke für die Antwort
aber bekomme trotzdem immer diese Fehlermeldung siehe Anhang.

mfg
StoRmtec

marabu 30. Jan 2006 10:29

Re: Abfrage aus 2 Tabellen in Access funktioniert nicht
 
Die Fehlermeldung hat nichts mit dem SQL-Statement zu tun. In welcher Code-Zeile tritt denn der Fehler auf? Ich sehe zwei Kandidaten:

Delphi-Quellcode:
procedure TForm2.gesamtbuttonClick(Sender: TObject);
  // ...
  // gesverbrauchall.text := wartungall.FieldByName('Gesamtsumme').Value;
  gesverbrauchall.text := Format('%.0n', [1.0 * wartungall.FieldByName('Gesamtsumme').AsInteger]);
  // ...
  // geswartungall.Text := verbrauchall.FieldByName('Gesamtkosten').Value;
  geswartungall.Text := Format('%.2m', [verbrauchall.FieldByName('Gesamtkosten').AsFloat]);
  //...
end;
marabu

mkinzler 30. Jan 2006 10:29

Re: Abfrage aus 2 Tabellen in Access funktioniert nicht
 
Ist der Datumswert leer (NULL) dann schlägt die Typkonvertierung natürlich fehl -> Vorher auf NULL abprüfen.

StoRmtec 30. Jan 2006 10:40

Re: Abfrage aus 2 Tabellen in Access funktioniert nicht
 
@mkinzler

Ja da steht nicht drinnen. Das Datumsfeld ist leer.
bei der Wartungstabelle bei der andere ist was drinnen.

Wie kann ich den so was abfangen.
Hast du eine Hilfe für mich.

danke
mfg
StoRmtec

mkinzler 30. Jan 2006 10:45

Re: Abfrage aus 2 Tabellen in Access funktioniert nicht
 
Beispiel für eine Konvertierung

Delphi-Quellcode:
try
 geswartungall.Text := verbrauchall.FieldByName('Gesamtkosten').Value;
except
 geswartungall.Text :='';
end;

StoRmtec 30. Jan 2006 10:51

Re: Abfrage aus 2 Tabellen in Access funktioniert nicht
 
bekomme aber trotzdem noch den Fehler wenn ich das einfüge.

Wie gesagt in der einen Tabelle ist kein Datum zu diesem Zeitpunkt eingetragen
und in der anderen schon.

mfg
StoRmtec

mkinzler 30. Jan 2006 10:58

Re: Abfrage aus 2 Tabellen in Access funktioniert nicht
 
Zitat:

Zitat von StoRmtec
bekomme aber trotzdem noch den Fehler wenn ich das einfüge.

Hast du die anderen Konvertierungsoperationen genauso durch Exceptionhandler gesichert?
Delphi-Quellcode:
if Trim(edit1.Text) <> '' then
    wartungall.Parameters.ParamByName('von').Value := StrToDate(edit1.Text)
else
    wartungall.Parameters.ParamByName('von').Value := NULL;
Selbiges für 'bis' Parameter
Zitat:

Wie gesagt in der einen Tabelle ist kein Datum zu diesem Zeitpunkt eingetragen
und in der anderen schon.
hat du die Erweiterung von marabu eingebaut?

StoRmtec 30. Jan 2006 11:37

Re: Abfrage aus 2 Tabellen in Access funktioniert nicht
 
nein die erweiterung von marabu habe ich nicht eingebaut.

Und mit deinem komme ich auch nicht weiter bekomme trotzdem immer wieder die Fehlermeldung.

MFG
StoRmtec


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 Uhr.
Seite 1 von 7  1 23     Letzte »    

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