Hoppas ni fattar...
Jag förstår nog inte riktigt. Exakt vad är problemet? Vilka uppdragsnummer är det du vill jämföra?
Mvh
7 svar · 523 visningar · startad av devotion
:h
Hehe.. bara jag igen....
Följande kod loopar ut information från en tabell och skriver till en annan.
'Loopa ut informationen för de uppdragen som skall slås ihop
For i = 1 To Request.Form("checkTask").Count
'Hämta information från vart och ett av uppdragen
iTaskId = cLng(request.form("checkTask")(i))
'SQL-fråga för att hämta uppdraget i databasen
sSQL = "SELECT * FROM tblTask WHERE Id = " & iTaskId & " ORDER BY ID"
Set objRS = objConn.Execute(sSQL)
'Tilldela värden till variablerna
sTaskNr = objRS("TaskNr")
'Göra jämförelser mm
'Skriva till databasen
sSQL = "UPDATE ..."
Next
Om uppdragsnumrena är samma dvs sTaskNr är lika så fungerar det ju fint.
Men man kan ju sammanfoga olika uppdrgasnumemr dvs sTasknr skiljer sig.
Nu till frågan.
Hur skulle man kunna jämföra sTaskNr i loopen och om de skiljer sig skriva ett nytt nummer efter loopen
For i ....
sTaskNr = to2005099
sTaskNr = to2005100
'aha olika uppdragsnummer skapa en ny variabel to2005099_ny
'Skriv in informationen i databasen
sSQL = UPDATE..."
Next
'Skriv in det nya uppragsnumret till databasen
sSQL = "UPDATE..."
Hoppas ni fattar...
Tack på förhand
Mvh
henrik
Edit för komplett kod se; http://www.webforum.nu/showthread.php?p=1137341#post1137341
Hoppas ni fattar...
Jag förstår nog inte riktigt. Exakt vad är problemet? Vilka uppdragsnummer är det du vill jämföra?
Mvh
'Loopa ut informationen för de uppdragen som skall slås ihop
iCount=Request.Form("checkTask").Count
TaskIdList=""
'Egentligen kan man hämta en färdig kommaseparerad sträng från request.form("checkTask"), men då får vi ingen typkontroll. Man skulle kunna använda en regexp också.
For i = 1 To iCount
TaskIdList=TaskIdList & cLng(request.form("checkTask")(i))
if i<iCount then TaskIdList=TaskIdList & ","
Next
'SQL-fråga för att hämta uppdrage[b]n[/b] i databasen
sSQL = "SELECT * FROM tblTask WHERE Id IN (" & TaskIdList & ")"
Set objRS = objConn.Execute(sSQL)
'Behandla hela klabbet på en gång. Ännu hellre, om möjligt, genom att göra "UPDATE blablabla WHERE Id IN ..."
Aha!
Jag är nog dålig på att förklara... :r men du har givit mig lite ideér ia af och det är bra...
Jag har använt mig av delar av din kod....
'Loopa ut informationen för de uppdragen som skall slås ihop
iCount=Request.Form("checkTask").Count
'Nollställa sTaskNrList
sTaskNrList=""
For i = 1 To iCount
'Hämta information från vart och ett av uppdragen
iTaskId = cLng(request.form("checkTask")(i))
'SQL-fråga för att hämta uppdraget i databasen
sSQL = "SELECT * FROM tblTask WHERE Id = " & iTaskId & " ORDER BY ID"
Set objRS = objConn.Execute(sSQL)
'Avgöra om uppdraget har samma uppdragsnummer
sSQL = "SELECT TaskNr FROM tblTask WHERE Id = " & iTaskId
Set objRS2 = objConn.Execute(sSQL)
sCompereTaskNr = "" & objRS2("TaskNr")
objRS2.Close
Set objRS2 = Nothing
sTaskNrList = sTaskNrList & sCompereTaskNr
if i < iCount then sTaskNrList = sTaskNrList & ","
'Tilldela värden till variablerna
Resultatatet blir en Kommaseparerad lista på TaskNr i variabeln sTaskNrList
då känns det som jag kommit lite på vägen...
Följdfrågan blir då:
Går det att göra något med variabeln sTakNrList? Dvs kan man göra en jämförelse..
att
Om de kommaseparerade värdena är lika then variabeln blnDifferentTaskNr = False
Förstår ni vad jag är ute efter? :)
Mvh
henrik
Använd split() och sedan (typ):
dim arr, i
arr = split(replace(sTaskNrList, " ", ""), ",")
if ubound(arr) > 0 then
dim equal
equal = true
for i = 1 to ubound(arr)
if arr(0) <> arr(i) then
equal = false
exit for
end if
next
if not equal then
'värdena ej lika
else
'värdena lika
end if
end if
:)
Hej! :)
Dåså, då kanske vi kan avsluta den här tråden...
Tack för all hjälp. tipps och ideér...
Det visade sig att lösningen inte var så svår, jo det är klart, Peter S kod hade jag inte klurat ut.... Men den kommaseparerade strängen fanns redan i koden... Men tack emission! Du fick mig att tänka till...
Lösningen ser ut så här:
I FOR NEXT delen som loopar igenom alla uppdrag ligger denna koden:
'Bygga en kommaseparerad sträng med de sammanslagna uppdragsnumrena
sTaskJoined = sTaskJoined & sTaskNr & ", "
Denna strängen använder jag sedan eftter loopen för att kontrollera om de olika uppdragen i strängen är lika eller olika.
'Skapa kommaseparerad sträng med uppdragsnummer, samt ta bort det sista kommat.
if len(sTaskJoined) > 2 then sTaskJoined = left(sTaskJoined, len(sTaskJoined)-2)
dim arr
arr = split(replace(sTaskJoined, " ", ""), ",")
blnDifferentTaskNr = False
if ubound(arr) > 0 then
for i = 1 to ubound(arr)
if arr(0) <> arr(i) then
blnDifferentTaskNr = True
exit for
end if
next
end if
värdet på blnDifferentTaskNr kan jag sedan använda vidare i min kod...
Det här var ett sätt att göra det på... Har någon synpunkter eller ideer lyssnar jag gärna
Mvh
henrik
Då kan vi förenkla en aning:
sTaskJoined = sTaskJoined & sTaskNr & ","
'Skapa kommaseparerad sträng med uppdragsnummer, samt ta bort det sista kommat.
if len(sTaskJoined) > 2 then sTaskJoined = left(sTaskJoined, len(sTaskJoined)-2)
dim arr
arr = split(sTaskJoined, ",")
[b]blnDifferentTaskNr = False[/b]
if ubound(arr) > 0 then
for i = 1 to ubound(arr)
if arr(0) <> arr(i) then
blnDifferentTaskNr = True
exit for
end if
next
end if
'använd blnDifferentTaskNr
:)