0

Logikfehler im Code - bitte um Hilfe

ich hab eine Ansicht kreeirt, in der ich einträge aus einer tabelle 'KB' listen will, wenn sie einem bestimmten einzig dem status (=2) entsprechen und folglich je nachdem welches 'via' gewählt wurde, bestimmten werten aus der tages-berechnung - days(x,y) - wobei y heute ist und x der tag des eintrages des wertes 'via', entsprechen muss ...

 

erst dachte ich, es funktioniert, aber dann merkte ich, dass es nur dann funktioniert, wenn das 'via' = 2, was das erste vorkommen von 'via' im code ist - es muss daran liegen, denn wenn ich den code so umbaue, dass 'via' = 1 zuerst steht, dann zeigt er die einträge nur bei diesen treffern an ...

 

ich dachte, in meiner laienhaftigkeit, or könnte zwischen den einzelnen bedingungen stehen, aber da zeigt er vielmehr und darüber hinaus gehend alle einträge aus 'KB' an ... bei and wirkt es wie gesagt so, als ob alle den bedingungen des ersten 'via' im code folgenden irrelevant sind ...

 

hier mal der code - wäre sehr dankbar für den entscheidenden hinweis ... danke 

 

select KB where Art = 2 and 'Tage' >= 7 and via = 2 and Status = 3 and (select KB where Art = 2 and 'Tage' >= 7 and via = 3 and Status = 3) and (select KB where Art = 2 and 'Tage' >= 1 and via = 4 and Status = 3 and (select KB where Art = 2 and 'Tage' >= 14 and via = 1 and Status = 3))

10 Antworten

null
    • Astavakra
    • vor 3 Jahren
    • Gemeldet - anzeigen

    sorry, status ist natürlich immer 3

    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hier sieht man ja den Wald vor lauter "and" nicht....  ist es nicht einfacher nach Bedingungen zu filter die NICHT zutreffen? Was soll denn hier selektiert werden?

    Art ist immer = 2, Via ist 1,2,3 oder 4, Status ist immer 3 und Tage ist alles von 1- 14 ???

    • Torsten_Stang.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    hm, ohne in's Detail zu gehen, evtl. so?:

     

    select KB where (Art = 2 and 'Tage' >= 7 and via = 2 and Status = 3) or (Art = 2 and 'Tage' >= 7 and via = 3 and Status = 3) or (Art = 2 and 'Tage' >= 1 and via = 4 and Status = 3) or (Art = 2 and 'Tage' >= 14 and via = 1 and Status = 3)

    • Astavakra
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Haha! ja bin sicher, dass das einfacher ginge ...

     

    Es geht um Bestellungen und Kontaktaufnahme mit den entsprechenden Kunden:

    Art ist das Produktsegment, in dem Fall gilt unsere Formel nur für eines ...

    Status ist der Status der Bestellung, also bestellt oder am Weg, oder, für uns relevant, bereits hier im Shop ('Status = 3)...

    via ist der Weg, auf dem wir den Kunden bereits informiert haben, dass die Bestellung eingetroffen ist - Tel, SMS, Mail ...

    x ist dieser Tag, an dem ich den Kunden ('via') darüber infomiert habe 

    y ist heute

     

    Was ich jetzt will ist, dass die Ansicht mir am Morgen, wenn ich Ninox öffne, als erstes die Kunden anzeigt, die nach einer gewissen Zeit eines bestimmten Kontaktweges ihre Bestellung noch immer nicht abgeholt haben - auf dass ich sie nochmal kontaktiere - zB hab ich sie telefonisch erreicht ('via' = 1), dann erscheinen sie 14 Tage danach in der Ansicht als Erinnerung, sie daran zu erinnern - hab ich das aber via SMS getan, zB 7 Tage danach oder hab ich sie gar nicht erreicht ('via'= 4), dann gleich wieder am nächsten Tag ...

     

    Ich will diese lästigen und zeitaufwändigen Prozesse einfach in Ninox auslagern und dafür suche ich den richtigen Code ... 

    bin nach wie vor nicht sehr tief drin in NInox, ahb zwar schon etwas mit switch case gespielt, aber ich bin sicher, ein erfahrener Programmierer hat da ganz schnnel die passende Lösung 

     

    thx

    • Astavakra
    • vor 3 Jahren
    • Gemeldet - anzeigen

    @Thorsten

    so hab ich es auch schon versucht, aber die Klammern sind nach Eingabe gleich wieder verschwunden

    • Astavakra
    • vor 3 Jahren
    • Gemeldet - anzeigen

    @Torsten

    taking the h back ;) 

    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Mach dir doch ein Auswahlfeld KONTAKTAUFNAHME mit "Anruf", "SMS" und "Mail", ein Datumsfeld und ein Datumsfeld WIEDERVORLAGE.

    In den Trigger bei Änderung des KONTAKTAUFNAHME Feldes kommt

     

    switch KONTAKTAUFNAHME do
    case 1:
    (
    Datum := today();
    wiedervorlage := today() + 14
    )
    case 2:
    (
    Datum := today();
    wiedervorlage := today() + 7
    )
    case 3:
    (
    Datum := today();
    wiedervorlage := today() + 1
    )
    end

     

    Jetzt machst Du dir eine Ansicht mit den Wiedervorlagen, sortierst auch danach und fertig... hilft Dir das?

    • Astavakra
    • vor 3 Jahren
    • Gemeldet - anzeigen

    klingt gut ... ich versuch es dann und geb bescheid

     

    danke vielmals für die mühe :)

    • Astavakra
    • vor 3 Jahren
    • Gemeldet - anzeigen

    works perfectly ... simply thought, simply implemented ... :)

     

    danke für den Anstoß!

     

    schönen Abend

    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Dit freut mir.... Dito

    LG

    Tobias