Yan yana sütunları toplama

Kodla Büyü

mfatih4125

Üye
Mesajlar
13
Arkadaşlar classic asp kullanıyorum. Bir konuda takıldım fikir almak istiyorum. Yan yana sabit sütunları topluyorum onda sıkıntı yok. Ancak sütunlar değişken olduğunda toplama işini bir türlü gerçekleştiremedim. For döngüsü denedim ama başaramadım. Tablom aşağıdaki şekilde.

w_id | s1 | s2 | s3 | Total
-------+-----+----+----+------
1 | 4 | 3 | 5 |
2 | 0 | 5 | 10 |
3 | 1 | 0 | 7 |
4 | 5 | 6 | 0 |

Burada örneğin sütunlar s4, s5, s6 şeklinde her zaman değişken olabiliyor. Bu durumda nasıl bir çözüm bulabilirim? Şu anda yaptığım şey. (s1+s2+s3+s4) şeklinde toplam olmak. Bu şekilde oluyor ama dediğim gibi sütunlar değişken olunca işler karışıyor.
 
Bu şekilde kaç farklı sütün olabiliyor. Sütunların hepsini tanımla. Değişken boş ise toplamasın dolu ise toplasın şeklinde yapabilirsin. Yani if kullanman gerekli bence
 
Aslında tam olarak kullanıcı tarafındaki senaryoyu söylesen daha iyi anlarız ne yapmak istediğini
 
Dediğim gibi sütunlar değişebiliyor. Zaten sorun o. Sabit sütun sayısı olduğu zaman toplatabiliyorum. Sütun sayısı diyelim ki bu ay 8 oldu. Gelecek ay 21 olabilir. Sonraki ay 5'e düşebilir.
 
şu işini görür diye düşübüyorum olmazsa tabloyu atarsan bakabiliriz

select sum(veri1) t1
,sum(veri2) t2
,sum(veri3) t3
,(select sum(veri1)+sum(veri2)+sum(veri3) from test_table) toplam
from test_table;

yatay dikey ne var ne yok toplar
 
şu işini görür diye düşübüyorum olmazsa tabloyu atarsan bakabiliriz

select sum(veri1) t1
,sum(veri2) t2
,sum(veri3) t3
,(select sum(veri1)+sum(veri2)+sum(veri3) from test_table) toplam
from test_table;

yatay dikey ne var ne yok toplar
Arkadaşım dikkat etmediniz galiba dinamik yani değişken sütundan bahsediyoruz. Bu şekilde sabit sütunları zaten toplayabiliyoruz.
toplanacak Sütunlar ş string olarak algıladığu anda s1'den s13'e kadar. Ancak yarın öbür gün bu s10'da bitebilir. Sürekli kodlarla oynamak istemiyorum. En son şu aşamaya kadar getirdim. Ancak artı ve asp tagleri string olarak algıladığından toplama işlemi yapmıyor.
<%For x =1 to (mehmet-1) %>
<%=objRec("s"&x&"")%> <% response.write("+")%><% next%><%=objRec("s"&mehmet&"")%>
<%response.write ("%"&">")%>
Not : Mehmet değeri 13
Bu şekilde ekteki resimdeki sonucu alıyorum. Her şey doğru gidiyor ama dediğim gibi işaretleri string olarak algıladığından toplamıyor.
 

Ekli dosyalar

  • 1.jpg
    1.jpg
    160.8 KB · Görüntüleme: 33
Son düzenleme:
Maximum olabilecek sütun sayını yazarmısın o zaman. Yada Şöyle örnekleyeyim. diyelimki maksimum yirmi sütun olabilir. Tam kodları yazmayacağım mantığını yazacağım.
Diyeceksinki 20. sütunu kontrol et, doluysa 1. ve 20. sütun arasını topla, boşsa 19. sütunu kontrol et, doluysa 1. ve 19. sütun arasını topla, boşşsa 18. sütunu kontrol ........................
 
Maximum olabilecek sütun sayını yazarmısın o zaman. Yada Şöyle örnekleyeyim. diyelimki maksimum yirmi sütun olabilir. Tam kodları yazmayacağım mantığını yazacağım.
Diyeceksinki 20. sütunu kontrol et, doluysa 1. ve 20. sütun arasını topla, boşsa 19. sütunu kontrol et, doluysa 1. ve 19. sütun arasını topla, boşşsa 18. sütunu kontrol ........................
20 sütüna göre yapalım örneğin. Ne düşünüyorsunuz? Kafanızdaki kodlama mantığı nedir? Ben döngü kullanmaya çalıştım.
Kod:
    <%lastnumber=13%>
    <%for x=1 to (lastnumber-1)%>
    <%a=objRec("s"&x&"")%>
    <% Next%>
    <%
    b=objRec("s"&lastnumber&"")
    %>
    <%=a+b%>
a tanımalması döngüde döndürmüyor. s12 olarak son sayıyı veriyor sadece.
 
Öncelikle ben asp ile kodlama yapmayı bırakalı on seneden fazla oldu. Dolayısıyla kodlarımda yanlışlık olabilir ve çok uzun olabilir. Muhtemelen aynı kodu yazmanın daha kısa yoluda vardır. Benimki sadece mantığına örnek olsun diye kabaca yazdım aklıma geldiği kadarıyla. Senin örneğin maksimum kaç sütun olabilirse o kadar yazarsın
Kod:
<%if getir("sutun20")<>"" then%>

sutun20+sutun19+sutun18+sutun17+sutun16+sutun15+sutun14+sutun13+sutun12+sutun11+sutun10+sutun9+sutun8+sutun7+sutun6+sutun5+sutun4+sutun3+sutun2+sutun1

<%elseif getir("sutun19")<>"" then%>
    
sutun19+sutun18+sutun17+sutun16+sutun15+sutun14+sutun13+sutun12+sutun11+sutun10+sutun9+sutun8+sutun7+sutun6+sutun5+sutun4+sutun3+sutun2+sutun1     
    
<%elseif getir("sutun18")<>"" then%>
    
sutun18+sutun17+sutun16+sutun15+sutun14+sutun13+sutun12+sutun11+sutun10+sutun9+sutun8+sutun7+sutun6+sutun5+sutun4+sutun3+sutun2+sutun1     
    
<%elseif getir("sutun17")<>"" then%>
          
sutun17+sutun16+sutun15+sutun14+sutun13+sutun12+sutun11+sutun10+sutun9+sutun8+sutun7+sutun6+sutun5+sutun4+sutun3+sutun2+sutun1         
                
<%elseif getir("sutun16")<>"" then%>
      
sutun16+sutun15+sutun14+sutun13+sutun12+sutun11+sutun10+sutun9+sutun8+sutun7+sutun6+sutun5+sutun4+sutun3+sutun2+sutun1     
      
<%elseif getir("sutun15")<>"" then%>
    
sutun15+sutun14+sutun13+sutun12+sutun11+sutun10+sutun9+sutun8+sutun7+sutun6+sutun5+sutun4+sutun3+sutun2+sutun1     
    
<%elseif getir("sutun14")<>"" then%>
    
sutun14+sutun13+sutun12+sutun11+sutun10+sutun9+sutun8+sutun7+sutun6+sutun5+sutun4+sutun3+sutun2+sutun1     
    
<%elseif getir("sutun13")<>"" then%>

sutun13+sutun12+sutun11+sutun10+sutun9+sutun8+sutun7+sutun6+sutun5+sutun4+sutun3+sutun2+sutun1

<%elseif getir("sutun12")<>"" then%>
    
sutun12+sutun11+sutun10+sutun9+sutun8+sutun7+sutun6+sutun5+sutun4+sutun3+sutun2+sutun1   
    
<%elseif getir("sutun11")<>"" then%>

sutun11+sutun10+sutun9+sutun8+sutun7+sutun6+sutun5+sutun4+sutun3+sutun2+sutun1

<%elseif getir("sutun10")<>"" then%>
    
sutun10+sutun9+sutun8+sutun7+sutun6+sutun5+sutun4+sutun3+sutun2+sutun1   
    
<%elseif getir("sutun9")<>"" then%>
    
sutun9+sutun8+sutun7+sutun6+sutun5+sutun4+sutun3+sutun2+sutun1     
    
<%elseif getir("sutun8")<>"" then%>
    
sutun8+sutun7+sutun6+sutun5+sutun4+sutun3+sutun2+sutun1     
    
<%elseif getir("sutun7")<>"" then%>
        
sutun7+sutun6+sutun5+sutun4+sutun3+sutun2+sutun1         
                
<%elseif getir("sutun6")<>"" then%>
      
sutun6+sutun5+sutun4+sutun3+sutun2+sutun1     
      
<%elseif getir("sutun5")<>"" then%>
    
sutun5+sutun4+sutun3+sutun2+sutun1     
    
<%elseif getir("sutun4")<>"" then%>
    
sutun4+sutun3+sutun2+sutun1     
    
<%elseif getir("sutun3")<>"" then%>
    
sutun3+sutun2+sutun1   
    
<%elseif getir("sutun2")<>"" then%>

sutun2+sutun1
    
<%else%>

sutun1
    
<%end if%>
 
Son düzenleme:
Kardeş bu dinamik bir bir yapı değil. Bu tür çözümü ben zaten mevcut durumda yaptım sıkıntı yok. Benim istediğim döngü ile bir kaç satırlık kod. Hepsi bu kadar. Daha önce yazdığım kod da değişken tanımlamasında döngüye girmiyor.
Kod:
 <%a=objRec("s"&x&"")%>
bu kodla ilgili çözümü olan varsa yardım bekliyorum.
 
Geri
Üst