Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 19 odgovora
  • 5.177 pregleda

Najnovija ↓

datetime problem u evidenciji placanja 05.02.2009. u 08:55 · pre 215 meseci #1
evo ovako, trazila sam ovde po forumu, ali kod mene to ne radi. imam tabelu uplateisplate i u njoj datum racuna i rok placanja. kod pregleda u datagridview treba da mi se redovi kod kojih je rokplacanja manji od 5 dana u odnosu na danasnji datum zacrvene, tj da program javi kad je nesto blizu krajnjeg roka, gde je blizu 5 dana. koristim c# 2008 i ms sql 2005. treba mi neki between 'danasnji datum' and 'danasnji - 5', videla sam ovde neke odgovore: "danas - interval 5 day", "sysdate-5 and sysdate" i sl. al to kod mene ne radi.probala sam ovako nesto "select * from uplateisplate where rokplacanja between " + (Convert.ToInt32(DateTime.Now) - 5) + "and DateTime.Now" ali ni to ne radi, zbog convertovanja. molim za pomoc, hvala
Potpis
... ovde ima nesto sto se nikako ne slaze... ;)
Re: datetime problem u evidenciji placanja 05.02.2009. u 10:13 · pre 215 meseci #2
nasla sam!

SELECT *
FROM UPLATEISPLATE
WHERE (RokPlacanja BETWEEN GETDATE() - 5 AND GETDATE())
Potpis
... ovde ima nesto sto se nikako ne slaze... ;)
Re: datetime problem u evidenciji placanja 05.02.2009. u 10:52 · pre 215 meseci #3
SELECT datediff(dd, dateadd(dd, -5, getutcdate()), getutcdate())

Za operacije sa datumom koristi datediff, to ti je najbolja varijanta za sve operacije posto mozes da specificiras da li ces raditi sa danima/godinama/sekundama bilo sta.
Tako sam za danas minus 5 dana korisio dateadd(dd, -5, getutcdate())

Za razliku izmedju dana koristi datediff iz istog razloga.
Potpis
Every hamster has his day.
Re: datetime problem u evidenciji placanja 05.02.2009. u 12:04 · pre 215 meseci #6
ok, ok, ali to bi mi bilo resenje da on u datagrid stavi SAMO te koji ispunjavaju uslov. a meni trebaju u pregledu svi podaci ali da su samo oni koji odgovaraju uslovi oznaceni crveno. malo sam se glupirala pa probala sa "foreach (DataRow d in ds.Tables["uplateisplate"].Rows)
if (DateTime.Now.ToLongDateString() - d["rokplacanja"].ToString() <= "00/05/0000")
//oboj crveno"

i naravno ne radi. ne mogu u okviru dataseta i datagrida da ubacim taj select sto ste mi dali da mi ne bi dao samo te podatke.
Potpis
... ovde ima nesto sto se nikako ne slaze... ;)
Re: datetime problem u evidenciji placanja 05.02.2009. u 12:42 · pre 215 meseci #7
Ovo je .NET pitanje ili SQL pitanje?
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: datetime problem u evidenciji placanja 05.02.2009. u 12:43 · pre 215 meseci #8
To je vec pitanje za .NET forum.
Ono sto vidim je da ti pokusavas da obijs red u dataset-u a ne u datagridu. Ako se dobro secam (nisam radio sa datasetovima/gridom vec par godina ;) ) grid ima event OnBind ili tako nesto, koji dobija jedan po jedan red, u tom eventu treba da proveris da li odgovora uslovu i obojis ga. No, ponavljam, sigurno ces dobiti bolji odgovor na .NET forumu.
Potpis
Every hamster has his day.
Re: datetime problem u evidenciji placanja 05.02.2009. u 12:58 · pre 215 meseci
izmenjeno 1 put, poslednji put mayana 05.02.2009. u 13:10
  1. mayana05.02.2009. u 13:10zapis iz teksta poruke
