Aus 4 macht 1

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Tuete
**
Beiträge: 28
Registriert: Mi, 05.12.2007 17:55

Aus 4 macht 1

Beitrag von Tuete »

Folgendes

Ich habe eine Tabelle mit 4 Feldern, sie sich in meinem Fall auf Personen beziehen. Zusätzlich ein Feld für Notizen.
Sinn der Sache: Im Notizfeld notiere Ich ein Ereignis, an dem bis zu 4 Personen teilnehmen können (die ich für jedes Feld einzeln
per Kombinationsfeld aus etwa 20 Personen auswähle).

Das ganze sieht dann etwa so aus:
|Person1| |Person2| |Person3| |Person4| |Notiz|

Jetzt möchte ich eine Abfrage für einen Bericht starten, die mir alle Ereignisse anzeigt, an der eine bestimmte Person teilgenommem hat,
egal ob sie nun an Position Person1, Person2, Person3 oder Person4 steht. Sprich alle Ereignisse auflisten an denen unter anderem z.B. Thomas
teilgenommen hat, aber keine raussuchen an denen er nicht teilgenommen hat.

Wäre schön, wenn mir jemand bei der Formulierung der Abfrage behilflich sein könnte.



Tuete
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Aus 4 macht 1

Beitrag von Barlee »

Hallo tuete,

am einfachsten ist etwas in dieser Art:

Code: Alles auswählen

select Notiz from [Deine_Tabelle]
where
Pers1=:Name or
Pers2=:Name or
Pers3=:Name or
Pers4=:Name
Du wirst dann nach dem Namen der zu suchenden Person gefragt. Möchtest Du diese Angabe nicht machen, dann ersetze :Name durch den entsprechenden Namen der Person.

Gruß Barlee
Tuete
**
Beiträge: 28
Registriert: Mi, 05.12.2007 17:55

Re: Aus 4 macht 1

Beitrag von Tuete »

Supi
Geht auf jeden Fall in die richtige Richtung und funktioniert auch. Leider fragt mich OO dann nach vier Einträgen, d.h. muss ich denn gleichen Namen viermal eintragen damit ich wirklich alle Einträge bekomme.
Ich möchte aber praktischerweise nur einmal den Namen eingeben müssen.

Tuete
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Aus 4 macht 1

Beitrag von Barlee »

Hi tuete,

welche OOo Version benutzt Du?
Gebe ich diese Abfrage ein, dann wird nur einmal nach dem Parameter von "Name" gefragt. Ist ja auch logisch, da nur ein Parameter definiert wurde ...

Gruß Barlee
Parameter.jpg
Parameter.jpg (8.96 KiB) 1473 mal betrachtet
Tuete
**
Beiträge: 28
Registriert: Mi, 05.12.2007 17:55

Re: Aus 4 macht 1

Beitrag von Tuete »

Ich hab 2.3!
Vielleicht hab ich Deinen Code nur falsch im Editor umgesetzt.
Hier mal meins
2.jpg
2.jpg (13.59 KiB) 1429 mal betrachtet
1.jpg
1.jpg (51.18 KiB) 1429 mal betrachtet
In diesm Fall werden werden natürlich alle anderen Felder mit ausgegeben, nicht nur die Notiz.


Tuete
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Aus 4 macht 1

Beitrag von Barlee »

Hallo Tuete,

das von Dir beschriebene Verhalten kann ich nicht nachvollziehen:
Parameter1.jpg
Parameter1.jpg (21.07 KiB) 1388 mal betrachtet
Die Variable wird nur einmal abgefragt (OOo 2.3)

Gruß Barlee
Tuete
**
Beiträge: 28
Registriert: Mi, 05.12.2007 17:55

Re: Aus 4 macht 1

Beitrag von Tuete »

Gut, mein Fehler!

Wenn ich die Abfrage starte wird tatsächlich nur einmal nach dem Namen gefragt. Wenn ich aber einen Bericht erstellen lasse, der auf dieser Abfrage beruht, wird 4mal nach dem Namen gefragt :(

Tuete
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Aus 4 macht 1

Beitrag von Barlee »

Hallo tuete,

ja, ist im Bericht reproduzierbar. Scheint ein Bug zu sein. Evtl. könntest Du hierfür einen Bugreport aufmachen?

Um doch zum erwünschten Ergebnis zu kommen, kannst Du folgendermaßen vorgehen. Die Namen aller 4 Personen werden mittels "CONCAT" zu einer Zeichenkette zusammengezogen. Anschließend fragst Du nach einem Bestandteil dieser Zeichenkette mit dem LIKE Operator ab.

Code: Alles auswählen

SELECT "Notiz" 
FROM "Tab_Personen" 
WHERE 
( concat("Pers1", concat("Pers2",concat( "Pers3", "Pers4"))) like :Name ) 
Im Dialogfenster musst Du dann allerdings nicht nur z.B. tuete eingeben, sondern %tuete%.

Vielleicht eine Alternative.

Schönes Wochenende!
Gruß Barlee
Tuete
**
Beiträge: 28
Registriert: Mi, 05.12.2007 17:55

Re: Aus 4 macht 1

Beitrag von Tuete »

Hat perfekt geklappt, Danke!

Tuete
Antworten