Frage zu SQL mit Historie

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Frage zu SQL mit Historie

Re: Frage zu SQL mit Historie

von albune » Sa, 02.01.2010 12:46

vergesst es... ich habs rausgefunden :-)

Re: Frage zu SQL mit Historie

von albune » Sa, 02.01.2010 12:06

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)

Re: Frage zu SQL mit Historie

von Barlee » Do, 31.12.2009 17:30

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

Re: Frage zu SQL mit Historie

von albune » Do, 31.12.2009 17:03

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

Re: Frage zu SQL mit Historie

von Barlee » Do, 31.12.2009 14:11

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

Frage zu SQL mit Historie

von albune » Do, 31.12.2009 13:36

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

Nach oben