#9
u pravu ste, ovo sad kad se ovako postavi pitanje nije vise sql vec .net. probacu taj onbind mada meni nije bitno kada se izvrsava nego kako s obzirom da sad moram raditi sa datetime.now il sta vec. sve sto meni treba je kako oduzeti dva datuma tako da se dobije broj dana izmedju njih. hvala
Potpis
... ovde ima nesto sto se nikako ne slaze... ;)
Re: datetime problem u evidenciji placanja 05.02.2009. u 14:21 · pre 215 meseci #10
Koristi event datagridview-a CellFormatting gde ces da proveris da li je to kolona sa datumom, i onda preko indeksa reda menjaj backColor.
Za datum pogledaj ovo:
Code:
DateTime nekiDatum;
TimeSpan ts;
nekiDatum = DateTime.Now;
nekiDatum = nekiDatum.AddDays(-10);

ts = DateTime.Now.Subtract(nekiDatum);
if(ts.Days > 5) System.Diagnostics.Debug.WriteLine("Trt");
Potpis
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
Re: datetime problem u evidenciji placanja 06.02.2009. u 08:05 · pre 215 meseci #11
ok, uradila sam ovo: foreach (DataRow r in ds.Tables["uplateisplate"].Rows)
{
DateTime nekiDatum=Convert.ToDateTime(r["rokplacanja"].ToString());

TimeSpan ts;


ts = DateTime.Now.Subtract(nekiDatum);
if (ts.Days < 5 && ts.Days > 0)
{
MessageBox.Show(ts.Days.ToString());

}

to mi sad nadje te datume i svaki put kad nadje ispise koliko dana je ostalo, tako sam samo proverila da li radi. i radi, samo ne znam sad kako da uzmem taj red i da ga obojim.
Potpis
... ovde ima nesto sto se nikako ne slaze... ;)
Re: datetime problem u evidenciji placanja 06.02.2009. u 12:23 · pre 215 meseci #12
resila!!!
foreach (DataRow r in ds.Tables["uplateisplate"].Rows)
{
DateTime nekiDatum = Convert.ToDateTime(r["rokplacanja"].ToString());
TimeSpan ts;
ts = DateTime.Now.Subtract(nekiDatum);
if (ts.Days < 5 && ts.Days > 0)
{
int Index = ds.Tables["uplateisplate"].Rows.IndexOf(r);
this.dgvPregledUI.Rows[Index].DefaultCellStyle.BackColor = Color.Red;

}
}
Potpis
... ovde ima nesto sto se nikako ne slaze... ;)
Re: datetime problem u evidenciji placanja 06.02.2009. u 12:37 · pre 215 meseci #13
nije bilo dobro. radilo je da pokaze koji su vec trebali da se plate u zadnjih 5 dana. a koji ce trebati u narednih 5 dana radi ovako:
foreach (DataRow r in ds.Tables["uplateisplate"].Rows)
{
DateTime nekiDatum = Convert.ToDateTime(r["rokplacanja"].ToString());
TimeSpan ts;
DateTime novi;
novi = DateTime.Now.AddDays(5);
ts = novi.Subtract(nekiDatum);
if (ts.Days < 5 && ts.Days > 0)
{
int Index = ds.Tables["uplateisplate"].Rows.IndexOf(r);
this.dgvPregledUI.Rows[Index].DefaultCellStyle.BackColor = Color.Red;

}
}
Potpis
... ovde ima nesto sto se nikako ne slaze... ;)
Re: datetime problem u evidenciji placanja 06.02.2009. u 12:50 · pre 215 meseci #14
Ovo tvoje resenje mi se cini mnogo "prljavim" jer zavisi od sinhronizacije bindinga izmedju dataseta i grid-a. Sto nisi poslusala dusty-ev predlog sa eventom na gridu?
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: datetime problem u evidenciji placanja 06.02.2009. u 13:26 · pre 215 meseci
izmenjeno 1 put, poslednji put mayana 06.02.2009. u 13:37
  1. mayana06.02.2009. u 13:37zapis iz teksta poruke
