En iyi yanıtlayıcılar
Asp.net Randevu Sistemi

Soru
-
Yapmış olduğum randevu sisteminde tarih ,saat ve dakikaya göre randevu alınacak.Seçili tarihte dolu olan saatleri sorguda döndürebiliyorum.Takıldığım nokta mesela saat 9 da randevu alan birisi dakikalardan 00,15,30 ve 45 i seçiyor.bu dakikalar dolunca o saati getirmesini istemiyorum.Mantık basit aslında ama bi türlü sql e dökemedim.Şimdiden teşekkürler.
Yanıtlar
-
Dakika tablonuzdaki ID 'lerinizi Saat ID 'leriniz ile joinlenecek sekilde ayarlayin. Yani su sekilde;
RND_DAKIKA_NO RND_DAKIKA
1 0
1 15
1 30
1 45
2 0
2 15
2 30
2 45
3 0
3 15
3 30
3 45......
Su sekilde bir sorgu ile istediginizi yapabilirsiniz.
DECLARE @RezervasyonSaat INT, @RezervasyonDakika INT SET @RezervasyonSaat = 10 SET @RezervasyonDakika = 45 SELECT DISTINCT CASE WHEN @RezervasyonSaat IN (RND_SAAT) AND @RezervasyonDakika IN (RND_DAKIKA) THEN CONVERT(VARCHAR, RND_SAAT +1) + ':' + CONVERT(VARCHAR, 0) END FROM tblRandevuSaat INNER JOIN tblRandevuDakika ON RND_SAAT_NO = RND_DAKIKA_NO
Yukaridaki Function ile daha kolay halledebilirdiniz gerci.
kolay gelsin.
http://www.yigitaktan.com
- Yanıt Olarak İşaretleyen Bahadır Tortop 18 Nisan 2012 Çarşamba 09:27
Tüm Yanıtlar
-
Merhabalar,
Anladigim kadariyla bir nevi quarter hesaplamasi yapip bir sonraki saate gecmek istiyorsunuz.
Bunun icin su sekilde bir function olusturup hesaplama yaptirabilirsiniz;
CREATE FUNCTION [dbo].[ListQuarters] ( @date SMALLDATETIME ) RETURNS @HourTable TABLE([QuarterID] INT ,[Quarter] SMALLDATETIME) AS BEGIN INSERT INTO @HourTable SELECT mt.number+1 Quarter ,DATEADD( mi ,(15*mt.number)+15 ,DATEADD(hh ,tt.number ,DATEADD(dd ,dt.number ,@date)) ) [end] FROM MASTER..spt_values dt ,MASTER..spt_values tt ,MASTER..spt_values mt WHERE dt.type = 'P' AND tt.type = 'P' AND mt.type = 'P' AND dt.number<365 AND tt.number<24 AND mt.number IN (0 ,1 ,2 ,3) AND DATEADD(dd ,dt.number ,@date)<DATEADD(yy ,1 ,@date) ORDER BY dt.Number ,tt.Number ,mt.Number RETURN END /* select * from [dbo].[ListQuarters] ('2012-04-17 00:00:00') */
Iyi calismalar.
http://www.yigitaktan.com
-
Yiğit bey ilginize teşekkürler.Üç adet tablom var.Randevu tablosu,randevu saat ve randevu dakika.Randevu tablosunda saat ve dakika değerleri tutuluyor.O saate ait dakikalar dolduğunda o saatin dropdown da gözükmesini istemiyorum.Bunu select sorgusuyla döndüremez miyim ? in ve not in lerle
Bahadır Tortop
-
-
Şöyle bir sorgu yazdığımda boş saatler geliyor.Onun yanında dakikası dolu olan saatte hangi dakikalar doluysa o kadar geliyor.9 da,15,30, ve 45 dolu 9 üç defa geliyor.
where RANDEVU_SAAT.RND_SAAT_NO not in(select RND_SAAT_NO from RANDEVU where RND_SAAT_NO in (select RND_SAAT_NO from RANDEVU where RND_DAKIKA_NO not in (select RND_DAKIKA_NO from RANDEVU where RND_TARIHI=@RND_TARIHI)))
Bahadır Tortop
-
-
-
-
USE [DB_KUAFOR] GO /****** Object: Table [dbo].[RANDEVU] Script Date: 04/18/2012 12:17:56 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[RANDEVU]( [RND_NO] [int] IDENTITY(1,1) NOT NULL, [RND_HIZMETI] [varchar](100) NULL, [RND_ACIKLAMA] [text] NULL, [RND_TARIHI] [smalldatetime] NULL, [RND_SAAT_NO] [int] NULL, [RND_DAKIKA_NO] [int] NULL CONSTRAINT [PK_RANDEVU] PRIMARY KEY CLUSTERED ( [RND_NO] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO SET ANSI_PADDING OFF GO
USE [DB_KUAFOR] GO /****** Object: Table [dbo].[RANDEVU_DAKIKA] Script Date: 04/18/2012 12:18:57 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[RANDEVU_DAKIKA]( [RND_DAKIKA_NO] [int] IDENTITY(1,1) NOT NULL, [RND_DAKIKA] [int] NULL, CONSTRAINT [PK_RANDEVU_DAKIKA] PRIMARY KEY CLUSTERED ( [RND_DAKIKA_NO] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO
USE [DB_KUAFOR] GO /****** Object: Table [dbo].[RANDEVU_SAAT] Script Date: 04/18/2012 12:19:14 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[RANDEVU_SAAT]( [RND_SAAT_NO] [int] IDENTITY(1,1) NOT NULL, [RND_SAAT] [int] NULL, CONSTRAINT [PK_RANDEVU_SAAT] PRIMARY KEY CLUSTERED ( [RND_SAAT_NO] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO
Bahadır Tortop
-
Dakika tablonuzdaki ID 'lerinizi Saat ID 'leriniz ile joinlenecek sekilde ayarlayin. Yani su sekilde;
RND_DAKIKA_NO RND_DAKIKA
1 0
1 15
1 30
1 45
2 0
2 15
2 30
2 45
3 0
3 15
3 30
3 45......
Su sekilde bir sorgu ile istediginizi yapabilirsiniz.
DECLARE @RezervasyonSaat INT, @RezervasyonDakika INT SET @RezervasyonSaat = 10 SET @RezervasyonDakika = 45 SELECT DISTINCT CASE WHEN @RezervasyonSaat IN (RND_SAAT) AND @RezervasyonDakika IN (RND_DAKIKA) THEN CONVERT(VARCHAR, RND_SAAT +1) + ':' + CONVERT(VARCHAR, 0) END FROM tblRandevuSaat INNER JOIN tblRandevuDakika ON RND_SAAT_NO = RND_DAKIKA_NO
Yukaridaki Function ile daha kolay halledebilirdiniz gerci.
kolay gelsin.
http://www.yigitaktan.com
- Yanıt Olarak İşaretleyen Bahadır Tortop 18 Nisan 2012 Çarşamba 09:27
-
-