Unit (Mengeneinheit) umwandeln
Sascha Balke
Hallo Zusammen,ich versuche aus unserem Crystal Reports nach und nach einzelne Funktionen und Formatierungen in den CS Designer zu übernehmen.
Teilweise ist es mir auch schon gelungen, jedoch scheitere ich grad an der "Umformatierung" der Unit (Mengeneinheit).
Hier mein Versuch:
If ({DocumentRow("unitMsr")} = 1) Then
Select {DocumentRow("unitMsr"}
Case 'Ae': 'Arbeitseinheit'
Case 'ST': 'Stück'
Case 'Lizen': 'Lizenz'
Case 'AP': 'Anfahrtspauschale'
Case 'MT': 'Manntag'
Case 'Monat': 'Monat'
Case 'Minut': 'Minute'
Case 'STD': 'Stunde'
Case 'KM': 'Kilometer'
Else
Select {DocumentRow("unitMsr"}
Case 'Ae': 'Arbeitseinheiten'
Case 'ST': 'Stück'
Case 'AP': 'Anfahrtspauschalen'
Case 'MT': 'Manntage'
Case 'Lizen': 'Lizenzen'
Case 'Monat': 'Monate'
Case 'Minut': 'Minuten'
Case 'STD': 'Stunden'
Case 'KM': 'Kilometer'
Habt Ihr eine Idee, wo der Fehler liegt?
Danke schonmal im voraus
Sascha
Manuel Marhold
Hi Sasha,SELECT CASE WHEN ({DocumentRow("unitMsr")} = 1) THEN
(SELECT CASE {DocumentRow("unitMsr")}
WHEN 'Ae' THEN 'Arbeitseinheit'
ELSE 'ST' THEN 'Stück'
ELSE 'Lizen' THEN 'Lizenz'
ELSE 'AP' THEN 'Anfahrtspauschale'
ELSE 'MT' THEN 'Manntag'
ELSE 'Monat' THEN 'Monat'
ELSE 'Minut' THEN 'Minute'
ELSE 'STD' THEN 'Stunde'
ELSE 'KM' THEN 'Kilometer'
END)
ELSE
(SELECT CASE {DocumentRow("unitMsr")}
WHEN 'Ae' THEN 'Arbeitseinheiten'
ELSE 'ST' THEN 'Stück'
ELSE 'AP' THEN 'Anfahrtspauschalen'
ELSE 'MT' THEN 'Manntage'
ELSE 'Lizen' THEN 'Lizenzen'
ELSE 'Monat' THEN 'Monate'
ELSE 'Minut' THEN 'Minuten'
ELSE 'STD' THEN 'Stunden'
ELSE 'KM' THEN 'Kilometer'
END)
END
sollte so gehen, nur beachten: "{DocumentRow("unitMsr")}" wird nicht gehen. Wenn du die Abfrage über LD.QueryData() übergibst, muss das ganze in "" und anstelle von "{DocumentRow("unitMsr")}" "" & DocumentRow("unitMsr") & "".
Gruß
Manuel
Sascha Balke
Hallo Manuel,ich habe im Bericht mir das Feld "Unit" genommen und unter Value, deinen Lösungsvorschlag hinterlegt. Bevor ich eine Änderung vorgenommen hatte, stand der Wert:
DocumentRow("unitMsr")
dort drin.
Da dein Beispiel nicht funktionierte, habe ich es versucht analog so umzusetzen, das es mit deiner Anmerkung passen sollte.
Select Case When ({"" & DocumentRow("unitMsr") & ""}) = 1) Then
(Select Case {"" & DocumentRow("unitMsr"} & ""}
When "Ae" Then "Arbeitseinheit"
Else "ST" Then "Stück"
Else "Lizen" Then "Lizenz"
Else "AP" Then "Anfahrtspauschale"
Else "MT" Then "Manntag"
Else "Monat" Then "Monat"
Else "Minut" Then "Minute"
Else "STD" Then "Stunde"
Else "KM" Then "Kilometer"
END)
ELSE
(Select Case {"" & DocumentRow("unitMsr") & ""}
When "Ae" Then "Arbeitseinheiten"
Else "ST" Then "Stück"
Else "AP" Then "Anfahrtspauschalen"
Else "MT" Then "Manntage"
Else "Lizen" Then "Lizenzen"
Else "Monat" Then "Monate"
Else "Minut" Then "Minuten"
Else "STD" Then "Stunden"
Else "KM" Then "Kilometer"
END)
END
Habe jeweils nach Eingabe der Scripts "Check Scripts" aufgewählt und erhalte Fehlermeldungen. Primär wiederholt sich immer die Meldung
[u]Vor "Else" muss ein zugehöriges "If" oder ElseIf" stehen.[/u]
Was du mit "LD.QueryData()" meinst, verstehe ich grad nicht. :(
Hast du noch eine Idee bzw. was mache ich falsch??
Gruß
Sascha
Manuel Marhold
Hi Sascha,nun, laut deinem Code ist das SQL.. und das wäre dann eine Query die du an LD.QueryData() übergeben musst um einen Wert zurück zu bekommen.
Wenn das nicht SQL ist, dann muss das ganze nat. anders gemacht werden:
IF (DocumentRow("unitMsr") = 1) THEN
SELECT CASE {DocumentRow("unitMsr")}
CASE "Ae" : "Arbeitseinheit"
CASE "ST" : "Stück"
CASE "Lizen" : "Lizenz"
CASE "AP" : "Anfahrtspauschale"
CASE "MT" : "Manntag"
CASE "Monat" : "Monat"
CASE "Minut" : "Minute"
CASE "STD" : "Stunde"
CASE "KM" : "Kilometer"
END SELECT
ELSE
SELECT CASE {DocumentRow("unitMsr")}
CASE "Ae" : "Arbeitseinheiten"
CASE "ST" : "Stück"
CASE "AP" : "Anfahrtspauschalen"
CASE "MT" : "Manntage"
CASE "Lizen" : "Lizenzen"
CASE "Monat" : "Monate"
CASE "Minut" : "Minuten"
CASE "STD" : "Stunden"
CASE "KM" : "Kilometer"
END SELECT
END IFBedenke hierbei: Der Text (z.B. "Stück") wird nicht zurückgegeben oder irgendwo hingeschrieben. Wenn du den Text in eine Variable schreiben willst, musst du den Text um "Variable = " vorne ergänzen (z.B. "CASE "ST" : Variable = "Stück"")
Gruß
Manuel
Sascha Balke
Hallo Manuel,ich habe jetzt folgendes Script (mit Hilfe), welches auch nicht mehr auf einen direkten Fehler läuft.
Dim ItemUnit As String
If (DocumentRow("Quantity") = 1) Then
Select Case DocumentRow("unitMsr")
Case "Ae" : ItemUnit= "Arbeitseinheit"
Case "ST" : ItemUnit= "Stück"
Case "Lizen" : ItemUnit= "Lizenz"
Case "AP" : ItemUnit= "Anfahrtspauschale"
Case "MT" : ItemUnit= "Manntag"
Case "Monat" : ItemUnit= "Monat"
Case "Minut" : ItemUnit= "Minute"
Case "STD" : ItemUnit= "Stunde"
CASE "KM" : ItemUnit= "Kilometer"
End Select
Else
Select Case DocumentRow("unitMsr")
Case "Ae" : ItemUnit= "Arbeitseinheiten"
Case "ST" : ItemUnit= "Stück"
Case "AP" : ItemUnit= "Anfahrtspauschalen"
Case "MT" : ItemUnit= "Manntage"
Case "Lizen" : ItemUnit= "Lizenzen"
Case "Monat" : ItemUnit= "Monate"
Case "Minut" : ItemUnit= "Minuten"
Case "STD" : ItemUnit= "Stunden"
Case "KM" : ItemUnit= "Kilometer"
END SELECT
End If
Das Problem ist jetzt, das nur der Name von der Textbox, in dem Fall "Unit" angedruckt und nicht die gewünschten Ergebnisse. :(
Hast du diesbezüglich noch eine Idee?
Gruß
Sascha
p.s.
Das Script habe ich unter "Script > GenerateScript" hinterlegt!
Manuel Marhold
Hi Sascha,das sieht ganz gut aus.
jetzt musstenoch folgende Code am Ende einfügen, damit der Wert, den du ausliest, in die textbox geschrieben wird.
DeineTextBox.Text = ItemUnit
Und dann musst du bei der TextBox noch bei den DataBindungs den Eintrag in "Value" entfernen.
Gruß
Manuel
Sascha Balke
Hallo Manuel,vielen Dank für deine Unterstützung.
Soweit ich es testen konnte, funktioniert es wie gewünscht. :D
Gruß
Sascha
0
Please sign in to leave a comment.
Comments
0 comments