Avatar billede petras Nybegynder
07. april 2003 - 15:21 Der er 25 kommentarer og
1 løsning

2 listmenuer og resultatet herfra

Jeg har oprettet 2 listmenuer(parent og child) med informationer fra min database. Disse to listmenuer udtrækker et brugerid og en dato for indtastninger af den førnævnte bruger. Når jeg har gjort mit valg i listmenuerne vil jeg gerne at resultatet bliver vist under listmenuerne. Jeg har lavet et recordset hvor alle oplysninger er og har PRØVET at lave en tilsvarende SQL
SELECT *
FROM logbog
WHERE brugerid = 'MMColParam' and dato='MMColParam1'

MMColParam = Request.QueryString("brugerid")
MMColParam1 = Request.QueryString("dato")

Ovennævnte virker ikke - har I en løsning ?

Mvh.

Peter Rasmussen
Avatar billede mortrr Praktikant
07. april 2003 - 15:53 #1
Den åbenlyse kunne være at du bare havde fået skrevet teksten ind i sql'en.
sql="SELECT * FROM logbog WHERE brugerid = 'MMColParam' and dato='MMColParam1'"
burde være
sql="SELECT * FROM logbog WHERE brugerid = '" & MMColParam & "' and dato='" & MMColParam1 & "'"

Det er nu nok ikke det. ;-)

Men - Hverken brugerid eller dato er formentligt tekster, så du bør sammenligne med de rigtige typer.
Hvis brugerid er et tal, skal du sammenligne med brugerid=4.
Hvis dato er en dato, skal du sammenligne med dato=#07/04/2003# eller endnu bedre dato=#2003/04/07#
Avatar billede mortrr Praktikant
07. april 2003 - 15:55 #2
Må hellere lige tilføje at #07/04/2003# kun gælder hvis det er overfor en Access-base. Med mysql ville dit eksempel virke, og med ms-sql skal man bruge convert eller cast.
Avatar billede petras Nybegynder
07. april 2003 - 21:03 #3
Virker desværre ikke
Avatar billede mortrr Praktikant
07. april 2003 - 21:40 #4
Det gør det, hvis det gøres på den rigtige måde.

Hvilken type er dine felter, og hvordan ser den sql-sætning ud som du forsøger med?
Avatar billede petras Nybegynder
07. april 2003 - 21:46 #5
Mit datofelt er af typen "Dato og klokkeslet" og brugerid er af typen "tekst"
Avatar billede petras Nybegynder
07. april 2003 - 21:48 #6
Sql-sætningen er som ovenstående.
Avatar billede mortrr Praktikant
07. april 2003 - 21:50 #7
Det var nu nærmere hvordan den kommer til at se ud.

Eksempel:
sql="SELECT * FROM logbog WHERE brugerid = '" & MMColParam & "' and dato=#" & MMColParam1 & "#"
Response.Write sql
Avatar billede petras Nybegynder
07. april 2003 - 22:01 #8
http://www.holmegaardskolen.dk/pernille/admin_selog1.asp

Du får lige et link så du kan danne dig et overblik...
Avatar billede petras Nybegynder
07. april 2003 - 22:05 #9
<%
Dim rsresultat
Dim rsresultat_numRows

Set rsresultat = Server.CreateObject("ADODB.Recordset")
rsresultat.ActiveConnection = MM_connbagterplogbog_STRING
rsresultat.Source = "SELECT *  FROM logbog  WHERE brugerid = '" + Replace(rsresultat__MMColParam, "'", "''") + "' and Dato=  '" + Replace(rsresultat__MMColParam1, "'", "''") + "'"
rsresultat.CursorType = 0
rsresultat.CursorLocation = 2
rsresultat.LockType = 1
rsresultat.Open()

rsresultat_numRows = 0
%>

...og recordset´et får du også...
Avatar billede mortrr Praktikant
07. april 2003 - 22:47 #10
Prøv lige at indsætte
Response.Write rsresultat.Source
lige før rsresultat.Open()
Avatar billede petras Nybegynder
07. april 2003 - 23:00 #11
Der er sket en ændring - får ikke en fejlmeddelelse når jeg trækker felter ind fra databasen der skal vises. Jeg har dog lidt problemer med at få vist resultatet nu.
Hvis jeg skal have vist de valgte poster som resultater på samme side - hvad gør jeg så med formen. Skal den "poste" til samme side ?
Avatar billede mortrr Praktikant
07. april 2003 - 23:07 #12
Ja - den skal poste til samme side.

