Wie kann ich in einer anderen Tabelle nach Datum und dazu passenden Datensatz Treffern suchen?
Ninox Profile

Ich würde die Formel von Bernd so modernisieren:

---

let SuchDatum := 'Heutiges Datum Abfragetabelle';

'1. Suchtext aus Haupttabelle':= join (select  'Haupttabelle' where 'Datum A' = SuchDatum or 'Datum B' = SuchDatum or 'Datum C' = SuchDatum or 'Datum D' = SuchDatum or date(Terminfeld)=Suchdatum.'Text 1',"

");

'2. Suchtext aus Haupttabelle':= join (select  'Haupttabelle' where 'Datum A' = SuchDatum or 'Datum B' = SuchDatum or 'Datum C' = SuchDatum or 'Datum D' = SuchDatum date(Terminfeld)=Suchdatum.'Text 2',"

")

---

Wenn du die beiden Textfelder in der Suchtabelle noch höher machst, dann werden die Suchergebnisse  untereinander geschrieben.

 

Leo

 

 

B

ja, aber dann ist die Priorität von A, B, C, D nicht mehr gegeben ๐Ÿ™„

Ninox Profile

Ich denke, es solte aber passen. Ninox prüft in einem Datensatz ob das gesuchte Datum in einem der 4 Datumsfelder oder in dem Terminfeld vorhanden ist. Trifft es zu - wird der Text übernommen. Wenn es auch mehrmalls vorkommt, wird der Text trotzdem nur einmal übernommen. Dann geht es zu den zweiten Datensatz und wenn dort etwas gefunden wird, wird der Text untendrunter geschrieben.

Leo

 

Ninox Profile

Leos Variante benötige ich wahrscheinlich für den dritten und letzten Part meiner aktuellen Sache. Dann wird noch mein "Informations System" dran geflanscht. Das ist gefüllt mit - wie der Name schon sagt - Informationen, Tipps & Tricks sowie vielen PDFs, Fotos usw. Technische Beschreibungen, Anleitungen für technische Geräte usw.

Hier möchte ich sowas wie eine Suche a la Google haben statt ewig zu blättern. Schlagwort eingeben, Ergebnis bzw.

Ergebnisse zum direkten anwählen vor einem.

 

Ich mach mich nun mal daran, die Sache mit A, B, C und D nun zu probieren :-)

 

 

 

 

Ninox Profile

Ich danke Euch so sehr! Es klappt! Alles wird korrekt der Reihe nach durchsucht, Treffer die schon gefunden wurden werden nicht nochmal eingetragen. Was will man mehr? Perfekt!

 

Habe nur noch ein "Terminproblem":

Wenn ich das Terminfeld als allerletztes auch noch durchsuchen lassen will. Das Terminfeld wird irgendwie von der Formel nicht als Datumsfeld erkannt. Dann habe ich ein Berechnungsfeld genommen um den Termin dort hinein zu spiegeln und wollte das dann absuchen lassen. Aber im Berechnungsfeld erscheinen nur Zahlenkolonnen anstatt ein Datum (siehe Screenshot). Habs schon ohne die kleinen Gänsefüsschen davor und dahinter probiert, dann kommt gleich eine Fehlermeldung im Scriptfenster.

 

terminproblem

 

Ninox Profile

date(start(Terminfeld))

Ninox Profile

BING! Das wars! :-)

DAANKEE!

Ninox Profile

Ich dachte das wars.

Irgendwie findet er doch noch doppelte Einträge. Wenn ein Auftragssatz z.B. Datum A und Datum B mit dem gesuchten Datum enthält, dann schreibt er diesen Auftrag als Reisegrund 2x rein.

 

Mein originaler Code sieht nun so aus:

let SuchDatum := 'Datum Mo.';
var Reisegrundtext := "";
for AuftragsSatz in select AUFTRAG where Datum_A = SuchDatum do
if Reisegrundtext > "" then Reisegrundtext := Reisegrundtext + " & " else void end;
Reisegrundtext := Reisegrundtext + AuftragsSatz.'Adresse für Reisekosten'
end;

for AuftragsSatz in select AUFTRAG where Datum_B = SuchDatum do
if Reisegrundtext > "" then Reisegrundtext := Reisegrundtext + " & " else void end;
Reisegrundtext := Reisegrundtext + AuftragsSatz.'Adresse für Reisekosten'
end;

for AuftragsSatz in select AUFTRAG where Datum_C = SuchDatum do
if Reisegrundtext > "" then Reisegrundtext := Reisegrundtext + " & " else void end;
Reisegrundtext := Reisegrundtext + AuftragsSatz.'Adresse für Reisekosten'
end;

for AuftragsSatz in select AUFTRAG where Datum_D = SuchDatum do
if Reisegrundtext > "" then Reisegrundtext := Reisegrundtext + " & " else void end;
Reisegrundtext := Reisegrundtext + AuftragsSatz.'Adresse für Reisekosten'
end;

for AuftragsSatz in select AUFTRAG where date(start('Geplanter Termin')) = SuchDatum do
if Reisegrundtext > "" then Reisegrundtext := Reisegrundtext + " & " else void end;
Reisegrundtext := Reisegrundtext + AuftragsSatz.'Adresse für Reisekosten'
end;

if Reisegrundtext != null and 'Reisegrund Mo.' != null or 'Reisegrund Mo.' = null then
'Reisegrund Mo.' := Reisegrundtext
end

B

๐Ÿ‘๐Ÿ‘๐Ÿ‘

B

oben war irrläufer...

das ist richtig, er schreibt jetzt für jedes gefundene Darum den Text..., wie soll es denn richtig sein?

Reply