Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Hur förenklar jag detta för att slippa sitta och bara dumskriva?

Postades av 2008-02-02 01:40:58 - Christer Lundqvist, i forum asp.net generellt, Tråden har 4 Kommentarer och lästs av 736 personer

Jag gör en enkel beräkning av data jag hämtar ur en databas. Samma (nästan) upprepas 25 gånger.

Kan man göra någon typ av array eller nåt av nedan?
Jag har slagit en del i böckerna jag har, men når inte fram.

<code>

'datan hämtas med sql sats SUM(xxx)
Dim reader As OleDbDataReader = Command.ExecuteReader()
reader.Read()
lblSumForm.Text = reader.GetDouble(0)
lblSumElem.Text = reader.GetDouble(1)
'osv...



Protected Sub Button8_Click(ByVal sender As Object, ByVal e As System.EventArgs)

'gör en funktion sedan...
'undvik division med 0 if sumtim=0 then sumtimtext=1?!

lblFormProc.Text = lblSumForm.Text / SumTim.Text * 100 'beräkna % av arbetad tid
If lblFormProc.Text > 40 Or lblFormProc.Text < 4 Then ' färga röd om utanför intervall
lblFormProc.BackColor = Drawing.Color.Red
End If

'***********
lblProcElem.Text = lblSumElem.Text / SumTim.Text * 100 'beräkna % av arbetad tid
If lblProcElem.Text > 40 Or lblProcElem.Text < 4 Then ' färga röd om utanför intervall
lblProcElem.BackColor = Drawing.Color.Red
End If

'************
lblProcDem.Text = lblSumDemont.Text / SumTim.Text * 100 'beräkna % av arbetad tid
If lblProcDem.Text > 40 Or lblProcDem.Text < 4 Then ' färga röd om utanför intervall
lblProcDem.BackColor = Drawing.Color.Red
End If
'************

' osv 25 ggr

End Sub

</code>


Visst måste det väl gå att förenkla fast inte jag lärt mig det? Irriterande att bara sitta och dumskriva. Jag har gjort det tidigare, men det känns fel om det finns bättre lösning.
Jag kan underlätta lite om jag gör något i stil med: lblProc1.text, lblProc2.text, (behöver bara ändra en siffra då) men något smartare kanske finns så det räcker med 5-6 rader istället för över 100? Kan man få en vink i rätt riktning så jag vet vad jag ska försöka lära mig?


Svara

Sv: Hur förenklar jag detta för att slippa sitta och bara dumskriva?

Postades av 2008-02-02 08:37:42 - Thomas Vanhaniemi

Du kan lägga alla Label kontroller i en array eller list som du sedan går igenom och tilldelar värde.
Men ännu smartare är att räkna ut allting en gång och lagra i en variabel som du sedan använder för att tilldela alla samma värde.
Förstår inte riktigt varför du vill visa samma värde 25 gånger?


Svara

Sv:Hur förenklar jag detta för att slippa sitta och bara dumskriva?

Postades av 2008-02-02 15:57:50 - Christer Lundqvist

Tja, det är ju inte Samma värde, det är olika poster i databasen som summeras och räknas om till en % andel, Men det är samma procedur för allt.
Hämta värde, lagra timmarna (för just den posten) i en lbl, räkna om dessa timmar till % av totalsumma.

Jag tänkte det var lika nog för att hitta på något smartare...

Jag ska titta om jag får till något med en array av labels.


Svara

Sv: Hur förenklar jag detta för att slippa sitta och bara dumskriva?

Postades av 2008-02-05 09:19:47 - Jonas Eriksson

Hej, du kan loopa igenom controls-samlingen om du vill, och därefter sätta värden. Exvis nåt sånt här:

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim c As Control
        Dim strPart1 As String
        Dim strPart2 As String
        Dim l1 As Label
        Dim l2 As Label

        Dim nSumTim As Decimal
        nSumTim = Convert.ToDecimal(txtSumTim.Text)

        Dim nProc As Decimal

        ' Leta igenom alla kontroller som ligger i form1 
        For Each c In form1.Controls

            ' Kolla upp Label-kontrollerna
            If c.GetType Is GetType(Label) Then
                l1 = CType(c, Label)

                ' Använd boksvav nr 4 i labelns namn
                strPart1 = l1.ID.Substring(3, 1)
                Select Case strPart1
                    Case "S" ' lblSum...
                    Case "P" ' lblProc...

                        ' Kontrollera resten av labelns namn, exvis "Dem" eller "Elem"
                        strPart2 = l1.ID.Substring(7)

                        ' Leta upp motsvarande summakontroll
                        l2 = form1.FindControl("lblSum" & strPart2)
                        l2 = CType(l2, Label)

                        ' Räkna ut procent
                        nProc = Convert.ToDecimal(l2.Text) / nSumTim * 100

                        ' Visa värde + ev färgmarkering
                        l1.Text = Format(nProc, "#.#")
                        If nProc > 40 Or nProc < 4 Then
                            l1.BackColor = Drawing.Color.Red
                        Else
                            l1.BackColor = Drawing.Color.White
                        End If
                End Select
            End If
        Next
    End Sub


Svara

Sv: Hur förenklar jag detta för att slippa sitta och bara dumskriva?

Postades av 2008-02-05 11:19:36 - Martin Adrian

Kan du inte ha någon lookup array som mappar värden mot kontroller


pseudokod:

Array med kontroller
lblProcDem, lblSumDemot
lblProcElem, lblSumElem
...

SELECT SUM(x) FROM tbl GROUP BY y

for x = 1 To 40
Array(x,1).Text = Array(x,2).Text / SumTim.Text * 100
if Array(x,1).Text > 40 Or Array(x,1).Text < 4 Then
Array(x,1).BackColor = Drawing.Color.Red
end if
next


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 166
27 952
271 704
877
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies