0

Selbstdefinierte Funktion erkennt Variablen nicht richtig

Hallo Zusammen,

ich habe eine globale Funktion definiert, die den Inhalt einer .vcf Karte erstellen soll

function vcard(firstname : text,lastname : text,phonehome : text,phonemobil : text,street : text,zip : number,city : text,email : text) do
let ftime := format(now(), "YYYY-MM-DDThh:mm:ssZ");
let phome := text(phonehome);
"BEGIN:VCARD
VERSION:3.0
N:" + lastname + ";" + firstname + ";;;
FN:" + firstname + " " + lastname + "
TEL;TYPE=HOME;TYPE=VOICE:" + phome + "
TEL;TYPE=CELL;TYPE=VOICE:" + phonemobil + "
ADR;TYPE=HOME:;;" + street + ";" + city + ";;" + zip + ";
EMAIL;TYPE=INTERNET;TYPE=HOME;TYPE=PREF:" + email + "
REV:" + ftime + "
END:VCARD"
end

Von verschiedenen Tabellen soll die Funktion angesprochen werden mit folgendem Skript:

let phome := text(Festnetz);
let pmobil := text(Mobil);
let mail := text('E-Mail');
createTextFile(this, vcard(Vorname, Nachname, phome, pmobil, Strasse, PLZ, Ort, mail), Vorname + " " + Nachname + ".vcf")

Jetzt zu dem Problem - Felder die richtig definiert worden sind, wie Vorname / Nachname / Straße / Ort (text) PLZ (number) funktionieren erwartungsgemäß und werden richtig erkannt und eingesetzt. Felder wie Telefon und Email werden auch nach der Formatierung (text) in der Funktion einfach ignoriert und mit Vornamen und Nachnamen ausgefüllt.

Gebe ich die Felder via alert() aus funktioniert es erwartungsgemäß...

Gibt es Variablendefinitionen für die globalen Funktionen wie mail oder phone? Beides wird leider bei der Eingabe ignoriert.

11 Antworten

