[ kosovic @ 01.03.2005. 07:09 ] @
| Imam problem koji ne znam kako da rijesim.
Naime imam tabelu na SQL Serveru:
Zauzeto do datum(date) Slobodno do datuma
Zauzeto od datum Zauzeto do datum Slobodno od datuma Slobodno do datuma
10.05.2005 15.01.2005 15.01.2005 20.01.2005 ?
20.01.2005 23.01.2005 23.01.2005 ............ ?
Aplikaciju radim u VB.NET-u,medjutim ne znam kako doci do vrijednosti «Slobodno do datuma»,probao sam preko TSQL-a , ADO.NET-a ali ne ide, trebalo bi od ovakve tabele da napravim DataSet.Znaci vrijednost polja «Slobodno do datuma»treba da predstavlja vrijednost sledeceg zapisa polja "Zauzeto od datum".Bilo kakva pomoc dobro bi dosla.
|
[ Zidar @ 03.03.2005. 23:52 ] @
Ne valja ti tabela Coce. Svako polje ti zavisi od nekog drugog polja u istom rekordu, a neka polja zavise i od polja u prethodnom (ili narednom) rekordu. razmisli o promeni dizajna strukture tabela koje imas.
:-)
[ kosovic @ 04.03.2005. 06:45 ] @
Ali upravo je to problem, sto ne znam kako da mi vrijednost polja u tekucem zapisu odgovara vrijenosti polja sledeceg zapisa.Dobro bi mi dosao neki primjer ako si u mogucnosti.
SELECT X,Y,Z AS (JENAKO X U SLEDECEM ZAPISU)OVO JE PROBLEM)?
FROM TABELA
U svakom slucaju zahvaljujem na odgovoru.
[ Zidar @ 04.03.2005. 16:31 ] @
Posto si iz podgorice, verovatno radis neku bazu koja cuva podatke o raspolozivosti soba u hotelu ili slicno. Verovatno zelis da pokazes u nekom momentu kada su sobe slobodne a kada zauzete. Nisam nikada radio baze za turizam, ali su opsta pravila uvek ista - cuvaju se samo sirovi podaci. Sve sto se moze izracunati, ne cuva se u tabelema. kako mi se cini, u tabeli bi trebao da cuvas samo sledeca polja:
RezervacijaID
SobaID,
DatumOdKadJeSobaZauzeta
BrojdanaKolikoceSobaBitiZauzeta
Sada, kad neko hoce da rezervise sobu od nekog datuma X, u trajanju od Y dana, ti proveris u tabeli da li postoji rezervacija koja uzima deo intervala (X,X+Y). Ako nema konflikta, primis rezervaciju, u protivnom, odbijes. Ova analiza treba da se obavi u nekom triggeru, na samom SQL serveru (jel' bese SQL server u pitanju). Ako ovo proradi, neces moci da unses konfliktne rezervacije. U tom slucaju prikazivanje kad je soba slobodna -zauzeta, bilo bi relativno jednostavno:
SELECT
A.SobaID,
ZauzetaOD = A.DatumOdKadJeSobaZauzeta,
ZauzetaDo = A.DatumOdKadJeSobaZauzeta+A.BrojdanaKolikoceSobaBitiZauzeta,
SlobodnaOD = A.DatumOdKadJeSobaZauzeta+A.BrojdanaKolikoceSobaBitiZauzeta
SlobodnaDO =
(SELECT MIN(B.DatumOdKadJeSobaZauzeta)
FROM tblRezervacije AS B
WHERE B.DatumOdKadJeSobaZauzeta>A.DatumOdKadJeSobaZauzeta)
FROM tblRezervacije AS A
SlobodnaDO dakle jeste najmanji od svih datuma kada pocinje neka rezervacija a koji su veci od tekuceg datuma. Mozda negde treba da se doda +1, zavisi kako definises slobodnu sobu - da li je soba slobodna poslednjeg dana rezervacije, ili tek od sutra?
Dalje ne znam.
:-)
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.