Jeg har en tekstfil indeholdende 4 kolonner af oplysninger. Hver kolonne er adskilt med tegnet #. I en kolonne optræder den samme oplysning gentagende gange. Altså: #Varenr #Unik varebetegnelse #varekategori #pris
Altså vil varekategorien optræde gentagende gange.
Nu vil jeg altså lave et script som først læser varekategorierne og præsenterer dem pænt på siden. Varekategorierne skal helst være alfabetisk sorterede og må ikke fremkomme mere end én gang. Dernæst skal varekategorien kædes videre til en side, som læser hver enkelt varebetegnelse, varenr og pris og ligeledes præsenterer disse pænt.
Hvordan gøres dette nemmest og kodeeksempler ville være lækkert?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Den ide har jeg selv fået. Men problemet er, at jeg gerne skulle have sorteret disse arrays. Det er den tricky del eftersom tekstfilen er lavet således, at varegruppen kan fremkomme gentagende gange i adskilte blokke hvis du forstår... Hvis arrayet skal gennemløbes og præsenteres på siden må kategorien ikke fremkomme mere end en gang og skal helst være alfabetisk sorteret.
set FSO = Server.CreateObject("Scripting.FileSystemObject") set readfile = FSO.OpenTextFile("c:\somefile2.txt", 1, false) indhold = readfile.ReadAll readfile.close arrindhold = split(indhold,"#") set fso = nothing for i = 0 to ubound(arrindhold) step 4 response.write arrindhold(i) & "<br>" next
Det er skam fint nok... Men sæt nu værdierne optræder flere gange i digkolonnen. Den skal kun printe værdien første gang, men tage resten af kolonnerne med i pågældende linie og sortere hvad der nu kommer i denne kolonne alfabetisk? ;-)
<body> <% set FSO = Server.CreateObject("Scripting.FileSystemObject") fil = server.mappath("data.txt")
set readfile = FSO.OpenTextFile(fil, 1, false)
strFile = "" do until readfile.AtEndOfStream strFile = strFile & readfile.readline & "¤" loop
readfile.close set fso = nothing
arrLines = Split(strFile,"¤") antal = 100 'antal linier i datafil ReDim arrVarekategorier(0,antal)
Dim arrLine For i = 0 To UBound(arrLines) arrLine = Split(arrLines(i),"#")
for j=3 To Ubound(arrLine)-1 arrVarekategorier(0,i) = arrLine(j) Next
Next
Call BubbleSort(arrVarekategorier, 0, 0)
prevKategori = "" for i = 0 to ubound(arrVarekategorier,2)
if Len(arrVarekategorier(0,i)) > 0 AND NOT prevKategori = arrVarekategorier(0,i) Then response.write arrVarekategorier(0,i) & "<br>" End If prevKategori = arrVarekategorier(0,i)
next
Private Sub BubbleSort(byRef arrTemp, byVal sDim, byVal sSort)
' ====================================================================== ' Name: BubbleSort ' Arguments: arrTemp = The array you want to be sorted ' sDim = The dimension you want to sort for ' sSort = Asc (0) OR Desc (1) ' Returns: A sorted array ' Developer: Dennis Knappe (dennis@activeserverpages.dk) ' ' This sourcecode can only be used if you DO NO remove my name and e-mail ' ======================================================================
Dim n Dim y Dim t Dim tmpTop Dim tmpVal Dim iBookMark Dim BubbleElement
BubbleElement = False
For n = 0 To UBound(arrTemp,2) tmpTop = arrTemp(sDim,n) iBookmark = n
For y = n To UBound(arrTemp,2) If sSort = 0 Then If (tmpTop > arrTemp(sDim,y)) Then BubbleElement = True End If Else If (tmpTop < arrTemp(sDim,y)) Then BubbleElement = True End If End If
If BubbleElement Then tmpTop = arrTemp(sDim,y) iBookmark = y BubbleElement = False End If Next
For t = 0 to UBound(arrTemp, 1) tmpVal = arrTemp(t, n) arrTemp(t, n) = arrTemp(t, iBookmark) arrTemp(t, iBookmark) = tmpVal Next Next
End Sub %>
</body> </html>
--------------------------------------- /askhoej
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.