#15
zato sto ne znam kako. nisam bas toliko strucna kao vi... uostalom, ovo je mala aplikacijica i bitno mi je da radi ono sto sam htela. nece biti 300.000 podataka. verovatno i nece izaci odavde (ja sam pripravnik i to mi je bilo dato kao zadatak da se vidi koliko se razumem u c#).
Potpis
... ovde ima nesto sto se nikako ne slaze... ;)
Re: datetime problem u evidenciji placanja 06.02.2009. u 13:48 · pre 215 meseci #16
Pa ako ti senior kolega radi code review ovako nesto ne moze da mu promakne i moze samo lose da se odrazi po razumevanje C#-a; sto se strucnosti tice, ko pita ne skita, bolje da si pitala dusty-a za obrazlozenje (siguran sam da bi ti pomogao, nije mu prvi put), niko od nas se nije naucen rodio i nije sramota pitati kad nesto nije jasno.
U svakom slucaju sad nisam pri radnom okruzenju-u ali ako ti niko ne odgovori do veceras okacicu ti konkretan primer kako se ovo radi u grid events.


Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: datetime problem u evidenciji placanja 06.02.2009. u 14:40 · pre 215 meseci #17
U pravu je mmix, ako ovo vidi neki senior programer, ne samo da neces dobiti posao, nego je vrlo moguce da ces i batine da dobijes :D

Shalu na stranu, zaboravljas da je vrlo moguce da ce neko da uradi sortiranje, i onda nije mapiranje 1 prema 1 (grid prema tabeli).
Ima vise nacina da to uradis, jedan nacin je 'manuelno', da nakon bindovana pozoves ovaj kod:
Code:

DataRow row;
DateTime date;
TimeSpan ts;

foreach (DataGridViewRow gridRow in dgvPregledUI.Rows)
{
        row = (DataRow)gridRow.DataBoundItem;
        date = (DateTime)row["rokPlacanja"];
        ts = DateTime.Now.Subtract(date);

         if(ts.Days >= 0 && ts.Days <= 5)
               gridRow.DefaultCellStyle.BackColor = Color.Red;

}

sto u principu nije mnogo lose. Ali ako dodajes podatke u tu tabelu, onda ces morati nako svakog dodavanja novog reda da pozivas tu metodu.

Drugi nacin, po meni bolji, je preko eventa CellFormatting (znaci, ides na properties DataGridView, pa na munjicu :), nadjes ovaj event i dupli klik), jer imas vecu kontrolu nad celijom sa datumom (npr. da umesto datuma ispise "Kasni 3 dana !"), a i nema greske od gore.
Code:
void dgvPregledUI_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
     DateTime date;
     TimeSpan ts;

     if (dgvPregledUI.Columns[e.ColumnIndex].DataPropertyName == "rokPlacanja")
     {
          date = (DateTime)e.Value;
          ts = DateTime.Now.Subtract(date);
          if (ts.Days >= 0 && ts.Days <= 5){
              dgvPregledUI.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Red;
              e.Value = "Kasni " + ts.Days.ToString() + " dana !";
          }
      }
}

Potpis
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
Re: datetime problem u evidenciji placanja 06.02.2009. u 15:35 · pre 215 meseci #18
Citat:
dusty: 
Code:
void dgvPregledUI_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
     DateTime date;
     TimeSpan ts;

     if (dgvPregledUI.Columns[e.ColumnIndex].DataPropertyName == "rokPlacanja")
     {
          date = (DateTime)e.Value;
          ts = DateTime.Now.Subtract(date);
          if (ts.Days >= 0 && ts.Days <= 5){
              dgvPregledUI.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Red;
              e.Value = "Kasni " + ts.Days.ToString() + " dana !";
          }
      }
}


Umesto:
Code:

dgvPregledUI.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Red;


preporucio bih:
Code:

e.CellStyle.BackColor = Color.Red;

Re: datetime problem u evidenciji placanja 06.02.2009. u 16:18 · pre 215 meseci #19
Citat:

preporucio bih:
Code:

e.CellStyle.BackColor = Color.Red;


Da, definitivno ! Moja greska pri kopiranju. Takodje, sada vidim, uslovi za proveru perioda su takodje pogresni, no dobro, pojenta je tu :)
Potpis
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
Re: datetime problem u evidenciji placanja 09.02.2009. u 08:05 · pre 215 meseci #20
e, dragi moji, ovde niko od "senior programera" nema pojma o c#, svi jos drljaju onaj stari fox... samo otaljavam pripravnicki jer u mom divnom Zrenjaninu nema teorije da te neko primi kao programera normalnim putem. no, hvala u svakom slucaju, divni ste!
Potpis
... ovde ima nesto sto se nikako ne slaze... ;)
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme