مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

james

عضویت از 1392/06/02

کمک در جهت گرفتن کوئری

  • شنبه 15 شهریور 1393
  • 23:22
تشکر میکنم

با سلام.من یه combobox دارم که دارای مقادیر برگشتی کسر شده مقدارش 1 برگشتی کسر نشده مقدارش 2 و فقط برگشتی مقدارش صفر هست.تو جدولم فقط به مقادیرش دسترسی دارم حالا میخام جدولم رو بر اساس برگشتی کسرشده و برگشتی کسر نشده و  فقط برگشتی فیلتر کنم.لطفا راهنمایی بفرمائید.اینم کوئری کلی.

declare @OD_CD varchar(17) ,@OD_CD2 varchar(17)
                           Declare @GroupCust_Cd SmallInt    ,@GroupCust_Cd2  Smallint
                           Declare @Cust_Cd Varchar(10)    ,@Cust_Cd2 Varchar(10)
                           Declare @Fact_Date Char(8)        ,@Fact_Date2 Char(8)
                           Declare @Stock_cd TinyInt        ,@Stock_cd2 TinyInt
                           Declare @GroupOd_Cd TinyInt    ,@GroupOd_Cd2 TinyInt
                           Declare @Flag TinyInt        ,@Flag2 TinyInt    ,@Flag3 TinyInt    ,@Flag4 TinyInt
                           Declare @IO SmallInt
                           Declare @Price_Unit Tinyint
                           Declare @PRODUCER varchar(30)
                           Declare @Acc_Year SmallInt
                           Declare @NAME varchar(30)
                           Declare @Zarib Smallint

                           Set @GroupCust_Cd=NULL
                           Set @GroupCust_Cd2=NULL
                           Set @fact_date = '" + txtDate1.Text + @"'
                           Set @fact_date2 = '" + txtDate2.Text + @"'
                           SET @Price_Unit=NULL
                           Set @stock_cd ='" + textBox9.Text + @"'
                           Set @Stock_cd2 =15
                           Set @Flag=Null
                           Set @acc_year ='" + txtYear.Text + @"'
                           Set @PRODUCER='" + cmbxStatus.SelectedIndex.ToString() + @"'
                          If IsNull(@IO,0)=1 Set @Zarib=1 Else Set @Zarib=-1

                          Set @Flag2=Null
                          Set @Flag3=Null
                          Set @Flag4=Null

                          If @Flag=2  Set @Flag2=4
                          If @Flag=12  Set @Flag2=17
                          If @Flag Is Null Begin
                              Set @Flag=2
                              Set @Flag2=4
                              Set @Flag3=12
                              Set @Flag4=17
                          End
    
                          Select A.Od_Cd as 'کدکالا',A.Od_Nm as 'نام کالا',O.Vazn as 'وزن کالا',O.PRODUCER as 'تولید کننده'
                         ,Sum(-1*A.IO*quantity) Qnt
                         ,Sum(@Zarib*A.IO*A.quantity*O.vazn)/1000 TTlVazn
                         ,Sum(Round(@Zarib*A.IO*A.quantity*A.Un_Prc,0)) TtlPrc

                         From S_Vw_Article A

                               Left Outer Join S_ODS O On A.Od_Cd = O.Od_Cd
     
                         Where    (A.Acc_Year=@Acc_Year)
                                And
                                (    (A.Flag In (@Flag,@Flag2,@Flag3,@Flag4))
                                     Or ((@Flag=2) And (A.Flag=5 And A.TypeRH_Cd=10))
                                 )

                                 And (
                                 (@Stock_cd Is Null)
                                   Or((@Stock_cd = @Stock_cd2) And (A.Stock_cd=@Stock_cd))
                                Or((@Stock_cd <>@Stock_cd2) And (A.Stock_cd Between @Stock_cd And @Stock_cd2))
                                  )
                                 And (
                                (@GroupCust_Cd     Is Null)
                                Or((@GroupCust_CD = @GroupCust_Cd2) And (A.GroupCust_CD = @GroupCust_Cd))
                                Or((@GroupCust_Cd <>@GroupCust_Cd2) And (A.GroupCust_Cd Between @GroupCust_Cd And @GroupCust_Cd2))
                                     )
                                And (
                                (@Cust_Cd Is Null)
                                 Or((@Cust_Cd = @Cust_Cd2) And (A.Cust_Cd = @Cust_Cd))
                                Or((@Cust_Cd <>@Cust_Cd2) And (A.Cust_Cd Between @Cust_Cd And @Cust_Cd2))
                                      )
                                And (
                                (@Fact_Date Is Null)
                                Or((@Fact_Date = @Fact_Date2) And (A.Fact_Date = @Fact_Date))
                                Or((@Fact_Date <>@Fact_Date2) And (A.Fact_Date Between @Fact_Date And @Fact_Date2))
                                    )

                                And (
                                (@GroupOd_Cd Is Null)
                                Or((@GroupOd_Cd = @GroupOd_Cd2) And (A.GroupOd_Cd = @GroupOd_Cd))
                                Or((@GroupOd_Cd <>@GroupOd_Cd2) And (A.GroupOd_Cd Between @GroupOd_Cd And @GroupOd_Cd2 ))
                                    )
                               And (
                                (@Od_Cd Is Null)
                                Or((@Od_Cd = @Od_Cd2) And (A.Od_Cd = @Od_Cd))
                                Or((@Od_Cd <>@Od_Cd2) And (A.Od_Cd Between @Od_Cd And @Od_Cd2 ))
                                   )
                                 And (A.Kind_Cd<>3)
                                 And (IsNull(@IO,0)=0 Or A.IO=@IO)
                                 AND (@Price_Unit IS NULL OR A.PRICE_UNIT=@Price_Unit)
                                 " + Group + @"
                                 " + havale + @"
      
                                  Group BY A.Od_Cd,A.Od_Nm,O.Vazn,O.PRODUCER
                                  Order BY A.Od_Cd

پاسخ های این پرسش

تعداد پاسخ ها : 1 پاسخ
کاربر سایت

سجاد باقرزاده

عضویت از 1392/02/24

  • چهارشنبه 19 شهریور 1393
  • 12:37

کدهاتون مشخص و خونا نیست لطفا مجددا ارسال کنید ولی اینبار کدها رو در قسمت code که در نوار بالای Textareaی ارسال پاسخ قرار داره بگذارید.

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)