0

zwei prinzipiell identische globale Funktionen - eine geht, die andere nicht...!?

Hallo,

 

ich verzweifele gerade - ich habe gestern in einer DB zwei globale Funktionen zur Abfrage von Feldern in einer entfernten (Ninox-)DB eingerichtet. Sie liefen auch beide wunderbar - heute aber weigert sich eine vehement und ich bekomme partout nicht drauf, warum. Hier die Funktionen (Team-ID und Datenbank-ID hab ich nur hier ersetzt):

 

function API_Art_ID(myArt : text) do
let response := do as server
http("POST", "https://api.ninoxdb.de/v1/teams/<Team-ID>/databases/<Datenbank-ID>/tables/E/record", {
Authorization: "Bearer " + API_Key(),
'Content-Type': "application/json"
}, {
A: myArt
})
end;
if response.error then response.error else response.result.id end
end;
function API_Art_Bez(myArt : text) do
let response := do as server
http("POST", "https://api.ninoxdb.de/v1/teams/<Team-ID>/databases/<Datenbank-ID>/tables/E/record", {
Authorization: "Bearer " + API_Key(),
'Content-Type': "application/json"
}, {
A: myArt
})
end;
if response.error then
response.error
else
response.result.fields.Bezeichnung
end
end;

 

die erste weigert sich (wie gesagt von gestern auf heute) mit folgendem Fehler:

 

Screenshot 2019-07-03 10.49.39

 

Das Feld als text() zu übergeben habe ich schon probiert - die andere Funktion kann ich zudem problemlos mit API_Art_Bez('Artikel in Projekt-DB') aufrufen...

 

Was übersehe ich?

 

lg, Torsten

7 Antworten

null
    • Torsten_Stang.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Nachtrag:

     

    Mittlerweile fliegt mir eine zweite Funktion um die Ohren, die gestern noch klaglos ihren Dienst tat:

     

    function API_Lief(myLief : text) do
    let response := do as server
    http("POST", "https://api.ninoxdb.de/v1/teams/<Team-ID>/databases/<Datenbank-ID>/tables/N/record", {
    Authorization: "Bearer " + API_Key(),
    'Content-Type': "application/json"
    }, {
    A: myLief
    })
    end;
    if response.error then response.error else response.result.id end
    end;

     

    lg, Torsten

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Torsten, nur so als Idee: Versuch doch mal, die if-Abfrage innerhalb des "do as server"-Bereichs abzubilden (also vor dem "end").

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

    Hallo Copytexter,

     

    danke Dir für das Feedback. Ich bin überzeugt, dass der hinter der Funktion stehende Code nicht das Problem ist. Ich habe ihn jetzt aus den globalen Funktionen direkt in meine Befehlsschaltflächen übernommen und dort läuft er einwandfrei. Zumal die dritte globale Funktion ja quasi genauso aufgebaut ist und wunderbar funktioniert. :-/

     

    lg, Torsten

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    War wie gesagt nur ne Idee. Darauf gekommen bin ich, weil ich gerade von zwei Tagen auch das Problem hatte, dass ein (Button-) Script nicht mehr lief, in dem innerhalb des 'do as server' eine Variable hochgezählt und außerhalb per dialog() angezeigt wurde. Woran es genau lag, weiß ich nicht, aber nachdem ich besagte Variable entfernt hatte, ging's wieder. 

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Torsten, 

    Es sind zwei POST Anfragen zu einem Vorgang. Die Funktionen sind komisch ineinander eingeschloßen. bei zweitem Beispiel fehlt am Ende noch ein end. Mein Vorschlag:

    function API_Art (myArt : text) do
    let response := do as server
    http("POST", "https://api.ninoxdb.de/v1/teams/<Team-ID>/databases/<Datenbank-ID>/tables/E/record", {
    Authorization: "Bearer " + API_Key(),
    'Content-Type': "application/json"
    }, {
    A: myArt
    })
    end;
    if response.error then response.error else response end
    end
    end

    ---

     

    Aus dieser kannst du sowohl id (API_Art.id) als auch Bezeichnung (API_Art.fields.Bezeichnung) rausholen

     

    Leo

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

    Hallo Leo,

     

    auch Dir ein Danke! Die Funktionen rufe ich an unterschiedlichen Stellen auf - dass ich dazu nur eine Funktion benötige war mir neu und werde ich vielleicht irgendwann mal einsetzen.

     

    Ein fehlendes "end" kann ich partout nicht entdecken, wenn, dann ist eins via copy/paste verlustig gegangen. Dein Beispiel hat IMHO sogar eins zu viel :-)

     

    Wie gesagt, die Funktionen haben gestern noch einwandfrei funktioniert und tun dies heute (ohne Änderung an der DB) plötzlich nicht mehr...

     

    Und selbst wenn der Code innerhalb der Funktion nicht zum gewünschten Ergebnis führen sollte, syntaktisch aber korrekt ist, dürfte ja nie und nimmer der Code beim Aufruf meckern. Dort sollte doch nur überprüft werden, ob der übergebene Parameter (hier: 'Artikel in Projekt-DB') dem Erfordernis der Funktion (hier: text) entspricht.

     

    Was Du mit "komisch ineinander eingeschloßen" meinst, kann ich auch gerade nicht nachvollziehen, letztlich entspricht mein Code doch Deinem, ausser dass ich im else-Segment direkt einzelne Felder auslese und übergebe...

     

    lg, Torsten

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Stimmt, bei mir ist eine end zu fiel. Und ich nehme meine Aussage zurück - habe bei dir eine end übersehen. Bei mir laufen seit langem Abfragen in folgendem Format:

    get

    Läuft wie gesagt seit Monaten stabil. Prüf ob du etwas übernehmen kannst.

    Leo

Content aside

  • vor 4 JahrenZuletzt aktiv
  • 7Antworten
  • 1874Ansichten