[ Vorhol @ 18.09.2003. 22:42 ] @
Ovako.Pokusavam da upisem datum iz textboksa,koji sam prethodno prebacio u tip date.To nije dovoljno.Probao sam i sa funkc.format ali nisam uspeo.Mislim da je problem u formatima datuma Sql-a i .net-a.Kada probam da upisem on promeni u difolt datum 1\1\1900.Kako da formatiram da bi ga upisao u bazu?
[ Deep|Blue @ 18.09.2003. 23:28 ] @
formatiraj ga u oblik
MM.dd.yyyyy
ako nece tako pogledaj kako ti je ormatiran sistemski datum u win-u.
takodjer moze i MM-dd-yyyy
[ Vorhol @ 19.09.2003. 08:57 ] @
Znas sta je problem.Kada upisem datum u teksbox on doda automat. i vreme,a u bazi mi se upisuje samo datum.Pokusao sam da formatiram ali mi nije uspelo.Ako si ti to vec radio napisi mi kod,mozda gresim kod formatiranja.
[ Zvonimir @ 19.09.2003. 11:13 ] @
Trebalo bi da prodje sa "yyyy/MM/dd" ili "yyyy-MM-dd"...

Medjutim najbolje je ipak da kreiras SqlCommand objekat pa mu dodas parametre sa tipovima, tu nema greske.

SqlCommand cmd = new SqlCommand("Select @MyDate");
cmd.Parameters.Add("@MyDate", SqlDbType.DateTime).Value = DateTime.Now;
...
[ degojs @ 19.09.2003. 19:30 ] @
Citat:
Vorhol:
Znas sta je problem.Kada upisem datum u teksbox on doda automat. i vreme,a u bazi mi se upisuje samo datum.Pokusao sam da formatiram ali mi nije uspelo.Ako si ti to vec radio napisi mi kod,mozda gresim kod formatiranja.



Sličan problem smo već imali ovde na forumu - ispravno se upiše datum, ali vreme izostane. Nije do tebe, ne brini :) a rešenje vidi ovde:
http://www.elitesecurity.org/tema/18147/0#126521

Naravno - ako je to ono što te muči.

Pozdrav
[ Deep|Blue @ 20.09.2003. 00:19 ] @
kog ti je tipa polje u bazi
i gde ti se pojavljuje vreme a gde ne ?
[ Vorhol @ 23.09.2003. 12:32 ] @
Ako sam dobro razumeo ti prvo napises stored proc.pa onda prenosis parametrima?

Ja nisam koristio "gotove" komande (insert,update,delete) nego sam ih sam pisao.
Pokusao sam da ubacim parametar umesto var. ali komanda ne cita vrednost vec ga cita kao string.Naime,za prosledjivanje vrednosati preko var. u komandu se upisuje "& var &",a parametar bez svega toga ali ne cita vrednost nego tretira kao string.
u sql polje je date\time.Kada upisujem direktno u bazu onda prihvata i sa vremenom i bez njega.
Ali kada idem preko ado-a tu nastaju problemi.Ne prihvata ni sa datumom ni bez njega, nego upise 1/1 /1900.
A ja bih hteo da prihvati samo datum bez vremena.

ne znam koliko sam jasan (meni je malo konfuzno jednostavno ne znam kako sve funkcionise u .netu)
Pozdrav i hvala unazad i unapred


[ dusans @ 25.09.2003. 10:02 ] @
Zar još uvek nikom nije jasno da se pri prenosu podataka u bazu kao i vrednost koja se čuva u bazi nema svoj format - Datum je datum, interno se u većini slučajeva čuva kao numerička vrednost i ne treba mešati formatiranje, tj. prikazivanje datuma sa njegovom vrednošću! Ako se u .NET-u napravi instanca tipa DateTime-a, pravilno popuni dan, mesec, godina, kao i odgovarajuće vreme a zatim pošalje kao parametar tipa DateTime onda će sve biti u redu, bez obzira na to koji je format datuma postavljen u regional settings-u ili u bazi, jer u stvari i ne zavisi od njega! Ako pretvaraš string u datum i ako ti menja redosled dana i meseca ili ne prepoznaje separatore onda koristi System.DateTime.Parse funkciju, više detalja o njoj ćeš naći u Help-u! Ako je neka kontrola povezana sa DataTable u DataSet-u i hoćeš pravilno pretvaranje recimo teksta u DateTime napravi neku Parse funkciju i poveži je sa DataBinding.Parse događajem, odnosno pravilno formatiranje teksta u kontroli povezivanjem DataBinding.Format događaja sa nekom tvojom Format funkcijom - detalji su u Help-u!
[ degojs @ 25.09.2003. 19:58 ] @
Ipak, nije baš tako. Ako se koristi ono što wizard sam generiše prilikom korištenja DataSet i DataAdapter kontrola/klasa, apdejt (ili dodavanje) polja u bazi (na osnovu promena u DataSetu) neće proći kako treba - vreme izostane (a datum prođe!) i uopšte se ne radi o formatiranju. Link sam već dao u prethodnoj poruci pošto smo takav problem već uspešno rešili ovde: potrebno je izmeniti deklaraciju jednog tipa u kodu koji generiše čarobnjak. Dakle, ima problema i to ne greškom korisnika a nije ni vezano za formatiranje. Sve ovo važi za VS 2002 i .NET 1.0, a u 2003/1.1 nisam probao istu stvar pošto kod uglavnom pišem ručno.

