Wenn dies dein erster Besuch hier ist, lese bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich registrieren, bevor du Beiträge verfassen kannst. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
schade, hatte gehofft das thema wäre durch.
in chrome funktioniert alles. es soll aber vorallem im IE funktionieren, das tut es nicht.
hab folgendes gemacht:
es wird alle paar sekunden die uhrzeit geprüft. die bilder werden in eine DIV geladen. für die bilder ab 16 uhr hab ich eine zweite DIV mit der gleichen größe wie die erste.
vor 16 uhr setze ich per javascript den div style auf "display: none" und den anderen auf "display: block" und umgekehrt.
im IE werden allerdings beide divs gezeigt. per rechtsklick -> "element untersuchen" sehe ich, dass die divs keinen style haben. setze ich den div style selbst ins html, funktioniert alles.
also: warum kann ich beim IE den div-style nicht per javascript ändern, bei chrome schon?
So, jetzt brauche ich auch mal Hilfe, steh irgendwie auf dem Schlauch ... Hab eine Access-DB und möchte dort gerne eine Abfrage ausführen, jedoch komme ich nicht zu dem gewünschten Ergebnis.
Zu erst einmal der Aufbau mit Beziehungen:
Was möchte ich erreichen? Ich möchte für jedes Auto die gefahrenen Kilometer berechnen, also brauche ich beispielsweise den Kilometerstand von 2013 und 2014 und errechne daraus die Differenz.
Soweit, so gut. Wenn ich die Abfrage ausführe, bekomme ich folgendes Ergebnis:
Sieht gut aus, jedoch mit einem Haken: Wenn ein Auto keinen Eintrag in 2013 oder 2014 hat, wird es nicht angezeigt. Ich möchte es aber angezeigt bekommen, meinetwegen mit NULL. Damit könnte ich umgehen ... hat jemand ne Idee? Workaround ist aktuell, dass ich 0-Einträge in die Tabelle schreibe. Funktioniert, ist aber natürlich mit mehr Aufwand verbunden. Wenn ich ein neues Auto anlege, müssten dann ja automatisch die 0-Einträge alle gesetzt werden.
Hier der SQL-Code (ja, Access macht das nicht sonderlich sauber ;))
Spoiler:
SELECT KFZ.Fahrzeug, [Kilometerstand_1].[Kilometer]-[Kilometerstand].[Kilometer] AS [Gefahrene km]
FROM ((KFZ LEFT JOIN Kilometerstand ON KFZ.ID = Kilometerstand.KFZ_ID) LEFT JOIN Kilometerstand AS Kilometerstand_1 ON KFZ.ID = Kilometerstand_1.KFZ_ID) INNER JOIN Kraftstoff_Details ON KFZ.ID = Kraftstoff_Details.KFZ_ID
GROUP BY KFZ.Fahrzeug, [Kilometerstand_1].[Kilometer]-[Kilometerstand].[Kilometer], Kilometerstand.Jahr, Kilometerstand_1.Jahr, Kraftstoff_Details.Jahr
HAVING (((Kilometerstand.Jahr)=2013) AND ((Kilometerstand_1.Jahr)=2014) AND ((Kraftstoff_Details.Jahr)=2013));
Hab jetzt direkt auch keine Lösung, da ich es nicht nachstellen kann. Nur mal ein paar Ideen:
Kriegst du alles angezeigt, sobald du die HAVING-clause komplett entfernst?
Reicht es evtl. HAVING zu erweitern um ein OR (Kilometerstand.Jahr) is null
Ohne HAVING werden ebenfalls nur Einträge angezeigt, wo beide Jahre vorhanden sind.
Die Erweiterung von OR Kilometerstand.Jahr is NULL bringt mir lediglich einen neuen Eintrag, der gar keinen Eintrag in der Kilometerstand-Tabelle hat ;|
Zitat von pRopAn
Erstmal zum Datenbankdesign: Warum hast du zwei identische Tabellen mit Kilometerständen? Das solltest du unbedingt vermeiden.
Das sind 2 Instanzen der gleichen Tabelle. Sieht man im SQL-Statement Kilometerstand AS Kilometerstand_1
Ohne HAVING werden ebenfalls nur Einträge angezeigt, wo beide Jahre vorhanden sind.
Die Erweiterung von OR Kilometerstand.Jahr is NULL bringt mir lediglich einen neuen Eintrag, der gar keinen Eintrag in der Kilometerstand-Tabelle hat ;|
Zitat von pRopAn
Erstmal zum Datenbankdesign: Warum hast du zwei identische Tabellen mit Kilometerständen? Das solltest du unbedingt vermeiden.
Das sind 2 Instanzen der gleichen Tabelle. Sieht man im SQL-Statement Kilometerstand AS Kilometerstand_1
Achso, da ist die Abfrage symbolisiert und nicht das Schema. Okay, gut :)
Kannst du Excel als "Krücke" benutzen, oder soll die Abfrage direkt das gewünschte Ergebnis liefern? Dann wäre die Frage: wo ziehst du die Daten Jahr1 und Jahr2 raus, aus deren Kilometerstand die Differenz berechnet werden soll?
Das ganze wird später in einer VB.Net Anwendung benutzt. Also entweder wird von dort die Abfrage ausgeführt und mit Parametern befüllt oder das SQL Statement landet in der Anwendung.
Okay er bricht einfach ab, wenn die Subqueries nichts liefern. Mein Workaround (der ist nicht elegant oder effizient) baut auf diese Antworten auf: http://stackoverflow.com/questions/2884996/simple-check-for-select-query-empty-result
Prüfe vorher, ob jeweils die gewünschten Datensätze existieren:
Spoiler:
IF EXISTS (SELECT 1 FROM Kilometerstand WHERE Kilometerstand.Jahr = 2013) AND EXISTS (SELECT 1 FROM Kilometerstand WHERE Kilometerstand.Jahr = 2014)
BEGIN
[Deine eigentlich Abfrage]
END
Du müsstest warscheinlich sowieso prüfen, ob für das jeweilige Jahr genau einer oder kein Datensatz vorhanden ist.
Select
[...]
, (case
when [Kilometerstand_1].[Kilometer] is null or [Kilometerstand].[Kilometer] then NULL
else [Kilometerstand_1].[Kilometer]-[Kilometerstand].[Kilometer]
end) AS [Gefahrene km]
Kommentar