collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 65
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 3
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13910
  • stats Beiträge insgesamt: 65772
  • stats Themen insgesamt: 8873
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Wenn-Abfrage mit Und gesucht in Spalten  (Gelesen 983 mal)

Offline weingummi

  • Newbie
  • Beiträge: 4
Wenn-Abfrage mit Und gesucht in Spalten
« am: März 06, 2017, 11:12:32 »
Hallo zusammen,
ich habe folgendes Problem:
Meine vereinfachte Ausgangstabelle:
Zins   Kennung
2,43   K065
2,43   KT
2,52   K45
3   F43
3,33   KT
3,33   F
3,33   ZR10
3,5   K11
3,5   KT
3,5   F27
3,5   ZR
nun will ich folgendes Ergebnis:
   2,43   2,52   3   3,33   3,5
K   x   x         x
KT   x         x   x
F         x   x   x
ZR            x   x

Das heißt, ich frage ab
ist in der ersten Spalte der Zins = 2,43 UND in der zweiten Spalte die Kennung = K*, dann schreibe x sonst " "

Ich steh völlig auf dem schlauch, wenn ich eine wenn-Abfrage in spalten mache?!
Bitte helft mir!
 

Offline MzKlMu

  • AoM Team
  • Access-Oberguru
  • *****
  • Beiträge: 7201
Re: Wenn-Abfrage mit Und gesucht in Spalten
« Antwort #1 am: März 06, 2017, 12:08:51 »
Hallo,
Kreuztabellenabfrage wäre das Stichwort.
Gruß
Klaus
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1167
Re: Wenn-Abfrage mit Und gesucht in Spalten
« Antwort #2 am: März 06, 2017, 12:23:00 »
Mit den vorliegenden Daten musst Du schon etwas mehr Aufwand betreiben, um an das Ziel zu gelangen. Zuerst benötigst Du eine Abfrage, die den Textteil der Kennung übrig lässt. Weil Access und VBA keine Funktion dafür im Sortiment führt, muss eine eigene Funktion in VBA in einem allgemeinen Modul geschrieben werden. Ich habe diese GetAlphaIdentification getauft.Public Function GetAlphaIdentification(Identification)
   
   Const CLSID_RegExp$ = "{3F4DACA4-160D-11D2-A8E9-00104B365C9F}"

   Static re As Object

   If re Is Nothing Then
      Set re = CreateObject("new:" & CLSID_RegExp)
      re.Pattern = "[A-Z]+"
   End If

   If IsNull(Identification) Then
      GetAlphaIdentification = Null
   ElseIf re.Test(Identification) = False Then
      GetAlphaIdentification = Null
   Else
      GetAlphaIdentification = re.Execute(Identification)(0)
   End If

End Function

Diese Abfrage (ich habe sie qa getauft) liefert dann die Vorstufe für die Hauptabfrage und geht von einem Tabellennamen data aus.SELECT d.zins,
       Getalphaidentification( d.kennung ) AS kennung
FROM   data AS d;

Hier kommt dann die Lösung in Form einer KreuztabellenabfrageTRANSFORM Iif(First(qa.zins) IS NOT NULL, "x") AS x
SELECT qa.kennung
FROM   qa
GROUP  BY qa.kennung
PIVOT Format(qa.zins, "fixed");
und diesem Ergebnis:kennung 2,43    2,52    3,00    3,33    3,50
--------------------------------------------
F                       x       x       x
K       x       x                       x
KT      x                       x       x
ZR                              x       x
Grüße von der (⌒▽⌒)
 
Folgende Mitglieder bedankten sich: weingummi