null
    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hatte das gleiche Problem gehabt,

    bei mir funktioniert es so:

    function vcard(firstname : text,lastname : text,phonehome : text,phonemobil : text,street : text,zip : number,city : text,email : text) do
    let ftime := format(now(), "YYYY-MM-DDThh:mm:ssZ");
    "BEGIN:VCARD
    VERSION:3.0
    N:" + lastname + ";" + firstname + ";;;
    FN:" + firstname + " " + lastname + "
    TEL;TYPE=HOME;TYPE=VOICE:" + phonehome + "
    TEL;TYPE=CELL;TYPE=VOICE:" + phonemobil + "
    ADR;TYPE=HOME:;;" + street + ";" + city + ";;" + zip + ";
    EMAIL;TYPE=INTERNET;TYPE=HOME;TYPE=PREF:" + email + "
    REV:" + ftime + "
    END:VCARD"
    end

    -----

    createTextFile(this, vcard(Vorname, Nachname, text(Festnetz), text(Mobil), Strasse, PLZ, Ort, text('E-Mail')), Vorname + " " + Nachname + ".vcf")

    ----

    Keine Ahnung warum.

     

    Leo

    • info.24
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Habe es nun auch unabhängig davon gelöst und bin auf die gleiche Lösung gekommen. Sieht so aus als würden Variablen die man im Vorfeld definiert nicht in den Funktionsaufruf genommen. Aber wenn man sie direkt im Funktionsaufruf formatiert funktioniert es tadelos.

    • andreas_mtscouteu
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

     

    Könntest Du ein Template erstellen? Irgendwie will es bei mir nicht funktionieren?

     

    Danke Andreas

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen
    • andreas_mtscouteu
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Danke Leo

    • Dominik_Lenz
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo, 

    danke für die Datenbank, funktioniert super und das Kontakte erstellen geht jetzt deutlich schneller von der Hand.
    Ich bräuchte allerdings für meinen Anwendungsfall noch die zwei zusätzlichen Felder "Firma" und "Notiz". Gibt es die Möglichkeit, die mit reinzunehmen?

    Viele Grüße!

    • Dominik_Lenz
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Ah, Kommando zurück, hab es mit etwas herumprobieren und dem Info-Dokument im Webinar über den Aufbau von Funktionen selbst geschafft:

    function vcard(firma : text,notizen : text,firstname : text,lastname : text,phonehome : text,phonemobil : text,street : text,zip : text,city : text,email : text) do

    let ftime := format(now(), "YYYY-MM-DDThh:mm:ssZ");

    "BEGIN:VCARD

    VERSION:3.0

    N:" + lastname + ";" + firstname + ";;;

    FN:" + firstname + " " + lastname + "

    TEL;TYPE=HOME;TYPE=VOICE:" + phonehome + "

    TEL;TYPE=CELL;TYPE=VOICE:" + phonemobil + "

    NOTE: " + notizen + "

    ORG: " + firma + "

    ADR;TYPE=HOME:;;" + street + ";" + city + ";;" + zip + ";

    EMAIL;TYPE=INTERNET;TYPE=HOME;TYPE=PREF:" + email + "

    REV:" + ftime + "

    END:VCARD"

    end;

    VCARD := createTextFile(this, vcard(Firma, Notiz, Vorname, Nachname, text('Telefon privat'), text('Telefon Mobil'), Adresse, PLZ, Ort, text('E-Mail')), Vorname + " " + Nachname + ".vcf")

    • Andri_Flury
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo zusammen,

    Besten Dank für eure Inputs. Da mir persönlich Funktionen wegen der leserlichkeit weniger gut gefallen, habe ich das anders umgesetzt. Ausserdem habe ich noch ein paar weitere Informationen hinzugefügt.

    Basierend auf den Feldern die in Outlook zur verfügung stehen, habe ich folgende Daten integriert:

    - Vor-, Nachname

    - Anrede

    - Unternehmen

    - Webseite

    - Position

    - 5 Telefonnummern

    - 3 Adressen

    - 3 E-Mail Adressen

    - Notizen

     

    Evtl. kann mein Code für jemanden nützlich sein.

    "###########################################################################################";
    "Variablen definieren";
    "###########################################################################################";
    "================================================";
    "Name";
    "================================================";
    let myVor := Vorname;
    let myNach := Nachname;
    let myAnr := text(Anrede);
    "================================================";
    "Unternehmen";
    "================================================";
    let myUnternehmen := "Musterfirma";
    let myWeb := "www.musterfirma.ch";
    let myPos := "Musterposition";
    "================================================";
    "Telefonnummern";
    "================================================";
    let myTel1 := "111";
    let myTel2 := "222";
    let myTel3 := "333";
    let myTel4 := "444";
    let myTel5 := "555";
    "================================================";
    "Adressen";
    "================================================";
    let myAdr1 := "Adresse 1";
    let myPLZ1 := "1234";
    let myOrt1 := "Ort 1";
    let myAdr2 := "Adresse 2";
    let myPLZ2 := "5678";
    let myOrt2 := "Ort 2";
    let myAdr3 := "Adresse 3";
    let myPLZ3 := "9101";
    let myOrt3 := "Ort 3";
    "================================================";
    "Email";
    "================================================";
    let myEmail1 := "max.muster@mail1.ch";
    let myEmail2 := "max.muster@mail2.ch";
    let myEmail3 := "max.muster@mail3.ch";
    "================================================";
    "Notizen";
    "================================================";
    let myNotizen := "Testnotiz";
    "================================================";
    "Zeitstempel";
    "================================================";
    let myRev := format(now(), "YYYY-MM-DDThh:mm:ssZ");
    "###########################################################################################";
    "VCARD erstellen";
    "###########################################################################################";
    let myTxt := "BEGIN:VCARD
    VERSION:3.0
    N:" + myNach + ";" + myVor + ";;" + myAnr + ";
    FN:" + myVor + " " + myNach + "
    ORG: " + myUnternehmen + "
    TITLE: " + myPos + "
    TEL;TYPE=WORK;TYPE=VOICE:" + myTel1 + "
    TEL;TYPE=WORK;TYPE=VOICE:" + myTel2 + "
    TEL;TYPE=HOME;TYPE=VOICE:" + myTel3 + "
    TEL;TYPE=CELL;TYPE=VOICE:" + myTel4 + "
    TEL;TYPE=HOME:" + myTel5 + "
    NOTE: " + myNotizen + "
    ADR;TYPE=WORK:;;" + myAdr1 + ";" + myOrt1 + ";;" + myPLZ1 + ";
    ADR;TYPE=HOME:;;" + myAdr2 + ";" + myOrt2 + ";;" + myPLZ2 + ";
    ADR;TYPE=POSTAL:;;" + myAdr3 + ";" + myOrt3 + ";;" + myPLZ3 + ";
    EMAIL;TYPE=INTERNET:" + myEmail1 + "
    EMAIL;TYPE=INTERNET:" + myEmail2 + "
    EMAIL;TYPE=INTERNET:" + myEmail3 + "
    REV:" + myRev + "
    END:VCARD";
    "###########################################################################################";
    "VCARD speichern";
    "###########################################################################################";
    VCARD := createTextFile(this, myTxt, Vorname + " " + Nachname + ".vcf")

    • chris.3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Guten Morgen zusammen, 

    dank Euch erstmal für die tolle Anregungen! Erstelle nach dem Vorbild von Andri Flury vcard und lege diese in ein Bildfeld. In den Mobile Apps/Mac Client funktioniert dies auch wie gewünscht und schnell. Über die Webinstanz erhalte ich jedoch nur ein Ladesymbol. Die vCard wird zwar im Feld im Hintergrund angezeigt, aber die Ladezeit endet nicht. 

    Woran könnte das liegen und habt ihr hier vielleicht einen Lösungsansatz?

     

    Noch eine zweite Frage, gibt es eine Möglichkeit die vCard auf direkt zu öffnen im Trigger/Button?

    Viele Grüße

    Chris

      • Andri_Flury
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Hallo chris 

      Ich habe den Code soeben in einer Testtabelle eingefügt und getestet. Bei mir wurde erfolgreich eine VCARD im Bildfeld hinterlegt (Ninox Cloud).

      Ninox Cloud läuft 99% der Zeit einwandfrei. Gelegentlich kann es aber vorkommen, dass es zu längeren Ladezeiten kommt. Falls das Problem sich nicht innerhalb eines Tages von selbst löst, empfehle ich dir das Team neu zu starten. Das kannst du, indem du im Hauptmenu oben rechts auf das Datenbanksymbol klickst, dann auf "Ansicht" und anschliessend auf "Team neu starten".

      Zu deiner zweiten Frage:
      Habe ich dich richtig verstanden, du würdest gerne die VCARD erstellen und diese sogleich herunterladen? Soweit ich weiss, git es keinen Download-Befehl via Skript.

      Liebe Grüsse
      Andri

    • chris.3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallon Andri,

    dank Dir für die Rückmeldung. Dann muss ich wohl weiter schauen woran es bei uns hängt. 

    Viele Grüße
    Chris 

Content aside

  • vor 1 JahrZuletzt aktiv
  • 11Antworten
  • 3070Ansichten
  • 2 Folge bereits