🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Protokoll zu Anrufliste
-
- Beiträge: 131
- Registriert: Do 25. Apr 2013, 17:27
Protokoll zu Anrufliste
Hi!
Ich bin leider noch nicht so gut mit Base und Datenbanken allgemein.
Wie sollt ich das am Besten angehen:
Ich habe eine Liste an Unternehmen, die ich Kontaktieren möchte. Dazu hab ich eine Tabelle mit einer ID, Namen, Kontaktdaten, und einer Spalte "Abschlussgrund", welche ich über ein Formular mit "NE", "KI", "WB" und "TW" füttere (Optionsfelder im Formular).
Jetzt möchte ich in dem Formular ein Protokoll anzeigen, ob ich bei den letzten Kontaktversuchen niemanden erreicht "NE" habe, oder ob um eine erneute Kontaktaufnahme "WV" (= Wiedervorlage) erwünscht ist.
Ich gehe einmal davon aus, dass es dazu sinnvoll ist, eine zweite Tabelle "Protokoll" anzulegen mit folgendem Inhalt:
ID (Primärschlüssel)
Timestamp
ID_ORG (Die ID des Unternehmens aus der obigen Tabelle)
AG (ein Abschlussgrund wie oben)
Ich müsste dann im Formular, wenn der Datensatz des Unternehmens aufgerufen wird eine Tabelle mittels SQL-Abfrage mit der entsprechenden ID des Unternehmens füttern und dies gefiltert nach den zwei gewünschten Abschlussgründen.
Nur leider hab ich echt keine Ahnung, wie ich das am besten angehen soll...
Kann mir hier jemand helfen?
[edit]
Konkret hab ich das Hauptfeld so gelöst, dass ich mit einem Button das Formular schließe und wieder neu öffnen lasse, da sich bei jedem Aufruf die Datengrundlage der Abfrage geändert haben kann.
Das heißt konkret, ich frage bei jedem Aufruf der Datenbank eine Abfrage auf, welche mir aktuell als ersten Datensatz das nächste zu kontaktierende Unternehmen ausgibt.
Da der Aufruf zeitkritisch ist muss ich jedesmal die Abfrage neu machen, sobald ein Unternehmen erledigt ist. Es könnte ja z.B. ein Wiedervorlage-Termin mittlerweile eingetreten sein.
Soll ich hier ein Unterformular erstellen, welches mit die zweite Tabelle (Protokoll) zum jeweiligen Datensatz aufruft, oder muss ich den Kasten mit dem Protokoll über ein Makro, welches die konkreten Datensätze aus dem Protokoll rausfiltert, füttern, damit ich der SQL-Abfrage die richtige ID des Unternehmens als Filterkriterium übergeben kann???
[/edit]
lg scientific
PS: Die Tabelle mit den Unternehmen hab ich bereits. Es geht "nur" noch um das Protokoll...
Ich bin leider noch nicht so gut mit Base und Datenbanken allgemein.
Wie sollt ich das am Besten angehen:
Ich habe eine Liste an Unternehmen, die ich Kontaktieren möchte. Dazu hab ich eine Tabelle mit einer ID, Namen, Kontaktdaten, und einer Spalte "Abschlussgrund", welche ich über ein Formular mit "NE", "KI", "WB" und "TW" füttere (Optionsfelder im Formular).
Jetzt möchte ich in dem Formular ein Protokoll anzeigen, ob ich bei den letzten Kontaktversuchen niemanden erreicht "NE" habe, oder ob um eine erneute Kontaktaufnahme "WV" (= Wiedervorlage) erwünscht ist.
Ich gehe einmal davon aus, dass es dazu sinnvoll ist, eine zweite Tabelle "Protokoll" anzulegen mit folgendem Inhalt:
ID (Primärschlüssel)
Timestamp
ID_ORG (Die ID des Unternehmens aus der obigen Tabelle)
AG (ein Abschlussgrund wie oben)
Ich müsste dann im Formular, wenn der Datensatz des Unternehmens aufgerufen wird eine Tabelle mittels SQL-Abfrage mit der entsprechenden ID des Unternehmens füttern und dies gefiltert nach den zwei gewünschten Abschlussgründen.
Nur leider hab ich echt keine Ahnung, wie ich das am besten angehen soll...
Kann mir hier jemand helfen?
[edit]
Konkret hab ich das Hauptfeld so gelöst, dass ich mit einem Button das Formular schließe und wieder neu öffnen lasse, da sich bei jedem Aufruf die Datengrundlage der Abfrage geändert haben kann.
Das heißt konkret, ich frage bei jedem Aufruf der Datenbank eine Abfrage auf, welche mir aktuell als ersten Datensatz das nächste zu kontaktierende Unternehmen ausgibt.
Da der Aufruf zeitkritisch ist muss ich jedesmal die Abfrage neu machen, sobald ein Unternehmen erledigt ist. Es könnte ja z.B. ein Wiedervorlage-Termin mittlerweile eingetreten sein.
Soll ich hier ein Unterformular erstellen, welches mit die zweite Tabelle (Protokoll) zum jeweiligen Datensatz aufruft, oder muss ich den Kasten mit dem Protokoll über ein Makro, welches die konkreten Datensätze aus dem Protokoll rausfiltert, füttern, damit ich der SQL-Abfrage die richtige ID des Unternehmens als Filterkriterium übergeben kann???
[/edit]
lg scientific
PS: Die Tabelle mit den Unternehmen hab ich bereits. Es geht "nur" noch um das Protokoll...
Re: Protokoll zu Anrufliste
Hallo scientific,
ich würde ein Subformular bauen, indem die zweite Tabelle als Tabellenkontrollfeld steht. Im Hauptformular suchst Du die Firma aus, im Subformular hast Du alle Anrufe stehen.
Wie Du die Abschlussgründe filtern möchtest kannst Du ja über den Filter des Subformulars entscheiden. Vielleicht machst Du einfach zwei Subformulare, wobei beide je mit einem Filter für das erforderliche Feld in Deinem Sinne versehen sind?
Gruß
Robert
ich würde ein Subformular bauen, indem die zweite Tabelle als Tabellenkontrollfeld steht. Im Hauptformular suchst Du die Firma aus, im Subformular hast Du alle Anrufe stehen.
Wie Du die Abschlussgründe filtern möchtest kannst Du ja über den Filter des Subformulars entscheiden. Vielleicht machst Du einfach zwei Subformulare, wobei beide je mit einem Filter für das erforderliche Feld in Deinem Sinne versehen sind?
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
-
- Beiträge: 131
- Registriert: Do 25. Apr 2013, 17:27
Re: Protokoll zu Anrufliste
Ich hab mir jetzt ein neues Formular mit Subformular gebaut, da ich das nachträgliche Einfügen noch nicht beherrsche.
Mit einem Skript lese ich mir die Formularfelder des Hauptformulars aus und trage sie in die entsprechenden Felder des Subformulars ein. Das funktioniert auch schon wunderbar.
Das Subformular ist ein Tabellenkontrollfeld (Grid).
Jetzt ist nur noch die Frage bei mir offen, wie ich den neuen Datensatz im Subformular abspeichern kann, wenn ich das Hauptformular speichere... Ich vermute einmal, das wird irgendwas mit "commit" sein. Soviel hab ich schon herausgefunden. Aber wie ich das konkret anwende, ist mir noch ein Rätsel.
Das Makro für das Subformular schaut so aus:
die letzte Zeile mit dem "commit" gibt allerdings eine Fehlermeldung.
lg scientific
Mit einem Skript lese ich mir die Formularfelder des Hauptformulars aus und trage sie in die entsprechenden Felder des Subformulars ein. Das funktioniert auch schon wunderbar.
Das Subformular ist ein Tabellenkontrollfeld (Grid).
Jetzt ist nur noch die Frage bei mir offen, wie ich den neuen Datensatz im Subformular abspeichern kann, wenn ich das Hauptformular speichere... Ich vermute einmal, das wird irgendwas mit "commit" sein. Soviel hab ich schon herausgefunden. Aber wie ich das konkret anwende, ist mir noch ein Rätsel.
Das Makro für das Subformular schaut so aus:
Code: Alles auswählen
SUB PROTOKOLL
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oDatum AS OBJECT
DIM oAnm AS STRING
DIM oAbschl AS STRING
DIM oOrg AS OBJECT
DIM unoDateTime AS NEW com.sun.star.util.DateTime
Dim daJetzt AS DATE
daJetzt = Now()
WITH unoDateTime
.HundredthSeconds = 0
.Seconds = Second(daJetzt)
.Minutes = Minute(daJetzt)
.Hours = Hour(daJetzt)
.Day = Day(daJetzt)
.Month = Month(daJetzt)
.Year = Year(daJetzt)
END WITH
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("MainForm").getByName("SubForm")
oDatum=oForm.getByName("SubForm_Grid")
oAnm = oDrawpage.forms.getByName("MainForm").getByName("txtAnmerkung").getCurrentValue
oForm = oDrawpage.forms.getByName("MainForm")
if oForm.getByName("Optionsfeld 1").State = 1 Then
oAbschl = "NE"
ElseIf oForm.getByName("Optionsfeld 2").State = 1 Then
oAbschl = "KI"
ElseIf oForm.getByName("Optionsfeld 3").State = 1 Then
oAbschl = "SA"
ElseIf oForm.getByName("Optionsfeld 4").State = 1 Then
oAbschl = "TW"
ElseIf oForm.getByName("Optionsfeld 5").State = 1 Then
oAbschl = "WV"
End If
' oAbschl = oDrawpage.forms.getByName("MainForm").getByName("Optionsfeld1").getCurrentValue
' oOrg=oForm.getByName("ORG")
oDatum.getByIndex(3).BoundField.updateTimeStamp(unoDateTime)
oDatum.getByIndex(4).BoundField.updateString(oAnm)
oDatum.getByIndex(1).BoundField.updateString(oAbschl)
' oForm.getByName("SubForm").commit
END SUB
lg scientific
Re: Protokoll zu Anrufliste
Hi,
das müsste alles ohne Makro machbar sein.
Lade am Besten eine verfremdete Beispieldatei hoch.
Gruß R
das müsste alles ohne Makro machbar sein.
Lade am Besten eine verfremdete Beispieldatei hoch.
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO
-
- Beiträge: 131
- Registriert: Do 25. Apr 2013, 17:27
Re: Protokoll zu Anrufliste
Hier die Kundendatenbank anonymisiert:
Der Button "Protokoll" dient derzeit nur Testzwecken. Ich möchte mit einem einzigen Klick auf "Nächster Datensatz" auch das Protokoll ergänzt haben.
Also, wenn ich einen Datensatz aufrufe, soll die gesamte Kontakthistorie im Unterformular in der Tabelle unten erscheinen und mit "Nächster Datensatz" soll dieses Protokoll um den Aktuellen Abschlussgrund ergänzt werden.
Im Prinzipt - so denk ich mir - müsste es ja auch funktionieren, wenn ich die Felder aus der Tabelle "PROTOKOLL" in der Tabelle "Kunden" gar nicht führe, sondern dort der jüngste Datensatz für jeden Kunden ausgegeben wird - für den Export und in der Anzeige im Formular.
lg scientific
Der Button "Protokoll" dient derzeit nur Testzwecken. Ich möchte mit einem einzigen Klick auf "Nächster Datensatz" auch das Protokoll ergänzt haben.
Also, wenn ich einen Datensatz aufrufe, soll die gesamte Kontakthistorie im Unterformular in der Tabelle unten erscheinen und mit "Nächster Datensatz" soll dieses Protokoll um den Aktuellen Abschlussgrund ergänzt werden.
Im Prinzipt - so denk ich mir - müsste es ja auch funktionieren, wenn ich die Felder aus der Tabelle "PROTOKOLL" in der Tabelle "Kunden" gar nicht führe, sondern dort der jüngste Datensatz für jeden Kunden ausgegeben wird - für den Export und in der Anzeige im Formular.
lg scientific
- Dateianhänge
-
- Kundendatenbank.odb.gz
- (108.39 KiB) 220-mal heruntergeladen
Re: Protokoll zu Anrufliste
Hi,
es war nicht einfach dein Unterfangen nachzuvollziehen, hier die Makro-freie Version.
Gruß R
es war nicht einfach dein Unterfangen nachzuvollziehen, hier die Makro-freie Version.
Gruß R
- Dateianhänge
-
- KundendatenbankNeu.zip
- (16.03 KiB) 221-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO
-
- Beiträge: 131
- Registriert: Do 25. Apr 2013, 17:27
Re: Protokoll zu Anrufliste
WOW!!!
Habs erst kurz vorm Schlafengehen entdeckt und mir deine Lösung grad angeschaut.
Das hätt ich so echt niemals hinbekommen!
Einen kleinen Schönheitsfehler hab ich gerade entdeckt. Ich muss extra "neues Protokoll" klicken, dann werden die neuen Protokolldaten übernommen und mit "aktualisieren" wird dann der Datensatz nicht mehr ausgegeben (sofern noch nicht Zeit dazu ist).
Gibts noch irgendeine Möglichkeit die Funktion der beiden Buttons zu vereinen? Sprich die Aktion des Buttons "Aktualisieren" und "Neuer Datensatz" zusammenzusfassen? Denn ich will bei jedem Aufruf einen Protokolldatensatz dazu generieren.
Ich hab irgendwo schon mal gelesen, dass man solche Aktions-Zuweisungen zu Buttons auch kombinieren kann... wenn mich mein trüber Geist nicht täuscht.
Also der Vorgang läuft dann so ab:
Ich öffne die Kundendatenbank.
Es wird mir ein Kontakt vorgeschlagen.
Ich kontaktiere ihn, erreiche ihn nicht, der hat kein Interesse oder ich soll später noch einmal anrufen, weil in Besprechung o.ä.
Ich trag diesen Abschlussgrund mit den Optionsbuttons ein und ev. eine Wiedervorlagezeit.
Klicke auf "aktualisieren"
Der Abschlussgrund und die Anmerkung wird dem Protokoll hinzugefügt und die Abfrage erneut aufgerufen.
Es wird der nächste Kunde in der Liste als Datensatz 1 der Abfrage ausgegeben der
a) eine Wiedervorlage gesetzt hat, die jetzt oder früher ist ODER
b) der einen Nicht erreicht-Status hat und das letzte mal vor 120 Minuten kontaktiert wurde ODER
c) der noch nie kontaktiert wurde
In dieser Reihenfolge.
Ich hab im Protokoll-Tabellenkontrollfeld noch die Anmerkungen eingefügt, da die sehr wichtig sind. Jetzt muss ich nur noch schauen, wie ich die Sortierung absteigend hinbekomme, da ich zu oberst den jüngsten Protokolleintrag sehen will (damit ich nicht scrollen muss, wenn das Protokoll länger wird...)
Aber vielen Dank für deine Lösung. Da werd ich mal weitergooglen und -lesen um mit dieser Vorlage die SQL-Sprache besser zu verstehen.
lg scientific
Habs erst kurz vorm Schlafengehen entdeckt und mir deine Lösung grad angeschaut.
Das hätt ich so echt niemals hinbekommen!
Einen kleinen Schönheitsfehler hab ich gerade entdeckt. Ich muss extra "neues Protokoll" klicken, dann werden die neuen Protokolldaten übernommen und mit "aktualisieren" wird dann der Datensatz nicht mehr ausgegeben (sofern noch nicht Zeit dazu ist).
Gibts noch irgendeine Möglichkeit die Funktion der beiden Buttons zu vereinen? Sprich die Aktion des Buttons "Aktualisieren" und "Neuer Datensatz" zusammenzusfassen? Denn ich will bei jedem Aufruf einen Protokolldatensatz dazu generieren.
Ich hab irgendwo schon mal gelesen, dass man solche Aktions-Zuweisungen zu Buttons auch kombinieren kann... wenn mich mein trüber Geist nicht täuscht.

