' ## LIST AGENDA
SQL = "SELECT * FROM [agenda_titles] LEFT JOIN [agenda_notes] ON agenda_notes.x_titleID = agenda_titles.x_ID" _
& " WHERE agenda_notes.x_date = #" & date() & "# AND agenda_titles.x_view = TRUE ORDER BY agenda_titles.x_sortfield;"
response.write sql & "<BR>"
set mySQL = Conn.Execute(SQL)
on error resume next
myGetRowxx = mySQL.GetRows()
---
SELECT * FROM [agenda_titles] LEFT JOIN [agenda_notes] ON agenda_notes.x_titleID = agenda_titles.x_ID WHERE agenda_notes.x_date = #2001-07-12# AND agenda_titles.x_view = TRUE ORDER BY agenda_titles.x_sortfield;
Just nu skriver den bara ut de titlar (alltså klockslag eller vad man nu vill ha) som har ett värde. Finns det ett sätt att skriva ut alla agenda_titles.x_name även dom som inte har någon post kopplade till sig?
SQL = "SELECT * FROM [agenda_titles] LEFT JOIN [agenda_notes] ON agenda_notes.x_titleID = agenda_titles.x_ID" _
& " WHERE (agenda_notes.x_date = #" & date() & "# or agenda_notes.x_date is null) AND agenda_titles.x_view = TRUE ORDER BY agenda_titles.x_sortfield"
------------------ essentitia preter non sans multiplicandum
FULL JOIN tror jag skulle vara mer lämpligt, men det verkar inte stödjas av så många.
Jag fick jättekonstiga svar från din kod samt lite modifieringar av den samma. Den visade bara sex av 15 poster i nån konsigt slumpartad manéer som gör det lite svårt att felsöka...
SQL = "SELECT * FROM [agenda_titles] " _
& " LEFT JOIN [agenda_notes] ON agenda_notes.x_titleID = agenda_titles.x_ID" _
& " WHERE agenda_titles.x_name <> '' AND agenda_titles.x_view = TRUE " _
& " ORDER BY agenda_titles.x_sortfield;"
Det fungerar relativt bra, jag får tag i alla poster som över huvudtaget finns. Så snart jag lägger till en fråga om datumet blir det bara *just den* frågan.
Dessutom kommer jag få samma tid tvågånger och det vill jag inte... Hmm... det vet jag inte riktigt hur jag ska lösa. Nestlade GetRows kanske!?
---
Menyn till vänster, klockslagen alltså, är redigerbar, därav den något krångliga frågeställningen.
Visa mig en tredimensionell variant med GetRows! Jag kollade manualen och getrows finns inte ens med... lite konstigt!
Skapa inte båda samtidigt utan den ena först och den andra sen, med hjälp av den första:
' ## LIST AGENDA TITLES - AGENDA
SQL = "SELECT * FROM [agenda_titles] WHERE [x_view] = TRUE ORDER BY [x_sortfield];"
set mySQL = Conn.Execute(SQL)
on error resume next
session("listAgendaTitles") = mySQL.GetRows()
Visa mig en tredimensionell variant med GetRows! Jag kollade manualen och getrows finns inte ens med... lite konstigt!
Vilken manual? GetRows är en ADO-metod, så den finns inte med i VBScript-dokumentationen.
GetRows fixar bara två dimesioner. Vill du ha tre så får du ta till hierarkiska recordset med DataShaping. Dessa recordset kan man köra getrows på, men det funkar ändå inte.
Om man av någon anledning måste ha arrayer, och inte nöjer sig med ett disconnected recordset kan man använda nedanstånde funktion, som är en liten GetRows för hierarkiska recordset, som jag skrev för ett tag sedan. Men, det man får inte hastighetsfördelarna som man har med getrows.
function HGetRows(rs)
ReDim tmparray(rs.fields.count-1,0)
Dim i,j
i=0
do until rs.eof
redim preserve tmparray(rs.fields.count-1,i)
for j=0 to rs.fields.count - 1
if typename(rs.fields(j).value)="Recordset" then
tmparray(j,i)=HGetRows(rs.fields(j).value)
else
tmparray(j,i)=rs.fields(j).value
end if
next
rs.movenext
i=i+1
loop
HGetRows=tmparray
end function
VisualBasic Scripting - et litet skitprogram på 200 k från MS men det innehåller allt man behöver. Utom GetRows då.
...Dessa recordset kan man köra getrows på, men det funkar ändå inte.
OK... Intressant resonemang. Inget för mig med andra ord.
Som jag ser det blir det en "halvstatisk" variant. Man kan ändra i menyn, men det sker inte "under drift" så att säga. I det fallet är menyn intakt, alltså statisk. SÅ menyn kan jag läsa in vid ett tillfälle.
Men alla anteckningar måste man läsa in en och en i nån slags nestlad loop. Det blir färre databasfrågor och det är en klar förbättring.
---
Tack för koden. Jag känner att mina kunskaper på området inte riktigt greppar allt. Men får jag bara sova på saken löser det sig nog!
Till sist undrar jag bara hur du får den fina indenteringen när du pejstar kod i forumet? Det kanske är forumledare förunnat! :-)
Du tror inte forumet kan uppdatera [kod] taggen att även hantera tabbar? Det låter inte direkt som en extremt avancerad åtgärd och jag tror många skulle uppskatta det.
Dom som skiter i indenterad kod indenterar den ju inte 'in the first place' i alla fall, så att säga...
---
Major problems found. Websidan är fortfarande seg som knäck och jag vet inte varför... Det är inte relaterat till den kod vi diskuterat här, det är nämligen ovanför dessa rader.
Jag har en sida med både "gammal" och "ny" kod på och det märks ingen skillnad...
"Det ser snyggare ut" men vem bryr sig...? Kommer tid kommer råd.
' ## PRINT NOTES
IF myGetRowMenu(0, j) = myGetRowNotes(2, i) THEN
tmp = tmp & "<A HREF=""index.asp?date=" & myDate & user & title & "=" & myGetRowNotes(0, i) & """>"
tmp = tmp & "<IMG SRC=""/admin/pics/icons/edit.gif"" WIDTH=""18"" HEIGHT=""13"" BORDER=""0"" " '<<-- [b]denna raden[/b]
tmp = tmp & "ALT=""Redigera " & myGetRowNotes(7, i) & " " & myGetRowNotes(8, i) & """></A><B>"
tmp = tmp & UCase(myGetRowNotes(7, i)) & "</B> " & myGetRowNotes(4, i) & vbCRLF
' ## LEAVE SOME SPACE BETWEEN POSTS
IF NOT j = UBound(myGetRowNotes, 2) THEN tmp = tmp & " "
END IF
Det blir problem om man kommer till en dag då det inte finns några poster, alltså en "tom" dag. Då skrivs den markerade raden ut på varje loop.
Det uppstår när man valt kreterier som inte finns, alltså då det blir noll träffar. Typ lista alla poster en tisdag med en viss person. Det kanske inte finns poster med den personen.