Frage zu SQL mit Historie

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

albune
Beiträge: 4
Registriert: Do, 31.12.2009 13:29

Frage zu SQL mit Historie

Beitrag von albune »

Folgendes "Problem" (trotz Handbuch und Google und suche hier...).

Ich habe die Tabelle A mit einer Postleitzahl. In Tabelle B ist die Postleitzahl nur eindeutig über einen Datumsbereich.

Wenn ich die Abfrage mache

SELECT "Stempel", "StempelOrt" FROM "Stempel" WHERE :std BETWEEN "StempelVon" AND "StempelBis"

:std ist die Übergabevariable und sollte den die Stempel-Nummer enthalten. Aber es funktioniert nicht - es kommt ein Fehler. Wenn ich aber statt StempelVon und StempelBis absolute Werte einsetze (z.B. '2007-12-01' und '9999-12-31' - dann klappts, Ich vermute ein Thema fürs Datum-Problem?

Was mache ich falsch... in beiden Tabellen sind die Datumsfelder als "Date" definiert und auf dem Formular ist die Eingabe im Format 'TT.MM.JJJJ
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Frage zu SQL mit Historie

Beitrag von Barlee »

Hallo albune,

Du prüfst durch Deine Abfrage ab, ob eine Stempelnummer zwischen zwei Datumsangaben liegt. Die Stempelnummer ist sicherlich keine Datumsangabe, oder?
Insofern stellt sich mir die Frage, ob hier nicht ein Logikfehler in Deiner Abfrage vorliegt.

Sinnvoll wäre nur abzuprüfen, ob ein gegebenes Datum in einem definierten Datumszeitraum liegt.

Evtl. kannst Du hier nochmal näher auf Deine Wünsche eingehen. Dazu wäre auch der verwendete Datentyp für die Stempelnummer wichtig.

Gruß Barlee
albune
Beiträge: 4
Registriert: Do, 31.12.2009 13:29

Re: Frage zu SQL mit Historie

Beitrag von albune »

ok - mal in Worten... :-))

ich suche zu einer gegeben Postleitzahl aus der Tabelle A den Ort aus Tabelle B (mit der PLZ aus A). Dabei können aber zu einer PLZ in Tabelle B mehrere Einträge existieren, de sich aber zeitlich nicht überschneiden.

Die Abfrage war natürlich Quark in der Form und sollte eigentlich so aussehen

SELECT "StempelOrt" FROM "Stempel" WHERE :stempel = "Stempel" and :std BETWEEN "StempelVon" AND "StempelBis" (std ist ein Datumsfeld vom format DATE und stempel ist ein textfeld)

wenn ich es so kodiere, funktionierts:

SELECT "StempelOrt" FROM "Stempel" WHERE :stempel = "Stempel" and :std BETWEEN '2001-12-01' AND '2100-12-31'.

wenn das Pop-Up kommt, gebe ich für :std das Datum ein in der Form 'JJJJ-MM-TT" und als :stempel die Postleitzahl und voila - tut...
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Frage zu SQL mit Historie

Beitrag von Barlee »

mmh,

da Du von zwei Tabellen schreibst, jedoch nur eine abfragst, liegt der Fehler vermutlich hier.
StempelVon und StempelBis gehören zur zweiten Tabelle, die Du im SELECT nicht angibst.

Baue die Abfrage in folgender Form auf. Dann sollte es funktionieren:

Code: Alles auswählen

SELECT * FROM 
Stempel_A A, 
Stempel_B B 
WHERE A.Stempel = :stempel AND :std BETWEEN B.StempelVon AND B.StempelBis
albune
Beiträge: 4
Registriert: Do, 31.12.2009 13:29

Re: Frage zu SQL mit Historie

Beitrag von albune »

nun ja - als Cobol bzw. SAP-Programmierer ist openoffice schon .... :-))

also ich bin jetzt ein Stück weiter... ich habe das Feld "PLZ-Ort" jetzt als subformular eingebunden und dahinter ein Makro gestellt. Das selektiert auch schön den richtigen Wert in der MsgBox - aber ich kann dem Subformular nicht "beibringen", das es den Wert des FELDES (!) mit den Werten aus der MSGBOX "überschreiben soll.

Beispiel: beim Laden des Formulars wird die PLZ 4711 zum 15.12.2009 gelesen. Nun habe ich an "beim Laden" des Subformulars das o.a. Makro angehangen - aber man sieht sofort VOR Makro steht bereits der 1. Wertt der Tabelle PLZORT - in der MsgBox aber der korrekte aus dem Select.

Blöde Anfängerfrage - wie kriege ich jetzt den Wert auf das Formular (besser subformular)
albune
Beiträge: 4
Registriert: Do, 31.12.2009 13:29

Re: Frage zu SQL mit Historie

Beitrag von albune »

vergesst es... ich habs rausgefunden :-)
Antworten