PDA

Vollständige Version anzeigen : komplizierte Abfrage


FrankyZ
19.06.2001, 12:07
Hallo!

Ich habe folgendes Problem:

ich habe Felder (boolean-Felder) in einer Tabelle definiert. Diese sin durch eine ID jewals gekennzeichnet.
z.B. ( T=True & F=False )

1|T|F|T|T
2|F|F|T|T
3|F|F|F|F
4|T|F|F|T


Ok. Nun möchte ich drei dieser Datensätze zusammenfaßen. Es soll nämlich eine Art Schablone dargestellt werden.
Sagen wir die erste Schablone ist Datensatz 1 und die zweite Schablone Datensatz 2 und die Dritte, die 3.
Diese Schablonen, werden jetzt übereinander gestapelt (nur in unserem Kopf... ;). Und wenn man jetzt diese Zusammengesetzten Schablonen von oben anschaut, dann müßte jetzt nämlich ein "Loch" sein.
Denn:

1|T|F|T|T
2|F|F|T|T
3|F|F|F|T
==========
x|T|F|T|T <-neuer Datensatz

Es soll also so eine Formel benutzt werden.
Sobald <u>ein</u> Wert true ist, ergibt das ergebnis true, wenn <u>alle</u> Werte false sind, ist das ergebnis false.

Wie realisiere ich sowas mit Access 97?

Ich hoffe ich hab's nicht zu kompliziert dargestellt. Aber ich weiß leider nicht wie ich sonst das erklären soll.

Bin für eure Hilfe dankbar!

Gruß, Franky

Birgit Dannenberg
19.06.2001, 12:17
Hallo!

Mal unabhängig davon, wie Du auf die Werte zugreifen willst, kannst folgende Zuweisung verwenden:

b1neu = b1-1 ! b1-2 ! b1-3

Durch die OR-Verknüpfung müßtest Du das gewünschte Ergebnis erhalten.

Gruss Birgit

FrankyZ
19.06.2001, 12:24
Aha.

Leider bin ich kein Profi in Datenbanken. Ich werd mich mal mit der Accesshilfe außernandersetzen.

Danke, jetzt weiß ich wonach ich schaon muß.

Gruß, Franky

FrankyZ
19.06.2001, 13:03
Tut mir leid aber ich hab nix gefunden...

Wäre nett, von Dir, wenn Du mir das mal hier erklärst:
b1neu = b1-1 ! b1-2 ! b1-3

Wie soll den der SQL-Teil aussehen.
Ich versteh nicht, wie man in der selben Spalte eine OR-Verknüpfung machen kann.

Irgendwie versteh ich das überhaupt net!?!? :(

Frank

Birgit Dannenberg
19.06.2001, 13:12
Hallo.
Kann mich leider erst morgen früh wieder detailliert melden. In der Zwischenzeit kannst Du den Fall vielleicht noch etwas näher erläutern, z.B. wie und wo Du das lösen willst (VBA-Code, (Parameter-)Abfrage etc.).

Oder es findet sich noch jemand anderes.

Am bestens stellst Du die Frage morgen früh noch mal an den Kopf, durch Selbstbeantwortung, wenn Du dann noch Hilfe brauchst.

Gruss Birgit

FrankyZ
19.06.2001, 14:02
Ok, so machen wir's!

Per VBA-Code könnte ich das schon irgendwie realisieren aber das wäre zu kompliziert.

Ich würde mir eine Funktion basteln, der ich die 3 ID's übergebe und die mir als Rückgabewert, nen Array mit den Ergenissen der einzelnen boolean-Felder zurück gibt.

Diese Funktion, würde jeden der drei Datensätze durchgehen, wie Werte auslesen, sie in eine interne Variable speichern und zum schlüß mit if-Abfrage zu einem Ergebniss zusammenfaßen.
Denn wenn das Ergebnis für ein Feld -3 ist (3mal False [sprich-1]), dann false ansonsten True.

Ich denke, daß mußte doch mit Access besser gehen, oder?

Aber dann mach ich das so. Ich müß leider mit der Datenbank fertig werden, mein Chef will bis Ende der Woche, daß sie produktiv ist.... ;)