Pozdrav
[ caca @ 26.09.2003. 12:18 ] @
Zdravo svima

I ja imam problem sa upisom datuma u SQL 2000 iz VB.net_a .

1.Unesem datum u polje txtdatdok.text (npr. 10/05/2003).
2.Preko tastera UPDATE treba da se izmene sadrzaji polja u tabeli.
Sva polja OSIM datuma se izmene. U polje datuma mi UVEK upise 01/01/1900

Saljem i kod sa kojim je iskodiran taster UPDATE
GDE GRESIM !!!!

HVALA
Private Sub UpdateFinDok()
Dim cnSQL As SqlConnection
Dim cmSQL As SqlCommand
Dim strSQL As String
Dim intRowsAffected As Integer

If Not IsValidForm() Then
Exit Sub
End If

Try
strSQL = "UPDATE findok SET" & _
" dp = " & PrepareStr(txtdp.Text) & _
" ,brdok = " & PrepareStr(txtbrdok.Text) & _
!!!!OVI NE RADI!! " ,datdok = " & CDate(txtdatdok.Text) & _ !!!!!!!!!!!!1
" ,konto = " & CInt(txtkontosif.Text) & _
" ,mat_br = " & CInt(txtsifpp.Text) & _
" ,iznos = " & CInt(txtiznos.Text) & _
"WHERE (brfindok1 = '" & brdok1 & "')" & "and" & _
"(brfindok2 = '" & brdok2 & "')" & "and" & _
"(brfindok3 = '" & brdok3 & "')" & "and" & _
"(brstavke = '" & stavkadok & "')"
cnSQL = New SqlConnection(ConnectionString)
cnSQL.Open()

cmSQL = New SqlCommand(strSQL, cnSQL)
intRowsAffected = cmSQL.ExecuteNonQuery()

If intRowsAffected <> 1 Then
MsgBox("Update Failed.", MsgBoxStyle.Critical, "Update")
End If

cnSQL.Close()
cmSQL.Dispose()
cnSQL.Dispose()

Catch e As SqlException
MsgBox(e.Message, MsgBoxStyle.Critical, "SQL Error")

Catch e As Exception
MsgBox(e.Message, MsgBoxStyle.Critical, "General Error")
End Try
PopunjavaFinDokList()
End Sub
[ mladenovicz @ 26.09.2003. 12:58 ] @
Nisam siguran, ali koliko se secam kad se koriste SQL izrazi, datum ide unutar ## (kao sto string ide unutar ''). Znaci probaj umesto :

" ,datdok = " & CDate(txtdatdok.Text) & _

ovo

" ,datdok = #" & CDate(txtdatdok.Text) & "#" & _
[ degojs @ 26.09.2003. 19:02 ] @
Primer Update izraza:
Code:

update table1
    set Datum = '27-MAR-1974'
    where AutoID = 1;


Dakle, nikakvo pretvaranje nije potrebno, string sa datumom se stavi između '. Treba pripaziti da se ne "pobrkaju" dan i mesec (npr. '01/12/03' - da li je to 12. januar ili 1. decembar? Najbolje je staviti mesec u obliku MMM, a godinu YYYY kao u primeru i neće biti problema).

[ caca @ 26.09.2003. 20:18 ] @

Probala sam ali opet neradi.

1.U prvom slucaju (mladenovicz)

" ,datdok = #" & CDate(txtdatdok.Text) & "#" &

javlja gresku kada prtisnem taster UPDATE i to

Incorect syntax near '#'.

2.U drugom slucaju (degojs)

Kada napisem datum u kodu (kako je sugerisano)

" ,datdok = '10/05/2003' " & _ OVO RADI

ali ja unosim datum preko tekst boksa u txtdatdok.text
(to je string) i sadrzaj tog polja treba da mi izmeni
postojeci u tabeli.Ja ne znam sta je uneto!!!!

Probala sam ovako ali NERADI

" ,datdok = 'txtdatdok.text' " & _ OVO NERADI

i javlja sledecu gresku
SQL Error
Syntax error converting datatime from character string

pozdrav svima
[ degojs @ 26.09.2003. 23:16 ] @
Citat:
(kako je sugerisano)


Hehe, ma mislio sam da je problem sama sintaksa SQL komande UPDATE pa sam je napisao. Kako rekoh, samo obrati paznju na to ako korisnik zameni dan i mesec pa umesto 01/12/2003 unese 12/01/2003 - bice belaj :) Mozda ne bi bilo lose ponuditi neko bolje resenje za unos datuma - npr. DatePicker kontrolu ili posebno textbox-ove za dan, mesec i godinu - jasno oznacene, tako da nema nedoumice. Pazi i sta ces ako korisnik unese neku glupost :) naravno, greskom. Uvek valja uraditi validaciju..

Elem,

Code:

...
" ,datdok = '" & textdatdok.Text & "'" &
...


& _ OVO RADI :)
[ caca @ 27.09.2003. 17:17 ] @



Degojs, resio si mi problem, koji me je mucio danima i danima.

Hvala na savetima.

HVALA PUNO !!!!!!!
[ Vorhol @ 29.09.2003. 10:31 ] @
Ljudi hvala vam puno.I meni je proradilo.