• 16-01-2023, 14:39:46
    #1
    Arkadaşlar

    şöyle birşey yapıyorum veritabanından bir model seçiyorum ve o modele ait gerekli kalıp listesini çekiyorum .

    istediğim ise şu gelen 22 adet kalıpları veritabanından sorgulayarak elimizde stok var mı yok mu görmek eğer varsa o kalıbın panelini yeşil yoksa kırmızı ile göstermek


    Buda oluşturduğum procedure

    USE [datawo]
    GO
    /****** Object:  StoredProcedure [dbo].[kalip_bul]    Script Date: 16.01.2023 16:28:26 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER PROC  [dbo].[kalip_bul]
    @P1 VARCHAR(10),
    @P2 VARCHAR(10),
    @P3 VARCHAR(10),
    @P4 VARCHAR(10),
    @P5 VARCHAR(10),
    @P6 VARCHAR(10),
    @P7 VARCHAR(10),
    @P8 VARCHAR(10),
    @P9 VARCHAR(10),
    @P10 VARCHAR(10),
    @P11 VARCHAR(10),
    @P12 VARCHAR(10),
    @P13 VARCHAR(10),
    @P14 VARCHAR(10),
    @P15 VARCHAR(10),
    @P16 VARCHAR(10),
    @P17 VARCHAR(10),
    @P18 VARCHAR(10),
    @P19 VARCHAR(10),
    @P20 VARCHAR(10),
    @P21 VARCHAR(10),
    @P22 VARCHAR(10)
    AS BEGIN
          SELECT MODEL FROM TBLDISKALIP WHERE MODEL=@P1
           SELECT MODEL FROM TBLDISKALIP WHERE MODEL=@P2
            SELECT MODEL FROM TBLDISKALIP WHERE MODEL=@P3
             SELECT MODEL FROM TBLDISKALIP WHERE MODEL=@P4
              SELECT MODEL FROM TBLDISKALIP WHERE MODEL=@P5
               SELECT MODEL FROM TBLDISKALIP WHERE MODEL=@P6
                SELECT MODEL FROM TBLDISKALIP WHERE MODEL=@P7
                 SELECT MODEL FROM TBLDISKALIP WHERE MODEL=@P8
                  SELECT MODEL FROM TBLDISKALIP WHERE MODEL=@P9
                   SELECT MODEL FROM TBLDISKALIP WHERE MODEL=@P10
                    SELECT MODEL FROM TBLDISKALIP WHERE MODEL=@P11
                     SELECT MODEL FROM TBLDISKALIP WHERE MODEL=@P12 
                      SELECT MODEL FROM TBLDISKALIP WHERE MODEL=@P13
                       SELECT MODEL FROM TBLDISKALIP WHERE MODEL=@P14
                        SELECT MODEL FROM TBLDISKALIP WHERE MODEL=@P15
                         SELECT MODEL FROM TBLDISKALIP WHERE MODEL=@P16
                          SELECT MODEL FROM TBLDISKALIP WHERE MODEL=@P17
                           SELECT MODEL FROM TBLDISKALIP WHERE MODEL=@P18
                            SELECT MODEL FROM TBLDISKALIP WHERE MODEL=@P19
                             SELECT MODEL FROM TBLDISKALIP WHERE MODEL=@P20
                              SELECT MODEL FROM TBLDISKALIP WHERE MODEL=@P21
                               SELECT MODEL FROM TBLDISKALIP WHERE MODEL=@P22
    END
    Bu C#
       SqlCommand giris = new SqlCommand("kalip_bul @P1,@P2,@P3,@P4,@P5,@P6,@P7,@P8,@P9,@P10,@P11,@P12,@P13,@P14,@P15,@P16,@P17,@P18,@P19,@P20,@P21,@P22", _vt.baglan);
                    _vt.baglan.Open();
                    giris.Parameters.AddWithValue("@P1", lbldis1.Text);
                    giris.Parameters.AddWithValue("@P2", lbldis2.Text);
                    giris.Parameters.AddWithValue("@P3", lbldis3.Text);
                    giris.Parameters.AddWithValue("@P4", lbldis4.Text);
                    giris.Parameters.AddWithValue("@P5", lbldis5.Text);
                    giris.Parameters.AddWithValue("@P6", lbldis6.Text);
                    giris.Parameters.AddWithValue("@P7", lbldis7.Text);
                    giris.Parameters.AddWithValue("@P8", lbldis8.Text);
                    giris.Parameters.AddWithValue("@P9", lbldis9.Text);
                    giris.Parameters.AddWithValue("@P10", lbldis10.Text);
                    giris.Parameters.AddWithValue("@P11", lbldis11.Text);
                    giris.Parameters.AddWithValue("@P12", lblic1.Text);
                    giris.Parameters.AddWithValue("@P13", lblic2.Text);
                    giris.Parameters.AddWithValue("@P14", lblic3.Text);
                    giris.Parameters.AddWithValue("@P15", lblic4.Text);
                    giris.Parameters.AddWithValue("@P16", lblic5.Text);
                    giris.Parameters.AddWithValue("@P17", lblic6.Text);
                    giris.Parameters.AddWithValue("@P18", lblic7.Text);
                    giris.Parameters.AddWithValue("@P19", lblic8.Text);
                    giris.Parameters.AddWithValue("@P20", lblic9.Text);
                    giris.Parameters.AddWithValue("@P21", lblic10.Text);
                    giris.Parameters.AddWithValue("@P22", lblic11.Text);
                    SqlDataReader okuyucu = giris.ExecuteReader();
                    okuyucu.Read();
    Bundan sonra nasıl devam edebiliirim kafam durdu ya.

    Maskat şu örnek: Modeldetay tablosundan lbldis1.Text gelen kalıp diyelim ki 26,00 Sistem bu kalıba kalıp listesinden stok var mı yokmu kontrol edip varsa panel yeşil yoksa kırmızı yapcak nasıl yol izlemeliyim . belkide cok basit ama beyin sulandı .
  • 16-01-2023, 15:07:31
    #2
    Şu an pc de değilim çözüm bulamazsanız akşam ulaşın bana bakalım
  • 16-01-2023, 15:12:31
    #3
    Tam sql yapisini anlamadan cevap vermek zor ama ilk gordugum. Butun parametreleri bir kerede gonderip sorgu sonucu almaya calisiyorsun. Bunun yerine For veya while döngüsü ile tek parametreli sql sorgunu kur.kurdugun sql procedure her gonderdigin model sorgusu icin sana stok miktarini verecek. Gerisi donen sorgu sifirdan buyukse ile devam et
  • 16-01-2023, 17:22:36
    #4
    cartel24 adlı üyeden alıntı: mesajı görüntüle
    Şu an pc de değilim çözüm bulamazsanız akşam ulaşın bana bakalım
    zuluman adlı üyeden alıntı: mesajı görüntüle
    Tam sql yapisini anlamadan cevap vermek zor ama ilk gordugum. Butun parametreleri bir kerede gonderip sorgu sonucu almaya calisiyorsun. Bunun yerine For veya while döngüsü ile tek parametreli sql sorgunu kur.kurdugun sql procedure her gonderdigin model sorgusu icin sana stok miktarini verecek. Gerisi donen sorgu sifirdan buyukse ile devam et
    eve gecince deneme yapacağım teşekkür ederim
  • 28-01-2023, 20:28:07
    #5
    Bu stored procedure, 22 adet modeli TBLDISKALIP tablosundan sorgulamak için kullanılıyor. Ancak yazdığın kod bloğu sadece modeli sorguluyor ve hiçbir şekilde stok durumunu kontrol etmiyor. Ayrıca, her bir model için ayrı ayrı sorgu yazmak yerine, tüm modelleri tek seferde sorgulamak daha verimli olacaktır. Önerim, IN komutunu kullanarak tüm modelleri tek seferde sorgulamak ve sonuçta stok durumunu da döndürmek olacaktır. Örnek bir sorgu şöyle olabilir:
    SELECT MODEL, CASE 
    WHEN STOK > 0 THEN 'YES' 
    ELSE 'NO' 
    END AS STOK_DURUMU 
    FROM TBLDISKALIP 
    WHERE MODEL IN (@P1,@P2,@P3,@P4,@P5,@P6,@P7,@P8,@P9,@P10,@P11,@P12,@P13,@P14,@P15,@P16,@P17,@P18,@P19,@P20,@P21,@P22)
    Bu sorgu, 22 adet modeli tek seferde sorgulayacak ve stok durumunu da döndürecektir. Bu sorguyu stored procedure içine eklersen ve parametreleri doğru şekilde eklersen, istediğin sonucu elde edebilirsin.