[ odwalla @ 05.10.2009. 18:59 ] @
Ovako, imam jedan problem sa kojim se mucim evo cijeli dan. Napravio sam bazu, stored procedure za sve tablice i preko aplikacije se vrsi sav rad sa bazom. Punjenje baze radi dobro, brisanje radi dobro, jedino sta ne radi dobro je na jednoj tablici gdje imam tip u bazi decimal, kad je idem update, javlja mi gresku, error: Error converting data type nvarchar to decimal. I to sam sa tom tablicom gdje ima decimal, sa ostalim tablicama nemam problema. Pa ako je neko imao slican problem il zna do cega bi moglo biti, da mi pomogne, bio bih jako zahvalan.
[ jmix23 @ 05.10.2009. 19:17 ] @
Pretpostavljam da se preko neke aplikacije vrsi izmena podataka...pa s tim u vezi, verovatno iz nekog textboxa ili label-e pokusavas da vrsis izmenu podatka, a posto je za textbox(label) po defaultu tip podatka string (nvarchar) a u bazi ti je to polje tipa decimal, bez neke konverzije ne moze upisati izmenu u bazi... pokusaj sa nekim Convert.ToInt32(Textbox1.Text) ili posalji neki code, store proceduru, nesta na osnovu cega bi mogao konkretnije da ti pomognem
[ jmix23 @ 05.10.2009. 19:23 ] @
Mala ispravka, probaj sa Convert.ToDecimal(string)...a kad smo vec kod konvertovanja, uporno pokusavam da konveretujem label.text u decimal i nikako da mi uspe...pokusao sam i sa Convert.ToDecima(), i Decimal.Parse () ali mi uvek javlja poruku da ulazni string nije u odgovarajucem formatu (a ul.string je label.text) pa ako ima neko resenje nek javi ?!?
[ odwalla @ 05.10.2009. 19:30 ] @
Da, preko aplikacije. Nemam ja problema, sa int vrijednostima, ni sa varchar vrijednostima, ni sa datumima, samo sa decimal; ali evo stavim proceduru i dio koda gdje se vrsi binding
evo procedura koja vrsi update
Code:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[proc_PorezStope_U]
     @Id int
    ,@Prz_Id int
    ,@Postotak decimal(5,2)
    ,@InverzKoeficijent decimal(7,6)
    ,@IznosOd money
    ,@IznosDo money
    ,@VrijediOd datetime
    ,@VrijediDo datetime
    ,@KorisnikUnosa int
    ,@VrijemeUnosa datetime
    ,@KorisnikPromjene int
    ,@VrijemePromjene datetime

AS
BEGIN
SET NOCOUNT ON;

  UPDATE optPorez_Stope
  SET 
       Prz_Id = @Prz_Id
      ,Postotak = @Postotak
      ,InverzKoeficijent = @InverzKoeficijent
      ,IznosOd = @IznosOd
      ,IznosDo = @IznosDo
      ,VrijediOd = @VrijediOd
      ,VrijediDo = @VrijediDo
      ,KorisnikUnosa = @KorisnikUnosa
      ,VrijemeUnosa = @VrijemeUnosa
      ,KorisnikPromjene = @KorisnikPromjene
      ,VrijemePromjene = @VrijemePromjene
        WHERE Id = @Id;
END


a evo i dio coda, da ne kopiram sav
Code:

