Avatar billede tblaster Nybegynder
06. november 2002 - 14:03 Der er 13 kommentarer og
2 løsninger

Samle oplysninger fra database

Jeg bruger følgende til at hente oplysninger fra min database og skrive det ud:

<%

datoStr = Request.Form("dato")
datoStr = Year(datoStr) & "-" & Month(datoStr) & "-" & Day(datoStr)

Set Conn = Server.CreateObject("ADODB.Connection")
Set Rs = Server.CreateObject("ADODB.Recordset")
Conn.Open "DBQ=" & Server.Mappath("../../db/Booking.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};Password=1234;"

SQL = "SELECT * FROM booking WHERE dato =#" & datoStr & "# ORDER BY Id"

rs.Open SQL, Conn

If rs.BOF AND rs.EOF then
  Response.write "<br>"
  Response.Write "Der er ingen bookninger for d."
  Response.write  Request.Form("dato")
  Response.write "<br>"
End if

        x = 0
        For x = 1 to 9999
        If rs.eof then
        Exit For
        Else

Tid = Left(rs("tid"),5)

response.write "<table border='0' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='100%' id='AutoNumber1'>"
response.write "<tr>"
response.write "<td width='4%' align='center'>"& rs("id")& "</td>"
response.write "<td width='11%' align='center'>"& rs("dato")& "</td>"
response.write "<td width='9%' align='center'>"& Tid & "</td>"
response.write "<td width='11%' align='center'>"& rs("kommentar")& "</td>"
response.write "<td width='10%' align='center'>"& rs("sagsnr")& "</td>"
response.write "<td width='8%' align='center'>"& rs("antal")& "</td>"
response.write "</tr>"
response.write "</table>"

rs.MoveNext
End If
Next
%>

Er det muligt at få den til at same oplysningerne når informationerne er de samme. For eksempel hvis der står følgende:

Dato      Tid  Kommentar  Sagsnr    Antal
06-11-2002 07:30  asf as    sad4726272 39
06-11-2002 08:00  asf as    sad4726272 39
06-11-2002 08:30  asf as    sad4726272 39
06-11-2002 09:00  asf as    sad4726272 39
06-11-2002 09:30  asf as    sad4726272 39
11-12-2002 14:30  Test              s251sf  21

Så vil jeg gerne have den til at samle det hele til dette:
Dato      Start  Slut  Kommentar  Sagsnr    Antal 
06-11-2002 07:30  09:30  asf as    sad4726272 39
11-12-2002 14:30  15:00  Test      s251sf  21

Når der står Tid = 13:00 så betyder det at den strater 13:00 og slutter 13:30!

Er det muligt at samle disse oplysninger og hvordan skal det gøres?
Avatar billede dk_akj Nybegynder
06. november 2002 - 15:22 #1
Jeg vil tro du kan gøre det sådan:

select top(1) * from booking where sagsnummer = xxx order by dato asc, tid asc union
select top(1) * from booking where sagsnummer = xxx order by dato desc, tid desc

//akj
Avatar billede dk_akj Nybegynder
06. november 2002 - 15:29 #2
lavede lige en lille test
på en tabel (table1) med 2 felter felt 1 (datetime) og felt2 (number) henter denne første og sidste række.

select top 1 *  from table1 order by felt1 desc union
select top 1 *  from table1 order by felt1 asc;

//akj
Avatar billede tblaster Nybegynder
06. november 2002 - 16:42 #3
dk akj ... jeg forstår ikke meget af det du skrev :-(

Har du mulighed for at prøve at skrive det sammen med min script ... så forstår jeg måske også lidt mere :-D
Avatar billede dk_akj Nybegynder
07. november 2002 - 07:18 #4
Prøv dette:

<%

datoStr = Request.Form("dato")
datoStr = Year(datoStr) & "-" & Month(datoStr) & "-" & Day(datoStr)

Set Conn = Server.CreateObject("ADODB.Connection")
Set Rs = Server.CreateObject("ADODB.Recordset")
Conn.Open "DBQ=" & Server.Mappath("../../db/Booking.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};Password=1234;"

SQL = "SELECT * FROM booking WHERE dato =#" & datoStr & "# ORDER BY Id"

rs.Open SQL, Conn

response.write "<table border='0' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='100%' id='AutoNumber1'>"

       

If rs.EOF then
  Response.write "<tr><td>"
  Response.Write "Der er ingen bookninger for d."
  Response.write  Request.Form("dato")
  Response.write "</td></tr>"
else

    do while not rs.eof

        sagsnr=rs("sagsnr")
        ' byg ny sql der tager første og sidste række efter tid
        sql = "select top 1 *  from booking where sagsnr = '" & sagsnr & "' order by tid desc union select top 1 *  from booking where sagsnr = '" & sagsnr & "' order by tid asc;
       
        ' execute sql       
        set rs2 = conn.execute(sql)   

        if rs2.eof then
            response.write "<tr><td>Ingen data</td></tr>"
        else
            do while not rs2.eof    ' løb gennem resultatset, der skulle gerne kun være 2 rækker
                Tid = Left(rs("tid"),5)
                response.write "<tr>"
                response.write "<td width='4%' align='center'>"& rs2("id")& "</td>"
                response.write "<td width='11%' align='center'>"& rs2("dato")& "</td>"
                response.write "<td width='9%' align='center'>"& Tid & "</td>"
                response.write "<td width='11%' align='center'>"& rs2("kommentar")& "</td>"
                response.write "<td width='10%' align='center'>"& rs2("sagsnr")& "</td>"
                response.write "<td width='8%' align='center'>"& rs2("antal")& "</td>"
                response.write "</tr>"
            loop
        end if   
        rs.MoveNext
    loop
End If

%>
Avatar billede dk_akj Nybegynder
07. november 2002 - 07:18 #5
ups, kan se jeg har glemt en rs2.movenext

do while not rs2.eof    ' løb gennem resultatset, der skulle gerne kun være 2 rækker
                Tid = Left(rs("tid"),5)
                response.write "<tr>"
                response.write "<td width='4%' align='center'>"& rs2("id")& "</td>"
                response.write "<td width='11%' align='center'>"& rs2("dato")& "</td>"
                response.write "<td width='9%' align='center'>"& Tid & "</td>"
                response.write "<td width='11%' align='center'>"& rs2("kommentar")& "</td>"
                response.write "<td width='10%' align='center'>"& rs2("sagsnr")& "</td>"
                response.write "<td width='8%' align='center'>"& rs2("antal")& "</td>"
                response.write "</tr>"
rs2.movenext
            loop
Avatar billede tblaster Nybegynder
07. november 2002 - 16:31 #6
Det giver:

Unterminated string constant

sql = "select top 1 *  from booking where sagsnr = '" & sagsnr & "' order by tid desc union select top 1 *  from booking where sagsnr = '" & sagsnr & "' order by tid asc;
Avatar billede dk_akj Nybegynder
08. november 2002 - 07:05 #7
Der mangler lige en " i enden:

sql = "select top 1 *  from booking where sagsnr = '" & sagsnr & "' order by tid desc union select top 1 *  from booking where sagsnr = '" & sagsnr & "' order by tid asc;"
Avatar billede tblaster Nybegynder
08. november 2002 - 17:03 #8
Så skriver den:

Ingen data
Ingen data
Ingen data
Ingen data


Selvom der er data!
Avatar billede dk_akj Nybegynder
09. november 2002 - 15:21 #9
sagsnr=rs("sagsnr")
        ' byg ny sql der tager første og sidste række efter tid
        sql = "select top 1 *  from booking where sagsnr = '" & sagsnr & "' order by tid desc union select top 1 *  from booking where sagsnr = '" & sagsnr & "' order by tid asc;

response.write sql

       
        ' execute sql       
        set rs2 = conn.execute(sql)   


kig lige på den sql den skriver ud om der står:
where sagsnr = 'sad4726272' eller lign.
eller where sagsnr = ''.
Avatar billede tblaster Nybegynder
10. november 2002 - 10:20 #10
Nu skriver den således:

select top 1 * from booking where sagsnr = 'p-254-sa' order by tid desc union select top 1 * from booking where sagsnr = 'p-254-sa' order by tid asc; 15 29-11-2002 14:30 Møde p-254-sa 50
19 29-11-2002 14:30 Møde p-254-sa 50
select top 1 * from booking where sagsnr = 'p-254-sa' order by tid desc union select top 1 * from booking where sagsnr = 'p-254-sa' order by tid asc; 15 29-11-2002 15:00 Møde p-254-sa 50
19 29-11-2002 15:00 Møde p-254-sa 50
select top 1 * from booking where sagsnr = 'p-254-sa' order by tid desc union select top 1 * from booking where sagsnr = 'p-254-sa' order by tid asc; 15 29-11-2002 15:30 Møde p-254-sa 50
19 29-11-2002 15:30 Møde p-254-sa 50
select top 1 * from booking where sagsnr = 'p-254-sa' order by tid desc union select top 1 * from booking where sagsnr = 'p-254-sa' order by tid asc; 15 29-11-2002 16:00 Møde p-254-sa 50
19 29-11-2002 16:00 Møde p-254-sa 50
select top 1 * from booking where sagsnr = 'p-254-sa' order by tid desc union select top 1 * from booking where sagsnr = 'p-254-sa' order by tid asc; 15 29-11-2002 16:30 Møde p-254-sa 50
19 29-11-2002 16:30 Møde p-254-sa 50


Er det muligt at få den til at bruge where kommentar ='" & kommentar & "' istedet for sagsnr ... jeg kom i tanke om at det ikke er altid at sagsnr'et er angivet!
Avatar billede dk_akj Nybegynder
11. november 2002 - 07:05 #11
kommentar=rs("kommentar")
        ' byg ny sql der tager første og sidste række efter tid
        sql = "select top 1 *  from booking where kommentar = '" & kommentar & "' order by tid desc union select top 1 *  from booking where kommentar = '" & kommentar & "' order by tid asc;

'response.write sql  ' kun til testformål

       
        ' execute sql       
        set rs2 = conn.execute(sql)
Avatar billede tblaster Nybegynder
11. november 2002 - 16:01 #12
Det giver:

Unterminated string constant
Avatar billede dk_akj Nybegynder
12. november 2002 - 06:57 #13
kommentar=rs("kommentar")
        ' byg ny sql der tager første og sidste række efter tid
        sql = "select top 1 *  from booking where kommentar = '" & kommentar & "' order by tid desc union select top 1 *  from booking where kommentar = '" & kommentar & "' order by tid asc"

'response.write sql  ' kun til testformål

       
        ' execute sql       
        set rs2 = conn.execute(sql)
Avatar billede tblaster Nybegynder
12. november 2002 - 17:14 #14
Nu skrive den bla. dette når jeg udskrive min sql:

select top 1 * from booking where kommentar = 'Møde' order by tid desc union

Men den samler dem stadig ikke under en :-(

Her er min kode som den ser ud lige nu:

<%

datoStr = Request.Form("dato")
datoStr = Year(datoStr) & "-" & Month(datoStr) & "-" & Day(datoStr)

Set Conn = Server.CreateObject("ADODB.Connection")
Set Rs = Server.CreateObject("ADODB.Recordset")
Conn.Open "DBQ=" & Server.Mappath("../../db/Booking.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};Password=1234;"

SQL = "SELECT * FROM booking WHERE dato =#" & datoStr & "# ORDER BY Id"

rs.Open SQL, Conn

response.write "<table border='0' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='100%' id='AutoNumber1'>"

       

If rs.EOF then
  Response.write "<tr><td>"
  Response.Write "Der er ingen bookninger for d."
  Response.write  Request.Form("dato")
  Response.write "</td></tr>"
else

    do while not rs.eof

        sagsnr=rs("sagsnr")
        ' byg ny sql der tager første og sidste række efter tid
        kommentar=rs("kommentar")
        ' byg ny sql der tager første og sidste række efter tid
        kommentar=rs("kommentar")
        ' byg ny sql der tager første og sidste række efter tid
        sql = "select top 1 *  from booking where kommentar = '" & kommentar & "' order by tid desc union select top 1 *  from booking where kommentar = '" & kommentar & "' order by tid asc"
       
        ' execute sql       
        set rs2 = conn.execute(sql)   

        if rs2.eof then
            response.write "<tr><td>Ingen data</td></tr>"
        else
            do while not rs2.eof    ' løb gennem resultatset, der skulle gerne kun være 2 rækker
                Tid = Left(rs("tid"),5)
                response.write "<tr>"
                response.write "<td width='4%' align='center'>"& rs2("id")& "</td>"
                response.write "<td width='11%' align='center'>"& rs2("dato")& "</td>"
                response.write "<td width='9%' align='center'>"& Tid & "</td>"
                response.write "<td width='11%' align='center'>"& rs2("kommentar")& "</td>"
                response.write "<td width='10%' align='center'>"& rs2("sagsnr")& "</td>"
                response.write "<td width='8%' align='center'>"& rs2("antal")& "</td>"
                response.write "</tr>"
          rs2.movenext
            loop   
        end if   
        rs.MoveNext
    loop
End If

%>
Avatar billede tblaster Nybegynder
25. marts 2003 - 20:39 #15
Lukker
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester