Variante des Typs (UnicodeString) konnte nicht in Typ (Double) konvertiert werden
Moderatoren: Raffenberg, A. Schüller, Pfotenhauer
Variante des Typs (UnicodeString) konnte nicht in Typ (Double) konvertiert werden
Liebe Forumsmitglieder,
ich möchte den angehängten Report benutzen und erhalte die Fehlermeldung:
Fehler bei der Ausgabe:
Programm:
Seite1.La_JgStOnGetText
konnte nicht ausgeführt werden
Variante des Typs (UnicodeString) konnte nicht in Typ (Double)
konvertiert werden
Der Fehler tritt nur bei Wiederholern bzw. nach einem Schulwechsel auf. Könnte mir vielleicht jemand erklären, wo ich was verändern muss, damit ich den Report auch bei diesen SuS verwenden kann?
Vielen Danke im Voraus.
M. Timpert
ich möchte den angehängten Report benutzen und erhalte die Fehlermeldung:
Fehler bei der Ausgabe:
Programm:
Seite1.La_JgStOnGetText
konnte nicht ausgeführt werden
Variante des Typs (UnicodeString) konnte nicht in Typ (Double)
konvertiert werden
Der Fehler tritt nur bei Wiederholern bzw. nach einem Schulwechsel auf. Könnte mir vielleicht jemand erklären, wo ich was verändern muss, damit ich den Report auch bei diesen SuS verwenden kann?
Vielen Danke im Voraus.
M. Timpert
- Dateianhänge
-
- Schülerstammblatt_Abiturienten_ A3_V05a.rtm
- (638 KiB) 5-mal heruntergeladen
-
- Fachberater*in
- Beiträge: 740
- Registriert: Montag 29. Oktober 2018, 20:45
- Schulform: Gesamtschule
- Motto: Keine Panik
Re: Variante des Typs (UnicodeString) konnte nicht in Typ (Double) konvertiert werden
Das Problem wird erzeugt, wenn es eine vorherige Schule gibt, die einen Entlassjahrgang als "String" angibt, in der Regel dürfte das EF, Q1 und Q2 sein.
Der betreffende Code ist hier und versucht, den Jahrgang um eins zu erhöhen. Ich vermute, dass hat mit G8 zu tun, wo der Jahrgang "10" eigentlich ja die EF ist, daher wird ERST um 1 erhöht, und DANN werden 11, 12 und 13 EF, Q1 und Q2 zugeordnet.
Im Subreport1 -> Berechnungen -> Ereignisse, dann im Label La_JgSt.
Und ich vermute, dass die Zeile "lsJahrgang := Schueler['LSJahrgang'] + 1;" das Problem erzeugt (also die Annahme, dass in Schueler['LSJahrgang'] eine Integer-Zahl steht, die Jahrgänge liegen eventuell aber als String ("Normale Zeichenkette") vor, nicht als Zahl ("Integer"), der Code nimmt aber an, dass die Jahrgänge ein Zahl sind, mit der zu rechnen ist.
Machen Sie einmal eine Kopie der Datei und kommentieren Sie die Zeilen lsJahrgang := Schueler['LSJahrgang'] + 1; und else Text := IntToStr(lsJahrgang); einfach aus, indem Sie "//" davor schreiben.
Hier müsste man testen, ob das auch mit G8 noch korrekt (genug;)) funktioniert.
Sonst müsste man eventuell noch einmal konkret schauen und neuen Code schreiben, der auch mit G8 und Strings zurecht kommt.
Ich rate an dieser Stelle aber gerade nur.
Der betreffende Code ist hier und versucht, den Jahrgang um eins zu erhöhen. Ich vermute, dass hat mit G8 zu tun, wo der Jahrgang "10" eigentlich ja die EF ist, daher wird ERST um 1 erhöht, und DANN werden 11, 12 und 13 EF, Q1 und Q2 zugeordnet.
Im Subreport1 -> Berechnungen -> Ereignisse, dann im Label La_JgSt.
Code: Alles auswählen
var
lsJahrgang: integer;
begin
Text := '';
lsJahrgang := Schueler['LSJahrgang'] + 1;
case lsJahrgang of
11: Text := 'EF';
12: Text := 'Q1';
13: Text := 'Q2';
else Text := IntToStr(lsJahrgang);
end;
end;
Machen Sie einmal eine Kopie der Datei und kommentieren Sie die Zeilen lsJahrgang := Schueler['LSJahrgang'] + 1; und else Text := IntToStr(lsJahrgang); einfach aus, indem Sie "//" davor schreiben.
Hier müsste man testen, ob das auch mit G8 noch korrekt (genug;)) funktioniert.
Sonst müsste man eventuell noch einmal konkret schauen und neuen Code schreiben, der auch mit G8 und Strings zurecht kommt.
Ich rate an dieser Stelle aber gerade nur.
mit freundlichen Grüßen
Felix Frodermann
Fachberatung, Moderation & SVWS-Dokumentation
Felix Frodermann
Fachberatung, Moderation & SVWS-Dokumentation
-
- Fachberater*in
- Beiträge: 1006
- Registriert: Montag 3. Dezember 2018, 18:37
- Schulform: Gymnasium (a.D.)
Re: Variante des Typs (UnicodeString) konnte nicht in Typ (Double) konvertiert werden
Hallo M. Timpert,
vermutlich ist das Datenfeld Entlassjahrg. bei der zuletzt besuchten Schule auf der Karte Schulbesuch leer.
Das Datenfeld Schueler['LSJahrgang'] ist vom Typ String (Größe 2).
Das passt irgendwie nicht zum o.a. Code!
vermutlich ist das Datenfeld Entlassjahrg. bei der zuletzt besuchten Schule auf der Karte Schulbesuch leer.
Das Datenfeld Schueler['LSJahrgang'] ist vom Typ String (Größe 2).
Das passt irgendwie nicht zum o.a. Code!
Viele Grüße aus O.-E.
Wolfgang Maßmann
Wolfgang Maßmann
- wschrewe
- Fachberater*in
- Beiträge: 1882
- Registriert: Dienstag 25. September 2018, 17:36
- Schulform: BK (Pensionär)
- Kontaktdaten:
Re: Variante des Typs (UnicodeString) konnte nicht in Typ (Double) konvertiert werden
Versuchen Sie es mal mit
Code: Alles auswählen
var
lsJahrgang: integer;
begin
Text := '';
// lsJahrgang := Schueler['LSJahrgang'] + 1;
lsJahrgang:=StrToIntDef(Schueler['LSJahrgang'],-1) + 1;
case lsJahrgang of
0 : Text:='??';
11: Text := 'EF';
12: Text := 'Q1';
13: Text := 'Q2';
else Text := IntToStr(lsJahrgang);
end;
Mit freundlichen Grüßen
Walter Schrewe
"If all else fails, read the instructions" (Donald E. Knuth, letzter TeX - Hilfehinweis)
Walter Schrewe
"If all else fails, read the instructions" (Donald E. Knuth, letzter TeX - Hilfehinweis)
-
- Fachberater*in
- Beiträge: 1006
- Registriert: Montag 3. Dezember 2018, 18:37
- Schulform: Gymnasium (a.D.)
Re: Variante des Typs (UnicodeString) konnte nicht in Typ (Double) konvertiert werden
Hallo Herr Schrewe,
irritiert hat mich, dass hier der Entlassjahrgang '04' (der alten Schule) korrekt als Jahrgangsstufe 5 (der jetzigen Schule) ausgegeben wird.
Mit strtoint gab es auch dieses Ergebnis.
irritiert hat mich, dass hier der Entlassjahrgang '04' (der alten Schule) korrekt als Jahrgangsstufe 5 (der jetzigen Schule) ausgegeben wird.
Mit strtoint gab es auch dieses Ergebnis.
Viele Grüße aus O.-E.
Wolfgang Maßmann
Wolfgang Maßmann
- wschrewe
- Fachberater*in
- Beiträge: 1882
- Registriert: Dienstag 25. September 2018, 17:36
- Schulform: BK (Pensionär)
- Kontaktdaten:
Re: Variante des Typs (UnicodeString) konnte nicht in Typ (Double) konvertiert werden
'04' wird von StrToInt als gültige Darstellung eines Integers erkannt. StrToIntDef fängt nur die Fälle ab, wo das nicht der Fall ist, z.B. weil der zu konvertierende String leer oder eine ungültige Zahlendarstellung ist.
Mit freundlichen Grüßen
Walter Schrewe
"If all else fails, read the instructions" (Donald E. Knuth, letzter TeX - Hilfehinweis)
Walter Schrewe
"If all else fails, read the instructions" (Donald E. Knuth, letzter TeX - Hilfehinweis)
-
- Fachberater*in
- Beiträge: 1006
- Registriert: Montag 3. Dezember 2018, 18:37
- Schulform: Gymnasium (a.D.)
Re: Variante des Typs (UnicodeString) konnte nicht in Typ (Double) konvertiert werden
Klar. Aber im oben um 10:28 von Herrn Frodermann zitierten Code wird dieser String sogar direkt als Integer akzeptiert. Für mich entgegen aller Erfahrung merkwürdig.'04' wird von StrToInt als gültige Darstellung eines Integers erkannt.
Viele Grüße aus O.-E.
Wolfgang Maßmann
Wolfgang Maßmann
- wschrewe
- Fachberater*in
- Beiträge: 1882
- Registriert: Dienstag 25. September 2018, 17:36
- Schulform: BK (Pensionär)
- Kontaktdaten:
Re: Variante des Typs (UnicodeString) konnte nicht in Typ (Double) konvertiert werden
Eigentlich nicht. Die Funktion der Pipeline, die den Feldwert ermittelt, hat als Ergebnistyp "Variant" und versucht, diesen Wert in einen mit der Zuweisungsvariablen kompatiblen Wert zu wandeln. Bei '04' etc. gelingt das, wenn der Feldwert etwas nichtnumerisches oder leer ist, eben nicht.W.Maßmann hat geschrieben: Dienstag 8. Juli 2025, 18:12Für mich entgegen aller Erfahrung merkwürdig.
Mit freundlichen Grüßen
Walter Schrewe
"If all else fails, read the instructions" (Donald E. Knuth, letzter TeX - Hilfehinweis)
Walter Schrewe
"If all else fails, read the instructions" (Donald E. Knuth, letzter TeX - Hilfehinweis)
-
- Fachberater*in
- Beiträge: 1006
- Registriert: Montag 3. Dezember 2018, 18:37
- Schulform: Gymnasium (a.D.)
Re: Variante des Typs (UnicodeString) konnte nicht in Typ (Double) konvertiert werden
Hallo Herr Schrewe,
besten Dank. Dann habe ich wieder etwas dazu gelernt.
besten Dank. Dann habe ich wieder etwas dazu gelernt.
Viele Grüße aus O.-E.
Wolfgang Maßmann
Wolfgang Maßmann