Fehlermeldungen: unterschiedliche Datentypen
Bis eben bin ich davon ausgegangen, dass
first(select Tabelle)
und
create Tabelle
den gleichen Datentypen, nämlich einen Record zurückliefern. Bei dem nachfolgenden Skript soll geprüft werden, ob ein Personendatensatz mit bestimmten Informationen schon vorhanden ist. Wenn keiner gefunden wird, soll ein Datensatz angelegt werden. Das Skript wirft aber eine Fehlermeldung aus, dass der Datentyp der Variable customer und die Rückgabe des create() nicht gleich wären.
let customer := first(select Kundendaten where Vorname = item(split(data, ","), 2)
and Nachname = item(split(data, ","), 3) and (Telefon = item(split(data, ","), 4)
or 'E-Mail' = item(split(data, ","), 5)));
if customer = null then
customer := (create Kundendaten);
end;
Jetzt stehe ich völlig auf dem Schlauch und bin für eure Hilfe dankbar.
Grüße, Ralf
4 Antworten
-
Servus !
Wie wär's denn (sinngemäß, versteht sich) mit einer etwas anderen "Grundkonstruktion" im Sinne von:
let rstAnzahl := cnt(select Mitglieder where Vorname = "Willi" and Nachname = "Meier");
if rstAnzahl= null then
let newRec := create Mitglieder;
newRec.Vorname := "Willi"
end;Also hier einfach erst einmal mit einer anderen Variable die Anzahl der Datensätze prüfen.
let Anzahl := cnt(select Kundendaten where Vorname = item(split(data, ","), 2)
and Nachname = item(split(data, ","), 3) and (Telefon = item(split(data, ","), 4)
or 'E-Mail' = item(split(data, ","), 5)));etc.
Grüße und HTH
HF
-
Hallo Ralf. Der Typvergleich erfolgt gleich nach if und gleich nach then. D.h. Du vergleichst
if customer -> type: nid then customer := (create Kundendaten) -> type: void, weil kein echter Typ, sondern eine Zuweisung
Besser wäre:
let customer := first(select Kundendaten where Vorname = item(split(data, ","), 2) and Nachname = item(split(data, ","), 3) and (Telefon = item(split(data, ","), 4) or 'E-Mail' = item(split(data, ","), 5))); if customer = null then create Kundendaten end; customer := last(select Kundendaten);
Mirko
-
Wenn man sich unsicher ist um welchen Datentyp es sich handelt, ist die Funktion debugValueInfo() sehr hilfreich.
Content aside
- vor 1 JahrZuletzt aktiv
- 4Antworten
- 57Ansichten
-
4
Folge bereits