PDA

View Full Version : "1000er Punkte" bei SQL-Result



Oli001
13-03-12, 11:37
Hallo, gibt´s ne Möglichkeit per SQL eine Zahl so zu formatieren das sie im Format xxx.xxx.xxx,xx zurückgegeben wird?

Danke Oli

Fuerchau
13-03-12, 11:41
SQL unterstützt keine Editierung, da dies vom jeweiligen Programm selber gemacht werden muss.
Wozu ist das auch nötig ?

Du kannst zwar per CHAR(NumField) eine Zeichendarstellung machen, allerdings ist die Ausgabe linksbündig ohne Vornullen, das Dezimalzeichen ist von der Job-Umgebung abhängig (Punkt/Komma).

Oli001
13-03-12, 11:51
Naja... "nötig" ist es natürlich net. Ein Dataset wird gefüllt und einem Grid als Source übergeben. Wenn da die Werte schon richtig drinstünden müsste ich nicht jedes Grid "manuell" bearbeiten und formatieren. Es sind halt doch 32 Stück...

Danke für die Info. Grüße Oli

Fuerchau
13-03-12, 11:55
Allerdings wären dann die Daten im Grid nicht mehr numerisch und das Rechnen ggf. sehr aufwändig.
Was die Formatierung im Grid angeht so gibts da sicherlich ein paar Automatismen zur Formatierung und Erkennung des Datentypes. Das hängt sicherlich von der Programmiersprache ab.

Wenn ich in VB.NET ein DataGrid nehme, werden alle Felder automatisch entsprechend der Spracheinstellung formatiert, ich muss da gar nichts "manuell" machen.

Oli001
13-03-12, 12:00
Stimmt schon, aber ich muss nicht damit rechnen. Wenn im VB die Zahlen mit 1000er Stellen angezeigt werden, wird das über die Systemsteuerung (Sprach u. Regioninfos) übernommen. Nur kann ich nicht davon ausgehen, dass das überall richtig eingestellt ist. Also muss ich es mit string.Format("{0:n}",Wert) erzwingen. Damit habe ich aber meine Rechnenbarkeit und Sortierbarkeit ebenfalls verloren.

Ist nicht so dramatisch. Wäre halt schön gewesen, wenns einfach gegangen wäre

Grüße Oli

andreaspr@aon.at
13-03-12, 12:18
Ich bild mir ein auch mal gesehen zu haben, dass für ein Grid default-Formate hinterlegt werden können. Ohne dieses auf eine spezielle Spalte festzulegen, sondern allgemein für das gesamte Grid.

So auf die art:
Wenn irgendeine Spalte vom Typ INT ==> Format('#.###,00')

Aber wie gesagt, bilde mir ein mich daran erinnern zu können, wie ich damals mit Grids gearbeitet habe.

lg Andreas

Fuerchau
13-03-12, 12:27
Das Ausgabe-Format wird auch nicht auf der jeweiligen Zelle festgelegt sondern sollte auf dem Column-Objekt des Grids festgelegt werden (DisplayFormat o.ä.).

Dadurch entfällt das Formatieren für das Grid und der ursprüngliche Wert bleibt erhalten, man kann damit rechnen, sortieren, filtern und Summenzeilen o.ä. anzeigen.

Es gibt für editierbare Grids meist auch entsprechende EditFormat-Eigenschaften.

Und was die Windows-Einstellungen angeht, so kann man da nicht "nichts" einstellen. Durch die Sprache des Users wird eigentlich alles korrekt gemacht und man sollte hier nichts erzwingen.

Chris.jan
14-03-12, 13:02
Wenn man mit WRKQRY arbeitet, dann kann man da schon ein Ausgabeformat definieren. Dann würdest Du erst die Ergebnisdaten via SQL erstellen und dann nur noch mit RUNQRY ausgeben.

Es geht auch wenn man sich ein Druckprogramm und ein Printerfile erstellt, aber ohne Programmierkenntnisse hat das kein Zweck.

Wenn's "schön" werden soll dann kann man auch per Excel was zaubern und dann dynamisch auf eine Datei in der As/400 per ODBC verlinken.

Es kommt eben ganz drauf an was Du willst/brauchst.

Fuerchau
14-03-12, 15:06
@Chris
Wenn du genau gelesen hättest, wird hier ja bereits mit ODBC und .NET-Programmierung gearbeitet.
Daher ist dein Beitrag zwar nett, aber leider am Thema vorbei :).