Laden...

[gelöst] Decimal in Embedded Firebird

Erstellt von User4999 vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.551 Views
U
User4999 Themenstarter:in
134 Beiträge seit 2006
vor 17 Jahren
[gelöst] Decimal in Embedded Firebird

Hallo,

ich hab nen Problem beim Decimal in die DB schreiben. Ich bekomme einen Wert der definitiv Decimal ist bzw entspricht aber in einem String vorliegt. Ich habe versucht diesen String über Parameter an die DB zu übergeben, ich hab auch versucht über Convert.ToDecimal und mit Decimal.Parse(). Ebenfalls versucht hab ich als Trennzeichen . oder , zu benutzen. nichts hat geholfen. Entweder ich hab den Wert vor dem Trennzeichen oder den Wert nach dem Trennzeichen (optisch siehts dann aus wie Ganzzahl) in der DB stehen.
Hat jemand eine Ahnung woran das eventuell liegen könnte und was ich noch probieren sollte?

Gruß Zocker

M
104 Beiträge seit 2005
vor 17 Jahren

Hallo Zocker,

anbei ein Beispiel, mit dem Du sowohl Decimal- als auch Double-Werte in eine Firebird-DB schreiben kannst.

Wenn die Datenbank entsprechend konfiguriert ist, dann schluckt sie eigentlich alles, was sie bekommt.

Gruß
Morpheus

U
User4999 Themenstarter:in
134 Beiträge seit 2006
vor 17 Jahren

Hi Morpheus,

ich habs genauso gemacht wie in dem Beispiel. Das Problem ist aber leider noch nicht behoben. Wobei ich noch einmal darauf hinweisen möchte das der Wert bei mri in einem String steht. Selbst wenn ich das jetzt umkonvertiere und erstmal in eine decimal Variable schreibe bleibt das Ergebnis gleich, weil ich hab überwacht was bei den verschiedenen Umkonvertierungen durch die .Net Funktionen rauskommt: Das Ergebnis war genau das gleiche.

Gruß Zocker

M
104 Beiträge seit 2005
vor 17 Jahren

Original von Zocker
...Wobei ich noch einmal darauf hinweisen möchte ... Hallo Zocker,

bist Du jetzt unter die Politiker gegangen? 8o

Damit sollte Dein Problem gelöst sein:

/// <summary>
		/// Diese Methode prüft auf ein vorhandenes Komma in den Messwerten und ersetzt es durch einen
		/// Punkt. Hiermit wird die berühmt berüchtigte Komma-Punkt-Falsche-Zahl-Ermittlungs-Problematik
		/// umgangen. Die "Punktzahlen" lassen sich durch die InvariantCulture problemlos in Double-Werte
		/// umwandeln.
		/// </summary>
		/// <param name="input">String, aus dem ein Zahlenwert werden soll.</param>
		/// <param name="factor">Umrechnungsfaktor.</param>
		/// <returns>Die Zahl.</returns>
		public static double CheckDouble(string input, double factor) {
			if (!String.IsNullOrEmpty(input)) {
				double myDouble = 0D;
				string dummy = input.Replace(',', '.');
				try {
					myDouble = double.Parse(dummy, NumberStyles.Float, CultureInfo.InvariantCulture);
				} catch (FormatException) {
					throw;
				}
				return myDouble * factor;
			} else {
				throw new ArgumentOutOfRangeException(String.Format(CultureInfo.CurrentUICulture, CommonDataResources.StringIsNullOrEmpty, input));
			}
		}

Eine Ersetzung, die auf meine Bedingungen zugeschnitten ist, must Du noch vornehmen. Ich verrate aber nicht welche 😉

Gruß
Morpheus