[ zmajd88 @ 25.01.2008. 23:32 ] @
| Da li neko moze da mi objasni kako da pri ubacivanju vremena
u access bazu ne ubacuje datum npr. 31.12.1889 ?
Kako da oduzimam vreme i da mi rezultat bude vreme hh:mm
a ne format 0.0000025468542 ?
Vrednosti ubacujem i uzimam uz pomoc aplikacije.
Kada otvorim bazu u msaccess -u tamo je sve kako treba.
|
[ nidisa @ 26.01.2008. 06:04 ] @
Pokusaj sa
dRezultat = Format(neki_izraz, "hh:nn")
gdje ce "neki_izraz" biti rezultat tvog oduzimanja vremena.
npr:
Dim dDate, dDate1 As Date
dDate1 = Now() - (1 / 24) 'ovdje oduzimam 1 sat od trenutnog vremena
dDate = Format(dDate1, "hh:nn:ss")
MsgBox dDate
[ zmajd88 @ 26.01.2008. 15:08 ] @
ja rezultat vracam pomocu query, u listview kontrolu
Aplikacija je u C#.
Hvala na predlogu, verovatno nisam objasnio kako treba.
[ Getsbi @ 26.01.2008. 16:27 ] @
Ako se u polju tabel pojavljuje uporno 30.12.1899 sva je prlika da u Regionalnom setovanju treba popraviti datumski seoparator na '' . '' Meni je to jednom davno pomogl.
U svakom slučaju ima veze sa formatiranjem datuma i Access taj datum (30.12.1899 )vraća kad shvati da je pokušano da se upiše nešto bez veze.
[Ovu poruku je menjao Getsbi dana 26.01.2008. u 17:44 GMT+1]
[ zmajd88 @ 26.01.2008. 16:59 ] @
postavljeno mi je kao na tvojoj slici...
[ Getsbi @ 26.01.2008. 17:08 ] @
Onda je do formatiranja u aplikaciji. Moraćeš malo da isprobavaš. Moguće da je u VBA.Net nešto drugačije nego u Access-u. U Access-u možeš za datum na nivou tabele, da biraš Format i Input Mask, što si verovatno primetio. U VBA.Net isprobaj više varijanti za ulaznu masku. Neka mora da proradi.
Edit: Kako je kad direktno unosiš podatak u Access bazu?
[ zmajd88 @ 26.01.2008. 17:25 ] @
ovako
kad direktno ubacujem u bazu je sve ok, stavio sam short date i short time.
ali ja u aplikaciji imam textbox u kome pisem upit
npr. select datum, sat from vreme
i umesto da mi vrati u listview rezultat dd.MM.yyyy i hh:mm
on mi vrati dd.MM.yyyy 00:00 i 30.12.1899 hh:mm
e sad meni trebaju samo vrednosti iz datuma samo dd.MM.yyyy a iz sat samo hh.mm
u tome je problem, aplikacija nema veze sa ovim jer ja pisem upit kao komandu,
znaci kao u kveri analajzeru.
nadam se da si razumeo.
[ Getsbi @ 26.01.2008. 17:47 ] @
I kod Access-a kad se piše SQL iskaz sa datumima mora da se datum stavi između taraba. Recimo ovako
Insert into MojaTabela (PoljeTipaDateTime) values (#01/01/2001#). Probaj sa time.
[ zmajd88 @ 26.01.2008. 18:19 ] @
nece da radi na funkciju date() npr. values (#date()#)
pogledaj ovo, mozda ti bude jasnije sta hocu da uradim
http://www.elitesecurity.org/t307290-0#1838079
[Ovu poruku je menjao zmajd88 dana 26.01.2008. u 19:35 GMT+1]
[ Getsbi @ 26.01.2008. 18:51 ] @
To neće sigurno, jer i funkcija ne može tako da se specificira u query-ju, već nešto ovako:
SELECT Putninalogtbl.regbroj, Putninalogtbl.vozaci, Putninalogtbl.datum
FROM Putninalogtbl
WHERE (((Putninalogtbl.datum)=#1/1/2007#));
ili nešto ovako
INSERT INTO Table1 ( datum )
VALUES (#1/1/2001#);
radi u Access-u
[ zmajd88 @ 26.01.2008. 20:16 ] @
resio sam pomocu funkcije format, sad samo ne znam kako da oduzimam vremena, ne moze sa datediff funkcijom.
[ nidisa @ 27.01.2008. 04:49 ] @
Ja do sada nikad nisam koristio nikakvu finkciju za oduzimanje ili sabiranje vremena u accessu. Sto se Accessa tice, jedan dan (24h) je ekvivalent broju 1 (31.12.2007 - 2 = 29.12.2007). Inace datumi u accessu pocinu od 31.12.1899 i nize od toga ne moze ici jer je to ekvivalentno 0. Meni se cini da je tvoj rezultat nesto sto je ili 0 ili manje od nule te zbog toga imas ovaj problem.
Jos jedna stvar: vidi da li ta su dva vremena koja pokusavas da oduzmes identicna po formatu. Ako nisu i to bi mogao biti problem takodje.
[ Getsbi @ 27.01.2008. 07:10 ] @
Oduzimanje vremena:
Matematika kaže da je oduzimanje isto što i sabiranje drugog sabirka sa negativnom vrednošću.
Dakle koristi funkciju DateAdd() sa intervalom koji ti odgovara (h-hour, n-minute ili s-second) i njihovim negativnim predznakom). Recimo: DateAdd('h', -4, Now()) daje vreme od pre četiri sata.
Razlika dva vremena:
DateDiff takođe radi sa satima samo treba sledeći format:
DateDiff('h',#16:48#, #23:36#)
Rezultat će biti 7 ako postaviš za interval h kao što sam ja postavio.
Ovo je naravno sve važi za Access. Za C# ćeš morati da potražiš formate u adekvatnojli teraturi.
[Ovu poruku je menjao Getsbi dana 27.01.2008. u 08:28 GMT+1]
[ zmajd88 @ 27.01.2008. 13:13 ] @
ok, hvala vam.
problem je u tome sto ja ne treba samo sate da sabiram ili oduzimam, vec vreme kad
je neko dosao od vremena kad je neko izasao.
npr. ako koristim datediff on ce mi izracunati samo minute ili sate, takodje i dateadd.
meni treba upit da sastavim, kad izvrsim taj upit da mi iz tabele bude vracena sifra radnika,
i radno vreme za taj dan i radno vreme za ceo mesec.Mozda se to ne radi sa ovim sto ja hocu, tj. sa datediff ili dateadd.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|