Aber es interessiert mich, wie man das ohne VBA-Code machen könnte, wenn es denn geht.
Hatte bis jetzt nicht viel mit Db's am Hut.

Danke nohmals für Deine Bemühumgen.

Gruß, Frank

FrankyZ
20.06.2001, 08:19
Guten Morgen!

Ich hab festgestellt, das es so wie ich das oben machen wollte nicht funktioniert (mit VBA).
Ich kann das zwar coden aber in einem Bericht hat man keine Möglichkeit für jeden Datensatz, den Stuerelementinhalt zu ändern *grrr*.

Ich komm also mit VBA nicht zum Ziel.
Wie geht es also in einer Abfrage (sprich mit SQL)?

Gruß, Frank

Birgit Dannenberg
20.06.2001, 09:38
Guten Morgen, Frank.

Was willst Du denn nun eigentlich machen, einen neuen Datensatz erzeugen oder einen Bericht erstellen???

Der Ansatz mit der Funktion ist doch gar nicht schlecht. Ich verstehe nur noch nicht, nach welchen Kriterien Du die Datensätze zusammenfassen willst, immer drei oder abhängig von iregendwelchen anderen Merkmalen?
Aber egal, es geht auch so.

Wenn Du die (drei) Datensätze irgendwie im Zugriff hast, kannst Du folgendes einsetzen:

Function TrueOrFalse(p1,p2,p3) returns boolean
TrueOrFalse = p1 ! p2 ! p3
end Function

Das kannst Du natürlich auch direkt codieren, ohne Funktionsaufruf, aber vielleicht willst Du noch mehr damit machen.

Das ! ist ein bool'scher Operator, eben das OR und liefert nur dann True zurück, wenn alle Vergleichswerte True sind, ganz so wie Du es haben willst.
Addieren kannst Du Bool-Werte nicht, also kannst Du auch nicht auf -3 kommen! Aber so wie oben kannst Du es abhandeln.

Hilft Dir das nun weiter?

Gruss Birgit.

FrankyZ
20.06.2001, 10:34
Ich will eigentlich einen Bericht erstellen.
Und dieser Bericht soll dieses Ergenis anzeigen.


Ne, das ist schon mal super! Wußte gar nicht das man das so einfach rein schreiben kann, mit "!".
Das Problem bei mir ist, daß diese drei Werte, die ich mit dieser Or-Verküpfung haben möchte in 3 verschiedenen Datensätzen einer Tabelle sind.
Ich kann mich doch nicht auf den nächsten bzw. den vorherigen Datensatz beziehen, oder?

Die Funktion ist wirklich elegant!
Aber wenn ein Bericht erstellt wird, kann ich doch nicht wärend Access den Bericht aufbaut, für jeden Datensatz diese Funktion aufrufen. Wenn doch, wie?

Mein Hauptproblem ist also, das das Ergenis, daß ich haben möchte aus 3 Datensätzen (gleiche Spalte & gleiche Tabelle) besteht.
Und dank Dir weiß ich jetzt schon mal, wie ich diese miteinander am originellsten verküpfe. Nur wie beziehe ich mich daruf?

Du, um den Thema dann ein Ende zu geben, will Dich ja nicht von Deinen Aufgaben wegbringen. Also schreib wenn Du Zeit & Lust hast oder laß es sein. Ich weiß wie das ist, wenn man einem was erklärt und der verstet es net.... ;)

Irgendwie + irgendwann + irgendwo werd ich das schon lösen.... *hoff*

Ich danke Dir.
Gruß, Frank

PS. Danke Dir Reiner. Ich Antworte Dir gleich mal...

Morli
27.06.2001, 08:18
Zur Info fürs Forum1

Das Problem war ganz einfach zu lösen:

Gruppierung im Bericht mit Summenfeldern über die Ja/Nein-Felder im Gruppenfuß!!!

Machmal sieht man den Wald vor lauter Bäumen nicht mehr.

Gruß

Rainer :)