none
Asp.net Randevu Sistemi RRS feed

  • 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.
    18 Nisan 2012 Çarşamba 06:21

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
    18 Nisan 2012 Çarşamba 09:23

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

    18 Nisan 2012 Çarşamba 08:03
  • 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

    18 Nisan 2012 Çarşamba 08:09
  • Yukaridaki function'i kendinize gore duzenleyip yapabilirsiniz veya dediginiz gibi WHERE NOT IN diyerekte olabilir.

    http://www.yigitaktan.com

    18 Nisan 2012 Çarşamba 08:20
  • Şö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

    18 Nisan 2012 Çarşamba 08:29
  • Bahsettiginiz tablolari ornekleyebilirmisiniz. Create Script 'ini alip ve value olarak 4-5 deger yazip.


    http://www.yigitaktan.com

    18 Nisan 2012 Çarşamba 08:39
  • randevu dakika tablosu

    randevu tablosu


    Bahadır Tortop

    18 Nisan 2012 Çarşamba 08:48
  • randevu saat tablosu

    bu da yapmak istediğim şey buradaki dakikalar dolduğunda sol kısımda saat 10 gözükmesin fakat bir türlü sorguya dökemedim.


    Bahadır Tortop

    18 Nisan 2012 Çarşamba 08:49
  • 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

    18 Nisan 2012 Çarşamba 09:21
  • 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
    18 Nisan 2012 Çarşamba 09:23
  • Çok teşekkürler yiğit bey.

    iyi çalışmalar dilerim.


    Bahadır Tortop

    18 Nisan 2012 Çarşamba 09:28
  • Rica ederim.

    Kolay gelsin.


    http://www.yigitaktan.com

    18 Nisan 2012 Çarşamba 09:30