Autor Beitrag
alexbrodi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23


Delphi und BCB 2006
BeitragVerfasst: Mi 04.03.09 12:15 
Hallo,

ich habe eine maskedTextBox mit einer MSSQL Datenbank verknüpft.
Das Feld hat den Datentyp DECIMAL (15,6).
Ich möchte das in der maskedTextBox die Zahlen so dargestellt werden. 1.000,00 €
Versucht habe ich schon #.###,## $ und #,###.##. Bei 9 € werden so angezeigt 9.000,00 € oder 9,000.00 €.
Ich verwende Visual Studio 2008.

Ist das ein Bug?

Gruß

Alex
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 04.03.09 13:26 
Ein Bug ist in dem Ding enthalten, was vor dem PC sitzt. :wink:

Wenn Du in der SDk-Doku/MSDN unter MaskedTextBox.Mask nachliest, wirst Du erkennen, was Du für obligatorische Ziffern, für Dezimaltrenner und für Tausendertrenner verwenden musst. Dort steht dann auch: "Das eigentliche für die Anzeige verwendete Zeichen " legt der FormatProvider fest.

Eine Verknüpfung mit der Datenbank ist überhaupt nicht möglich. Du kannst allenfalls mit einer Spalte einer DataTable verbinden, und die bekommt per DbDataAdapter oder DbCommand die Verbindung mit der Datenbank.

Gruß Jürgen
alexbrodi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23


Delphi und BCB 2006
BeitragVerfasst: Mi 04.03.09 16:02 
@Jürgen

das man eine maskedTextBox an eine Spalte von einer Tabelle verknüpft ist klar.
DataBindings - Text -- Tabellenname - Spaltenname.

In der Doku steht z.B. $999,999.00 diese Variante.

Letztlich wird die erste Ziffer am ersten linken Platzhalter eingefügt und alle anderen Ziffer von links nach rechts aufgefüllt.

Gruß

Alex
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 04.03.09 18:10 
user profile iconalexbrodi hat folgendes geschrieben Zum zitierten Posting springen:
Ist das ein Bug?
Nein, MaskedTextBox besitzt einfach keine spezielle Logik für Preis-Formatierungen. Das Binding weist Text den Wert "9" (also einen String) zu und der wird eben irgendwie in die Maske gepresst. Wenn du keine gewöhnliche TextBox benutzen willst, müsstest du den Wert beim Binden also in "0009" umwandeln.

_________________
>λ=
alexbrodi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23


Delphi und BCB 2006
BeitragVerfasst: Mi 04.03.09 19:37 
Was ich benutze Textbox oder maskedTextBox ist mir egal.
Ich hätte gerne eine schöne und übersichtliche Darstellung der Werte.
Wenn ich das einer Textbox die Darstellung beibringen kann ist das auch OK.

Größere Beträge sind mit 1000er Punkt einfach übersichtlicher.
alexbrodi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23


Delphi und BCB 2006
BeitragVerfasst: Mi 11.03.09 16:55 
Hallo,

Lösung gefunden.

Das geht auch mit einer textBox und DB Anbindung.

Binding bind = new System.Windows.Forms.Binding("Text", this.db_source, "db_Feld", true);
bind.FormatString = "C"; //oder N P ...
this.textBox.DataBindings.Add(bind);

Gruß

Alex