» »

Težava pri vnosu decimalnega števila v bazo (C#, Access)

Težava pri vnosu decimalnega števila v bazo (C#, Access)

nemonemo ::

Pozdravljeni,
v c# imam težavo, kadar želim vnesti decimalno vrednost v bazo.
Primer: kadar želim shraniti vrednost 1,5 mi v bazo shrane kot 15. Mislim sem, da je problem v parsanju iz teksta v decimalno število, vendar sem preko debuganja odkril, da temu ni tako. Prav tako je stolpec v bazi določen kot decimal.

txtKm.Text="1,5";
zelezniceDataSet.VozniRediRow row;
row.Km = decimal.Parse(txtKm.Text);

zelezniceDataSet.VozniRedi.AddVozniRediRow(row);
vozniRediTableAdapter.Update(zelezniceDataSet.VozniRedi);

japol ::

Jaz sem to rešil z:
...Decimal.Parse(decimalNumber, new System.Globalization.CultureInfo("en-us")
globalizacija in "en-us" ker: "Represents text as a series of Unicode characters", ko sem vezal npr. datagridview z Accessom, Excel,...

Mitja Bonča ::

Lahko tako kot je japol svetoval, da uporabiš new CultureInfo, ki to jevije spremeni v pike (ali obratno), ali pa narediš preprosto čekiranje:
if(txtKm.text.Contains(","))
     txtKm.Text = txtKm.Replace(",","."); //zamenja vejico za piko.
//in ostala koda...

nemonemo ::

Saj sem napisal, da ni problem v parsanju, ker vrednost vredu pretvori. Potem ko vnesem to vrednost v bazo mi spremeni iz 1,5 v 15.

Link do aplikacije ;)

Zgodovina sprememb…

  • spremenil: nemonemo ()

Mitja Bonča ::

kakšen tip imaš v podatkovnio bazi? je to int, decimal? Mora biti decimal.
Decimal ima tudi dva parametera, 1 je število posameznih števil, 2 je število decimalih mest:
decimal(10,2) pomeni: max 10 števil, od teh the decimalni mesti.
Imaš tako?

Če imaš, je ena druga koda (tvoja seveda) kriva za zaokoževanje( oz. odstranjevanje decimalne oznake).

nemonemo ::

Baza je pomojem OK.
 atribut Km

atribut Km


Druge kode, ki bi odstranila decimalno vejico pa praktično ni. :|

Spura ::

1,5 je 15 v ameriki. Vnasa povsem pravilno.
Una resitev z replaceom ne bo dobra. Ker lahko jst vnesem "15.000,00".

Samuel ::

decimalka v USA je s piko, ne vejico?
If you notice this notice, you will notice that this notice is
noticably not worth noticing.

hexor ::

Pika-US standard ;)
RootMachine ;)

Mitja Bonča ::

Poglej tukaj razliko:
string strNo1 = "12.34";
            decimal decNo1 = Decimal.Parse(strNo1, new CultureInfo("en-US"));

            string strNo2 = "12,34";
            decimal decNo2 = Decimal.Parse(strNo2, new CultureInfo("sl-SI"));


Za US se uporablja kot separator pika, pri nas (slo) pa se uporablja vejica.
Uporabi CultureInfo class za določanje separatorja.

nemonemo ::

Sem že dvakrat napisal, da ni problem v parsanju, ker sem zdebugal zadevo. Nekaj drugega more biti :/

technolog ::

Probaj direktno vstavit v bazo, ne prek vmesnika, ampak prek SQL stavka. Potem boš takoj vedel, v katerem grmu tiči zajec.

nemonemo ::

Sem probal direktno z SQL to pa deluje. Svašta.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C#] sortiranje priimkov po slovenski abecedi

Oddelek: Programiranje
61573 (1384) mihies
»

[C#] Sort za string (slovenska abeceda)

Oddelek: Programiranje
5959 (768) mihies
»

c# class

Oddelek: Programiranje
342262 (1856) japol
»

Visual Studio - koda za prikaz OS?

Oddelek: Programiranje
91079 (846) detroit
»

C# delo z datumi

Oddelek: Programiranje
51128 (1029) MaCoFaCo

Več podobnih tem