|
[ VerbatimBOT @ 13.08.2006. 15:22 ] @
| Dakle ovako, imam sledecu stranu

i neki problem pri ažuriranju postojeceg zapisa u tabeli.
Kada kliknem na link "izmena" u DataGridu, podaci za taj zapis se citaju iz tabele i postavljaju u kontrole (TextBox ispod kalendara, TextBox za srpski i engleski). Dugme "Unos" menja svoj tekst u "Ažuriraj", a sve se odigrava tako što se pri kliku na "izmena" radi Response.Redirect("ista_strana.aspx?mode=edit&id=ID_ZAPISA").
Pri kliku na dugme "Ažuriraj", provera se da li je mode "edit" i ako jeste, umesto INSERT, radi se UPDATE, što je definisano sledecim kodom:
Code:
If (Request("mode") = "edit") Then
komanda.CommandText = "update s_dayHistory set Date = @date, srText = @srText, enText = @enText where ID = @id"
Dim pId As New SqlParameter("@id", SqlDbType.BigInt)
pId.Value = Int32.Parse(Request("id").ToString())
komanda.Parameters.Add(pId)
Dim p1 As New SqlParameter("@date", SqlDbType.SmallDateTime)
p1.Value = DateTime.Parse(txtIzabraniDatum.Text)
'p1.Value = DateTime.Parse(txtEngleski.Text.Substring(0, 9))
komanda.Parameters.Add(p1)
Else
If (Request("mode") = "default") Then
komanda.CommandText = "insert into s_dayHistory(Date, srText, enText)
values(@date, @srText, @enText)"
End If
End If
Dim p2 As New SqlParameter("@srText", SqlDbType.NVarChar, 500)
Dim p3 As New SqlParameter("@enText", SqlDbType.NVarChar, 500)
p2.Value = txtSrpski.Text
p3.Value = txtEngleski.Text
komanda.Parameters.Add(p2)
komanda.Parameters.Add(p3)
Kasnije se normalno nastavlja kod
Code:
Try
If (konekcija.State = ConnectionState.Closed) Then
konekcija.Open()
End If
komanda.Prepare()
komanda.ExecuteNonQuery()
konekcija.Close()
Catch ex As Exception
Response.Write("Greska: " & ex.Message)
Return
End Try
Problem je što on sve ovo prodje bez greške, ali naravno ne uradi update. Ja sumnjam na to da format datuma nije isti (u SQL Server bazi i na nivou aplikacije radjene u VS2003), ali nemam rešenje. |
[ sivan347 @ 14.08.2006. 09:24 ] @
Posto ti ne izbacuje gresku moras da debug-ujes kod da vidis tacno gde se sta poziva i vrednosti promenljivih. Ako sumnjas na datum nemoj koristiti SmallDateTime nego DateTime i format datuma koji prolazi u MSSQL bazi je mesec.dan.godina (mm.DD.yyyy).
[ VerbatimBOT @ 14.08.2006. 10:59 ] @
Promenio sam tip podatka u DateTime i opet ne radi.
Najveća fora je u tome što mi pri debugovanju ne prijavljuje nikakvu grešku, uredno setuje vrednosti parametara na željene vrednosti, ali jednostavno NE RADI UPDATE !!!
Aaaaaaaaaaaaaaaah !!!
[ spartak @ 15.08.2006. 09:35 ] @
Ajde upali Profiler (sql server) pa uhvati taj update da li se uopste okida nad bazom, i ako da koje vrednosti salje. Nisam se sad koncentrisao na tvoj kod, ali prva ideja bi mi bila da proverim da ne pokupi ponovo stare vrednosti pa njih posalje kao params.
Vidi u profiler da li do baze stizu vrednosti pa ces onda znati sta dalje da gledas.
[ logic_rabbit @ 15.08.2006. 10:23 ] @
Vidi na kraju kako izgleda taj zavrsni SQl koga izvrsavas,kopiraj ga u query analyzer i probaj izvrsiti.Onda ces znati na cemu si.
[ mmix @ 15.08.2006. 14:05 ] @
Hmm, jeste da je glupo pitanje, ali da li si siguran da u tabeli postoji zapis ciji je ID = ID_ZAPISA? Pretpostavljam da ima posto ucitas stare vrednosti, al morao sam da pitam
Drugo, probaj da parametar @ID prosledis kao Int, ne BigInt, nesto mi govori da ti kljuc u toj tabeli nije 64bitni integer...
Trece, imas bug nevezan za tvoje pitanje, ako je mode=default kreiraces INSERT komandu koja koristi parametar @date, ali neces proslediti taj parametar u komandu.
Btw, mali saveti, ako unutar ELSE segmenta imas samo drugi IF, bolje iskombinuj u ELSE IF, generisace manje MSIL koda. I ubaci finally konstrukciju koja zatvara konekciju ako je otvorena, kako stvari sad stoje ako ExecuteNonQuery pukne ostace ti otvorena konekcija.
[ VerbatimBOT @ 15.08.2006. 14:23 ] @
Citat: mmix: da li si siguran da u tabeli postoji zapis ciji je ID = ID_ZAPISA? Pretpostavljam da ima posto ucitas stare vrednosti, al morao sam da pitam :)
Da bre! :)
Nije do parametra, postavim direktno da proverava sa Request("ID") i opet nece!
Trece, imas bug nevezan za tvoje pitanje, ako je mode=default kreiraces INSERT komandu koja koristi parametar @date, ali neces proslediti taj parametar u komandu.
Ovo cu pogledati!
Btw, mali saveti, ako unutar ELSE segmenta imas samo drugi IF, bolje iskombinuj u ELSE IF, generisace manje MSIL koda. I ubaci finally konstrukciju koja zatvara konekciju ako je otvorena, kako stvari sad stoje ako ExecuteNonQuery pukne ostace ti otvorena konekcija.
Nemam vremena sad da radim, javljam ako naidjem na gresku i kad testiram vase predloge.
[ VerbatimBOT @ 17.08.2006. 19:15 ] @
Code: Btw, mali saveti, ako unutar ELSE segmenta imas samo drugi IF, bolje iskombinuj u ELSE IF, generisace manje MSIL koda. I ubaci finally konstrukciju koja zatvara konekciju ako je otvorena, kako stvari sad stoje ako ExecuteNonQuery pukne ostace ti otvorena konekcija.
Jbg, tek sam na početku za VB.NET, jer sam počeo da ga koristim pre dve nedelje (jer moram), inače bi ja to sve ispeglao u C#.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|