Porez_StopeBLLprovider bll = new Porez_StopeBLLprovider();
...
            DataSet ds1 = bll.GetAll();
            DataTable tblPorez_Stope = ds1.Tables["optPorez_Stope"];
            DataTable tblKorisnici = ds1.Tables["Korisnici"];
            DataTable tblPorezi = ds1.Tables["optPorezi"];

            bndsPorez_Stope.DataSource = tblPorez_Stope;
            bndsKorisnici.DataSource = tblKorisnici;
            bndsKorisnici1.DataSource = tblKorisnici;
            bndsPorezi.DataSource = tblPorezi;

            cmbKUnos.DataSource = bndsKorisnici;
            cmbKUnos.DisplayMember = "Korisnik";
            cmbKUnos.ValueMember = "IdKorisnika";
            cmbKUnos.DataBindings.Add("SelectedValue", bndsPorez_Stope, "KorisnikUnosa");
            cmbKPromjene.DataSource = bndsKorisnici1;
            cmbKPromjene.DisplayMember = "Korisnik";
            cmbKPromjene.ValueMember = "IdKorisnika";
            cmbKPromjene.DataBindings.Add("SelectedValue", bndsPorez_Stope, "KorisnikPromjene");
            cmbPorezi.DataSource = bndsPorezi;
            cmbPorezi.DisplayMember = "Naziv";
            cmbPorezi.ValueMember = "Id";
            cmbPorezi.DataBindings.Add("SelectedValue", bndsPorez_Stope, "Prz_Id");

            dtpVUnosa.DataBindings.Add("Text", bndsPorez_Stope, "VrijemeUnosa");
            dtpVPromjene.DataBindings.Add("Text", bndsPorez_Stope, "VrijemePromjene");
            dtpVrijediOd.DataBindings.Add("Text", bndsPorez_Stope, "VrijediDo");
            dtpVrijediDo.DataBindings.Add("Text", bndsPorez_Stope, "VrijediOd");

            tbxPostotak.DataBindings.Add("Text", bndsPorez_Stope, "Postotak");
            tbxInverz.DataBindings.Add("Text", bndsPorez_Stope, "InverzKoeficijent");
            tbxIznosOd.DataBindings.Add("Text", bndsPorez_Stope, "IznosOd");
            tbxIznosDo.DataBindings.Add("Text", bndsPorez_Stope, "IznosDo");


Normalno ovaj dio poziva bll sloj iz kojeg se zove dll i on sprema sve u bazu, ali mislim da ta dva sloja nisu previse relevantan za ovu gresku
[ dusty @ 05.10.2009. 20:28 ] @
U redu za bidovanje, ali kako ti izgleda komanda za Update ? Kako su tu definisani parametri ?
[ odwalla @ 05.10.2009. 21:08 ] @
Upravo sam skontao, sto je, regionalne postavke, kad prebacim na engleski, sve radi savrseno. E sad drugi problem, kako da postavim automatski da program prima engleski, znam da to negdje postoji, ali ne mogu se sjetiti gdje tocno
[ dusty @ 05.10.2009. 21:39 ] @
Stavi u Main funkciji:
Code:
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-EN");
[ odwalla @ 05.10.2009. 21:48 ] @
Hm, sa ovim
Code:
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-EN");

u Mainu idalje imam zarez umjesto tacke u decimalnom broju, te i dalje javlja gresku :(
[ dusty @ 05.10.2009. 22:10 ] @
Zameni CurrentUICulture sa CurrentCulture.
[ odwalla @ 05.10.2009. 23:07 ] @
Vec sam to probao, ne pomaze ni to. Covek bi pomislio da su vec smislili normalan konverter i da su ga vec ugradili u ms sql, sto je najgore, takav parser cak nije tesko ni napraviti
[ odwalla @ 07.10.2009. 17:24 ] @
Uspio sam napraviti da mi aplikacija prikazuje broj s tockom, preko parsiranja, ali i dalje javlja gresku kod upisivanja u SQL bazu, zna li itko kako nju natjerati da parsira dobro vrijednosti one koje joj pasaljem?
[ dusty @ 08.10.2009. 05:26 ] @
Hmmm, nesto radis debelo pogresno. Takve stvari bi trebale da budu transparentne i nevezane za odabrani jezik, i nema nikakvih potreba za parsiranjem/formatiranjem. Decimalni tip je decimalni tip, bez obzira na jezik. A narocito mi je sumljivo sto pored toga sto si stavio CultureInfo na engleski ne dobijas decimalne brojeve sa ispravnim prikazom. Znaci bez koda, tesko da ti neko moze pomoci ......

BTW koju bazu koristis, Access ?
[ MarkoBalkan @ 09.10.2009. 17:21 ] @
provjeri dataset, možda si tamo krivo definirao tip.
možda je tamo varchar , a u bazi decimal.