(du kunne nu godt have skrevet at du fik en fejlmeddelelse, og hvilken)
Avatar billede petras Nybegynder
07. april 2003 - 23:11 #13
Sorry...  :-)
Avatar billede petras Nybegynder
07. april 2003 - 23:16 #14
Sikker på det skal være QueryString og ikke Request.Form ? Synes ikke jeg kan få det til at fungere. Har du tid til at fortælle kort hvorledes denne form skal sættes op ? Nu hvor det ser ud til at recordset´et ikke fejler.
Avatar billede mortrr Praktikant
07. april 2003 - 23:26 #15
Nej - jeg er ikke sikker på at det skal være QueryString. Du har ikke rigtigt skrevet noget om hvor de kommer fra.

Med formularen på den side du henviser til, skal det være Request.Form.
Request.QueryString er til links med side.asp?a=213 eller formularer hvor method=get, mens Request.Form er til formularer med method=post.
Avatar billede petras Nybegynder
08. april 2003 - 10:39 #16
Fejlmeddelelse:

ADODB.Field (0x800A0BCD)
Enten er BOF eller EOF sand, eller den aktuelle post er blevet slettet. Den anmodede handling kræver en aktuel post.
/pernille/admin_selog1.asp, line 227

Linje 227 ser således ud:

<%=(rsresultat.Fields.Item("tekst").Value)%>

Har lavet et "show if empty...."

PR
Avatar billede mortrr Praktikant
08. april 2003 - 12:55 #17
Kontrollerer du for om der er data?

if not rsresultat.EOF then
%><%=(rsresultat.Fields.Item("tekst").Value)%>

eller

while not rsresultat.EOF
%><%=(rsresultat.Fields.Item("tekst").Value)%>


Kontrollen skal være uden om hele den blok hvor du udskriver data.
Avatar billede petras Nybegynder
08. april 2003 - 13:32 #18
Dette er hvad jeg har:

<%=(rsresultat.Fields.Item("tekst").Value)%></p>
               
                <% If rsresultat.EOF And rsresultat.BOF Then %>
                <p>Vælg herover</p>
                <% End If ' end rsresultat.EOF And rsresultat.BOF %>
Avatar billede petras Nybegynder
08. april 2003 - 13:32 #19
Ærgerligt jeg ikke kan give dig mere end 200 point :-)
Avatar billede mortrr Praktikant
08. april 2003 - 13:58 #20
Umiddelbart: du skal altid kontrollere om du har data inden du udskriver fra et recordset.
Men normalt vil man bruge noget lignende:

rsresultat.open
if not rsresultat.eof then
  lav en hel masse med rsresultat
  som fx response.write rsresultat.felt
end if
rsresultat.close

eller

rsresultat.open
do while not rsresultat.eof
  lav en hel masse med rsresultat
  som fx response.write rsresultat.felt
  rsresultat.movenext
loop
rsresultat.close

Så hvis du ikke har mere end den kode du viser, så:
<%
if not rsresultat.EOF then
  Response.Write "<p>" & rsresultat.Fields.Item("tekst").Value & "</p>"
end if

If rsresultat.EOF Then
  %><p>Vælg herover</p><%
End If ' end rsresultat.EOF
%>

Du bør ikke kontrollere på rsresultat.EOF AND rsresultat.BOF, men bruge de enkelte i hver sin situation.
rsresultat.EOF benyttes hvor man arbejder sig fremad i et recordset (som fx når man lige har åbnet et recordset og efter rsresultat.movenext).
rsresultat.BOF benyttes hvor man arbejder sig bagud i et recordset (rsresultat.MovePrevious).
Avatar billede petras Nybegynder
08. april 2003 - 14:32 #21
Dette bliver for meget for en simpel skolelærer. Må læse lidt mere på ASP-lektien.
Avatar billede petras Nybegynder
08. april 2003 - 14:39 #22
Håber du har fået pointene, Mortrr.
Avatar billede mortrr Praktikant
08. april 2003 - 15:04 #23
Nej - det har du selv.

Jeg lægger normalt ikke et svar før jeg er rimeligt sikker på at det ER et svar.
Avatar billede petras Nybegynder
08. april 2003 - 16:54 #24
Hvordan giver jeg dig disse point ?
Avatar billede mortrr Praktikant
08. april 2003 - 16:58 #25
Det behøver du nu ikke, men du gør det ved at oprette et nyt spørgsmål, som hedder fx "point vedr 337592 til mortrr", som jeg svarer på.
Avatar billede petras Nybegynder
08. april 2003 - 17:00 #26
Jo jo
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