Új hozzászólás Aktív témák
-
válasz
Parameter
#4109
üzenetére
Amúgy félrenéztem a tábládat - első pillantásra az időből azt gondoltam, hogy csökkenő sorrendben van (valójában növekvőben, csak megzavart a végén a reggel 7 óra). Ehhez nem jó a programom, hanem az a leírás használható, amit a hsz-om végén írtam (ha megfordítod a logok sorrendjét excelben, akkor mondjuk jó lesz). Amúgy elég problémás egy olyan log, amiben az idö mellett nincs dátum...
-
válasz
Parameter
#4109
üzenetére
De amit becsatoltál, az excel volt - ezért VBA-ban írtam meg... Milyen formában elérhetők a kódok?
Favágó logika: végigmegyek soronként és ha valahol OUT van, akkor (szubrutinban) a következőtől kezdve megkeresem az első IN-t és összehasonlítom a megfelelő mezőket. Ha egyeznek, akkor a végére kiírom az időt, ha nem találok egyezőt, akkor kiírom, hogy nincs egyező.
Ezzel amúgy két probléma van
1) ha valamiért nincs IN (nem került be a logba), akkor egy korábbi IN-t fog megtalálni (esetleg több out is megkapja ugyanazt az IN időpontot)
2) Ha nagyon hosszú a fájl és hosszúak a session-ök, akkor közel exponenciálisan nö a feldolgozási időEnnél jobb módszer, ha sorban dolgozod fel a logokat és egy struktúrába berakod az összes OUT-ot és menet közben szépen ellenőrzöd az IN-eket is. Ha találtál párt akkor az adott OUT sorát frissíted, majd kiveszed a struktúrából. Ami pedig a feldolgozás végén marad, ahhoz odaírod, hogy nem találtál IN-t.
Ez a módszer fájl-alapú logolásnál működhet, de azok a session-ök nem lesznek azonosíthatók, amelyek nyitása az előző fájlokban voltak.Ha pedig realtime log feldolgozás van (syslog) - vagy a log (egyébként így szokott lenni) időrendben növekvő (legkorábbi esemény van a fájl elején) rendben van, akkor érdemes az IN-eket letárolni (mivel ugye azt kapod meg először). Ha később jön egy (neki megfelelő) OUT sor, akkor az ahhoz tartozó IN dátumát beírni mellé és az IN-t kivenni az ideiglenes tárból...
-
válasz
Parameter
#4105
üzenetére
Mondjuk ennek semmi köze nincs a C#-hoz...
Public Sub TestLogout()
Dim c As Range
For Each c In Sheet1.UsedRange.Columns(2).Cells
If c.Value = "OUT" Then
Set c = c.EntireRow
Set Row = FindRelativeRow(c)
If Row Is Nothing Then
c.Columns(6).Value = "No Entries Found"
Else
c.Columns(6).Value = Row.Columns(1)
End If
End If
Next
End Sub
Private Function FindRelativeRow(currentRow As Range) As Range
For r = currentRow.Row + 1 To Sheet1.UsedRange.Rows.Count
If Sheet1.UsedRange.Cells(r, 2).Value = "IN" Then
If Sheet1.UsedRange.Cells(r, 3).Value = currentRow.Columns(3) And _
Sheet1.UsedRange.Cells(r, 4).Value = currentRow.Columns(4) And _
Sheet1.UsedRange.Cells(r, 5).Value = currentRow.Columns(5) Then
Set FindRelativeRow = Sheet1.UsedRange.Rows(r)
Exit Function
End If
End If
Next
Set FindRelativeRow = Nothing
End Function
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Google Pixel topik
- Túl nagy alkatrészt vettél? Így kerülheted el a PC-építés legnagyobb hibáját
- Dacia topic
- Autós topik
- OLED TV topic
- Renault, Dacia topik
- Path of Exile (ARPG)
- Milyen légkondit a lakásba?
- BestBuy topik
- Itt a Galaxy S26 széria: az Ultra fejlődött, a másik kettő alig
- További aktív témák...
- iPhone 14 Pro 128GB gyári független új akku!
- ADATA Legend 710 512GB PCIe Gen3 X4 M2 NVMe / Beszámítás OK!
- Kioxia XG8 4TB M.2 NVME PCI-E 4.0 x4 - 7000-5800 MBs - Eladó
- Lenovo ThinkPad T15 Gen 2 i5-1135G7 16GB Ram 256 GB SSD FHD IPS Garancia
- Lenovo ThinkPad P15 Gen 2 i7-11850H 32 GB RAM 512 GB SSD NVIDIA T1200 Garancia
- Veszünk: PS5 Fat/Slim/Digital/Pro konzolt, játékokat, Portalt stb. Kérj ajánlatot!
- Hp Zbook 15 G5 15,6" FHD/ i7-8850H, 32GB, 512GB SSD, Quadro P2000- HUN / számla-garancia
- REFURBISHED és ÚJ - Lenovo ThinkPad Ultra Docking Station (40AJ)
- Corsair gamer fejhallgató HS80 MAX
- Dell Latitude 7280,12.5",HD,i5-6200U,8GB DDR4,256GB SSD,WIN11
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

