Laden...

Idee für Konvertierung gesucht

Erstellt von Loewchen0507 vor 15 Jahren Letzter Beitrag vor 15 Jahren 2.282 Views
Loewchen0507 Themenstarter:in
292 Beiträge seit 2006
vor 15 Jahren
Idee für Konvertierung gesucht

Hi Leute,

ich habe mir ein kleines Tool geschrieben, einen Windows Dienst, dieser lädt aus einer Datenbanktabelle verschiede Werte und Mengen. Nun sind diese aber im Textformat gespeichert. Die Werte werden in dem Programm in dem ich Sie dann anzeigen lasse (es steht ebenfalls ein Datenbankserver im Hintergrund) auch angezeigt. Dort sind die Felder ebenfalls Textfelder, kann ich aber ändern wenn ich will. Mein Problem ist die Anzeige. Ich möchte gerne das die Werte mit tausendertrennzeichen, aber ohne Nachkommastellen angezeigt werden. Andere Werte möchte ich ebenfalls mit tausendertrennzeichen, aber auch mit genau 2 Nachkommastellen angezeigt haben.

Hier mal ein paar Datenbeispiele (nur tausendertrennzeichen):
Ich habe ich will haben
12345 12.345
12345,0 12.345
12345,12 12.345
12345,123 12.345

Hier mal ein paar Datenbeispiele (tausendertrennzeichen und zwei nachkommastelklen):
Ich habe ich will haben
12345 12.345,00
12345,1 12.345,10
12345,12 12.345,12
12345,123 12.345,12

ich habe momentan keinerlei Ansatz, wie ich das machen könnte... das ganze müsste ich über 15 tabellen machen... und in jeder tabelle sind zw. 5 und 10 solcher konvertierungen nötig.

hat jemand einen ansatz, wie man das machen könnte, ohne spaghetticode zu schreiben? Habe auch eine Config, die ich gegebenenfalls erweitern kann. Mir fehlt momentan jegliche art von idee.

LG Loewchen

Loewchen0507 Themenstarter:in
292 Beiträge seit 2006
vor 15 Jahren
Nachtrag

SQL Statement dafür bekomme ich auch momentan nicht hin... habe schon überlegt eine prozedur zu schreiben... oder einen trigger... aber der trigger kostet richtig viel systemzeit...

R
234 Beiträge seit 2007
vor 15 Jahren

Mit Tausender Trennzeichen:


string.Format("{0:0,0}", zahl);

Mit Tausender Trennzeichen und zwei Nachkommastellen:


string.Format("{0:n}");

/Edit: Öh, es geht um Datenbanken? Mist ...

D
496 Beiträge seit 2005
vor 15 Jahren

das die zahlen als text in der db gespeichert sind ist schon mal ganz schlecht, das solltest du ändern auf einen entsprechenden datatyp (je nach DB und werten)
wenn du dass gemacht hast kannst du dir in deiner gui die werte ja so anzeigen lassen wie du sie haben möchtest (kommt auf das control an mit dem du die daten anzeigst)

"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."

Loewchen0507 Themenstarter:in
292 Beiträge seit 2006
vor 15 Jahren

hm... da habe ich was vergessen zu erwähnen...
die datenbanken gehören zu zwei "fremdprogrammen" somit kann ich beim anzeigen der gui nichts ändern... aber ich kann natürlich in der datenbank rumfurwerken... in der datenbank aus der ich die daten lese, kann ich die werte sogar als decimal abspeichern... aber in der datenbank, in die ich die werte schreibe leider nicht... wenn ich dort ein datenbankfeld von text auf decimal oder float oder int stelle, meckert er rum und das programm geht nicht mehr.

Daher habe ich gedacht, ich schreibe in diese textfelder die kommas und punkte irgendwie mit rein... ich find das nur blöd innerhalb der routine wo ich die werte rüberhole noch einzubauen... das ist einfach viel zu umfangreich und artet in spaghetticode aus...

beim transfer habe ich zwei datasets:
die werte schiebe ich wie folgt rüber:


if (Update)
{
    //Adresse schon vorhanden
    DrDes = Des.Tables[0].Rows[0];
}
else
{
    //Adresse noch nicht vorhanden
    DrDes = Des.Tables[0].NewRow();
}
for (int j = 0; j < Des.Tables[0].Columns.Count - 1; j++)
{
    DrDes[j] = DrSource[j];
}

if (!Update)
{
    Des.Tables[0].Rows.Add(DrDes);
}

DataAdapter.AcceptChangesDuringUpdate = true;
DataAdapter.ContinueUpdateOnError = true;
DataAdapter.FillLoadOption = LoadOption.OverwriteChanges;
DataAdapter.Update(Des.Tables[0]);

das ist mal der zentrale ausschnitt... steht natürlich noch mehr drum rum...

Loewchen

S
35 Beiträge seit 2009
vor 15 Jahren

Hallo,

hmmm ... also das anzeigende Programm kannst du nicht ändern, die Datenbank und die enthaltenen Daten aber schon!?
Dann würde ich erst einmal anhand von ein paar Beispielen ausprobieren, ob die Anzeige überhaupt richtig umgesetzt wird, wenn du einen String ausliest. Es könnte ja sein, dass das Programm die Inhalte selber wieder umformatiert. Dann hättest du keine Chance.
Wenn das klappt, kannst du ja einfach die Werte wie von rastalt vorgeschlagen umformatieren und abspeichern.
Schön ist das natürlich nicht, Zahlen als string abzuspeichern, kostet Speicherplatz und Performance.

Viele Grüße Ske

Loewchen0507 Themenstarter:in
292 Beiträge seit 2006
vor 15 Jahren

habe einiges ausprobiert... festgestellt habe ich, dass der string so angezeigt wird wie er da ist... schade ist es natürlich, dass es keine andere möglichkeit gibt... wollte die schnittstelle nicht über nacht, sondern während der benutztung laufen lassen... dass ist nun nicht mehr möglich... da dass übertragen inklusive konvertierung nun ca. 15 minuten läuft... aber dann muss es wohl so sein...

dennoch, danke für eure hilfe... das problem ist soweit gelöst... 😃

LG Loewchen