Hej!
Jag har följande kod som består av två funktioner.
Hur gör jag för att kunna gruppera i tabellen? Säg att jag vill gruppera på kunder. Då vill jag få en tabellrad med kundens namn, under denna ska tillhörande poster listas.
Jag har testat lite med följande princip, men får det inte riktigt att fungera.
sLastGroup="###"
while not Rs.EOF
if Rs("MittFält")<>sLastGroup then
response.write"<tr><td colspan='xxx'>Wee!</td></tr>)
end if
sLastGroup=Rs("MittFält")
Response.write "<tr><td>...</td><td>...</td></tr>"
wend
Mina funktioner:
function InsertContractTemplates()
dim s, i
dim Conn, Rs, sSQL
dim a
dim sTaskList, lastContract, sLastGroup
Set Conn = CreateObject( "ADODB.Connection" )
Conn.Open Application.sDbConnectionString
Set Rs = CreateObject( "ADODB.Recordset" )
sSQL = "SELECT "
for i=0 to g_nCols-1
sSQL = sSQL & g_sColField(i) & " AS FIELD_" & i & ", "
next
sSQL = sSQL & "[tblContract].[CustomerNr] AS CustomerNr, [tblContractTemplate].[Id] AS TemplateId, [tblContractTemplate].[StartDate], [tblContractTemplate].[StopDate]," _
& " [tblContractTemplate].[RepeatUnit], [tblContractTemplate].[RepeatAmount], [tblContractTemplate].[RepeatAt], [tblContractTemplate].[DurationUnit]," _
& " [tblContractTemplate].[DurationAmount], [tblContractTemplate].[StartAtMinute], [tblContractTemplate].[FixedStartDate], [tblContractTemplate].[GeneratedStopDate]," _
& " [tblTask].[Status] AS TaskStatus, tblTask.[Id] AS TaskId, tblTask.[PlanstartDate], [tblUsers].[Sign] AS UserSign, [tblUsers].[Name] AS UserName" _
& " FROM [tblContract]" _
& " LEFT JOIN [tblContractTemplate]" _
& " ON [tblContract].[Id] = [tblContractTemplate].[ContractId]" _
& " LEFT JOIN [tblUsers]" _
& " ON [tblContractTemplate].[User]= [tblUsers].[Name]" _
& " LEFT JOIN tblContractTask" _
& " ON tblContractTemplate.[Id] = tblContractTask.TemplateId" _
& " LEFT JOIN tblTask" _
& " ON tblContractTask.TaskId = tblTask.[Id]" _
& " WHERE [tblContractTemplate].[ContractId] IN (" & sContractId & ")"
if par_user<>"" then sSQL = sSQL & " AND [tblContractTemplate].[User]='" & par_user & "' "
'Kunna visa typ av avtal
if par_type<>"" then sSQL = sSQL & " AND [tblContractTemplate].[CustomT1]='" & par_type & "' "
'Kunna visa endast visa
if par_status<>"" then sSQL = sSQL & " AND [tblTask].[Status]=" & par_status & " "
sSQL = sSQL & " ORDER BY [tblContract].[CustomerNr]"
'sSQL = sSQL & " ORDER BY [tblContract].[CustomerNr] AND " & g_sColField(0)
Rs.Open sSQL, Conn, 1
lastContract=""
sTaskList=""
'sLastGroup="###"
while not Rs.EOF
'if Rs("CustomerNr")<>sLastGroup then
'Response.write "<tr><td colspan='xxx'>" & sLastGroup & "</td></tr>"
'end if
'response.write Rs("CustomerNr")
if Rs("TemplateId") <> lastContract then
if sTaskList<> "" then
Rs.moveprevious
a = split(right(sTaskList, len(sTaskList)-1), ",")
s = s & InsertRow(Rs, a)
Rs.movenext
sTaskList=""
end if
end if
sTaskList=sTaskList & "," & Rs("TaskId") & "|||" & Rs("TaskStatus") & "|||" & Rs("PlanStartDate") & "|||" & Rs("UserSign")
'sLastGroup=Rs("CustomerNr")
lastContract=Rs("TemplateId")
Rs.MoveNext
wend
if sTaskList<> "" then
rs.moveprevious
a = split(right(sTaskList, len(sTaskList)-1), ",")
s = s & InsertRow(Rs, a)
sTaskList=""
end if
Rs.Close
Conn.Close
set Rs=Nothing
Set Conn=Nothing
InsertContractTemplates=s
end function
Och
function InsertRow(Rs, a)
dim s
dim tmDate(255)
dim nDates
dim m, i, j, l
dim sOutput
dim aTemp
dim monthInfo(11)
dim lTaskId, nTaskStatus, dStartDate
dim re, tempRe
set re=new regexp
re.pattern="^\|{9}$"
for i=0 to ubound(a)
if not re.test(a(i)) then
tempRe=re.pattern
re.pattern="\d{4}-\d{2}-\d{2}"
set match=re.execute(a(i))
if match.count>0 then
m=datepart("m", CDate(match(0)))
monthInfo(cint(m)-1)=a(i)
end if
re.pattern=tempRe
end if
next
set re=nothing
response.write Rs("CustomerNr") & "<br>"
s = "<tr valign='top'>"
for i=0 to g_nCols-1
s = s & "<td nowrap>" & Rs("FIELD_" & i) & "</td>"
next
nDates=GenerateDates(Rs, tmDate)
for i=0 to g_nDateCols-1
s = s & "<td width='35' nowrap align='center'"
if i mod 2=0 then s = s & " bgcolor='" & g_sAltDateColor & "'"
s = s & ">"
if isEmpty(monthInfo(i)) then
'Ingen ikon för denna månad
lTaskId=-1
nTaskStatus=-1
dStartDate=-1
sUserSign=-1
else
'gör en split på monthInfo(i) och "|||", och skicka in dem till GetTaskStatusImg
aTemp = split (monthinfo(i), "|||")
lTaskId=aTemp(0)
nTaskStatus=aTemp(1)
dStartDate=aTemp(2)
sUserSign=aTemp(3)
end if
sOutput=""
for j=0 to nDates-1
if DatePart("M", tmDate(j))=DatePart("M", g_tmStartDate(i)) then
sOutput = GetCellValue(sOutput, Rs("TemplateId"), tmDate(j))
end if
next
if sOutput="" then
sOutput=GetTaskStatusImg(lTaskId, nTaskStatus, g_tmStartDate(i), dStartDate, sUserSign)
end if
s = s & sOutput
s = s & " </td>"
next
s = s & "</tr>"
InsertRow=s
end function
Mycket tacksam för hjälp!
Mvh
Henrik