Also der Vorgang läuft dann so ab:
Ich öffne die Kundendatenbank.
Es wird mir ein Kontakt vorgeschlagen.
Ich kontaktiere ihn, erreiche ihn nicht, der hat kein Interesse oder ich soll später noch einmal anrufen, weil in Besprechung o.ä.
Ich trag diesen Abschlussgrund mit den Optionsbuttons ein und ev. eine Wiedervorlagezeit.
Klicke auf "aktualisieren"
Der Abschlussgrund und die Anmerkung wird dem Protokoll hinzugefügt und die Abfrage erneut aufgerufen.
Es wird der nächste Kunde in der Liste als Datensatz 1 der Abfrage ausgegeben der
a) eine Wiedervorlage gesetzt hat, die jetzt oder früher ist ODER
b) der einen Nicht erreicht-Status hat und das letzte mal vor 120 Minuten kontaktiert wurde ODER
c) der noch nie kontaktiert wurde
In dieser Reihenfolge.
Ich hab im Protokoll-Tabellenkontrollfeld noch die Anmerkungen eingefügt, da die sehr wichtig sind. Jetzt muss ich nur noch schauen, wie ich die Sortierung absteigend hinbekomme, da ich zu oberst den jüngsten Protokolleintrag sehen will (damit ich nicht scrollen muss, wenn das Protokoll länger wird...)
Aber vielen Dank für deine Lösung. Da werd ich mal weitergooglen und -lesen um mit dieser Vorlage die SQL-Sprache besser zu verstehen.
lg scientific
-
- Beiträge: 131
- Registriert: Do 25. Apr 2013, 17:27
Re: Protokoll zu Anrufliste
und noch was ist mir aufgefallen.
Hab jetzt mal neue Kunden hinzugefügt. Die haben natürlich noch keinen Protokolleintrag. Und die werden bei der Abfrage nicht aufgerufen.
Aber da ich den SQL-Befehl für die Abfrage noch nicht durchschaut habe, kann ich da noch nichts ändern.
[edit]
setze ich einen leeren Eintrag mit der ID (und dem automatischen Timestamp) in die Protokoll-Tabelle, dann wird der neue Datensatz aus "Kunden" auch in der Abfrage aufgeführt. Und ich komm nicht dahinter, wie der SQL-Befehl funktioniert...
[/edit]
lg scientific
Hab jetzt mal neue Kunden hinzugefügt. Die haben natürlich noch keinen Protokolleintrag. Und die werden bei der Abfrage nicht aufgerufen.
Aber da ich den SQL-Befehl für die Abfrage noch nicht durchschaut habe, kann ich da noch nichts ändern.
[edit]
setze ich einen leeren Eintrag mit der ID (und dem automatischen Timestamp) in die Protokoll-Tabelle, dann wird der neue Datensatz aus "Kunden" auch in der Abfrage aufgeführt. Und ich komm nicht dahinter, wie der SQL-Befehl funktioniert...
[/edit]
lg scientific
Re: Protokoll zu Anrufliste
Hi,
dann versuche ich es mal zu erklären.
Die gesamte Abfrage lautet:
Wir haben drei verschachtele Abfragen, zunächst die innerste:
Mit dieser Abfrage werden nur die ORG und der Timestamp der jeweils neuesten Datensätze aus der Tabelle Protokoll pro ORG ermittelt.
Nennen wir diese Abfrage "vTop" und setzen das mal ein, steht in der übergeordneten Abfrage:
Mit dieser Abfrage werden jetzt nochmal alle Datensätze aus Protokoll gesucht, die den Timestamp (max) und die ORG aus der ersten Abfrage haben, fügt man dann die weiteren Kriterien
an, werden die "Top-Datensätze" nach deinen Kriterien (aktuell) gefiltert.
Wir haben also, siehe Anfang der Abfrage
jetzt alle "ORG" aller Firmen die aktuell sind.
Nennen wir nun diese Abfrage "aktuelle_Kunden" und setzen sie in die äusserste Abfrage ein, steht dort:
Das sind dann also alle Kundendatensätze aus der Tabelle Kunden, die aktuelle Protokolle haben.
Die gesamte Abfrage ist Inhalt des Haupformulares. Es werden also nur aktuelle Kunden gezeigt.
Willst du zusätzlich alle Kunden, die noch kein Protokoll haben, anzeigen, geht fügst du den blauen Code hinzu:
dann versuche ich es mal zu erklären.
Die gesamte Abfrage lautet:
Code: Alles auswählen
SELECT "Kunden".*
FROM "Kunden",
(SELECT "ORG"
FROM "Protokoll", ( SELECT "ORG", MAX( "Timestamp" ) AS "MTS" FROM "Protokoll" GROUP BY "ORG" ) AS "vTop"
WHERE "Protokoll"."ORG" = "vTop"."ORG"
AND "Protokoll"."Timestamp" = "vTop"."MTS"
AND ( ( "Abschlussgrund" = 'WV'
AND "Wiedervorlage" > NOW( ) )
OR ( "Abschlussgrund" = 'NE'
AND DATEDIFF( 'mi', "Timestamp", CURRENT_TIMESTAMP ) > 120 )
OR "Abschlussgrund" IS NULL OR "Abschlussgrund" = '' ) )
AS "aktuelle_Kunden"
WHERE "Kunden"."ID" = "aktuelle_Kunden"."ORG"
Code: Alles auswählen
SELECT "ORG", MAX( "Timestamp" ) AS "MTS" FROM "Protokoll" GROUP BY "ORG"
Nennen wir diese Abfrage "vTop" und setzen das mal ein, steht in der übergeordneten Abfrage:
Code: Alles auswählen
SELECT "ORG" FROM "Protokoll", "vTop" WHERE "Protokoll"."ORG" = "vTop"."ORG" AND "Protokoll"."Timestamp" = "vTop"."MTS" ...
Code: Alles auswählen
... AND ( ( "Abschlussgrund" = 'WV'
AND "Wiedervorlage" > NOW( ) )
OR ( "Abschlussgrund" = 'NE'
AND DATEDIFF( 'mi', "Timestamp", CURRENT_TIMESTAMP ) > 120 )
OR "Abschlussgrund" IS NULL OR "Abschlussgrund" = '' )
Wir haben also, siehe Anfang der Abfrage
Code: Alles auswählen
SELECT "ORG" FROM "Protokoll", "vTop" ...
Nennen wir nun diese Abfrage "aktuelle_Kunden" und setzen sie in die äusserste Abfrage ein, steht dort:
Code: Alles auswählen
SELECT "Kunden".* FROM "Kunden", "aktuelle_Kunden" WHERE "Kunden"."ID" = "aktuelle_Kunden"."ORG"
Die gesamte Abfrage ist Inhalt des Haupformulares. Es werden also nur aktuelle Kunden gezeigt.
Willst du zusätzlich alle Kunden, die noch kein Protokoll haben, anzeigen, geht fügst du den blauen Code hinzu:
HTH, Gruß RSELECT distinct "Kunden".* FROM "Kunden", ( SELECT "ORG" FROM "Protokoll", ( SELECT "ORG", MAX( "Timestamp" ) AS "MTS" FROM "Protokoll" GROUP BY "ORG" ) AS "vTop" WHERE "Protokoll"."ORG" = "vTop"."ORG" AND "Protokoll"."Timestamp" = "vTop"."MTS" AND ( ( "Abschlussgrund" = 'WV' AND "Wiedervorlage" > NOW( ) ) OR ( "Abschlussgrund" = 'NE' AND DATEDIFF( 'mi', "Timestamp", CURRENT_TIMESTAMP ) > 120 ) OR "Abschlussgrund" IS NULL OR "Abschlussgrund" = '' ) ) AS "aktuelle_Kunden" WHERE "Kunden"."ID" = "aktuelle_Kunden"."ORG" or "Kunden"."ID" not in (Select distinct "ORG" from "Protokoll")
Windows 11: AOO, LO Linux Mint: AOO, LO
-
- Beiträge: 131
- Registriert: Do 25. Apr 2013, 17:27
Re: Protokoll zu Anrufliste
Vielen Dank für die Erklärung.
Ich hab ja schon vorher mit den Abfragen herumgespielt um sie zu verstehen und die drei verschachtelten Abfragen einzeln ausgeführt um die Ergebnisse zu sehen und zu verstehen. Und ich bin interessanterweise schon auf fast genau deine Lösung gestoßen. Allerdings hat mir das "distinct" in der äussersten Abfrage noch gefehlt.
Ich bin auch mit einer "JOIN"-Anweisung auf ein ähnliches Ergebnis gekommen, da ich auch diesen Befehl ausprobiert habe.
Jetzt hab ich noch ein Problem. Nämlich die Reihenfolge der Ergebnisse... Die ist nämlich auch noch essentiell.
Die Priorität der Reihenfolge ist:
1) Wiedervorlagen (sofern eine gerade aktuell ist): Wiedervorlage <= now()
2) Nicht erreichte mit einem Timestamp älter als 120 Minuten: Timestamp <= now()
3) Noch niemals kontaktierte
Da diese Daten ja im Protokoll sind, aber nicht im Ergebnis der Abfrage, kann ich demnach ja nicht danach sortieren...
Im Prinzip reicht ja eigentlich nur eine einzige Zeile auszugeben. Ich vermute einmal, ich muss da noch eine Abfrage runderhum bauen, welche aus den Ergebnissen dieser Abfrage noch einmal das Protokoll bemüht um diesen einen, momentan wirklich aktuellen Datensatz rauszufiltern. Mit einem "ORDER BY" wirds so noch nicht gehen.
lg scientific
Ich hab ja schon vorher mit den Abfragen herumgespielt um sie zu verstehen und die drei verschachtelten Abfragen einzeln ausgeführt um die Ergebnisse zu sehen und zu verstehen. Und ich bin interessanterweise schon auf fast genau deine Lösung gestoßen. Allerdings hat mir das "distinct" in der äussersten Abfrage noch gefehlt.
Ich bin auch mit einer "JOIN"-Anweisung auf ein ähnliches Ergebnis gekommen, da ich auch diesen Befehl ausprobiert habe.
Jetzt hab ich noch ein Problem. Nämlich die Reihenfolge der Ergebnisse... Die ist nämlich auch noch essentiell.
Die Priorität der Reihenfolge ist:
1) Wiedervorlagen (sofern eine gerade aktuell ist): Wiedervorlage <= now()
2) Nicht erreichte mit einem Timestamp älter als 120 Minuten: Timestamp <= now()
3) Noch niemals kontaktierte
Da diese Daten ja im Protokoll sind, aber nicht im Ergebnis der Abfrage, kann ich demnach ja nicht danach sortieren...
Im Prinzip reicht ja eigentlich nur eine einzige Zeile auszugeben. Ich vermute einmal, ich muss da noch eine Abfrage runderhum bauen, welche aus den Ergebnissen dieser Abfrage noch einmal das Protokoll bemüht um diesen einen, momentan wirklich aktuellen Datensatz rauszufiltern. Mit einem "ORDER BY" wirds so noch nicht gehen.
lg scientific
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.