Avatar billede micplus Nybegynder
25. april 2005 - 21:31 Der er 20 kommentarer og
2 løsninger

Udtræk fra db giver eof fejl

Godaften,

er der én der lynhurtig kan fortælle, hvorfor dette ikke virker...

<%
Set Connect2 = Server.CreateObject("ADODB.Connection")
strDSN2 = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("p/file1.mdb")
Connect2.Open strDSN2
%>
   
    <%
Set Connect1 = Server.CreateObject("ADODB.Connection")
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("p/file2.mdb")
Connect1.Open strDSN
    Set RS_MainMessage1 = Connect1.Execute("SELECT top 5 * FROM com ORDER BY id DESC")
    do while not RS_MainMessage1.EOF
    navn = RS_MainMessage1("navn")
    besked = RS_Mainmessage1("besked")
    reference = RS_Mainmessage1("ref")
    beskededit = trim(Left(besked, 100)) & "..."
    %>
   
    <%
    Set RS_MainMessage2 = Connect2.Execute("SELECT * FROM lop WHERE ID = " & reference & "")
    y1 = RS_MainMessage2("year")
    m1 = RS_Mainmessage2("month")
    i1 = RS_mainmessage2("id")
    %>
   
   
   
    <b><%=navn%></b>
    <br>
    <%=beskededit%>
    <br><br>
    <a href="site.asp?y=<%=y1%>&m=<%=m1%>&input=<%=i1%>" class="ulink" onfocus="this.blur()">læs indlæg</a>
   
    <% rs_mainmessage1.Movenext
    loop
    %>
Avatar billede busschou Praktikant
25. april 2005 - 21:39 #1
er det RS_MainMessage2 som er eof?
Den har du jo ikke et tjek på
Avatar billede cpufan Juniormester
25. april 2005 - 21:43 #2
måske du skal teste

if len(besked)>100 then
beskededit = trim(Left(besked, 100)) & "..."
else
beskededit = besked
end if
Avatar billede busschou Praktikant
25. april 2005 - 21:43 #3
Bortset fra det...så skriver du id med stort i denn
Set RS_MainMessage2 = Connect2.Execute("SELECT * FROM lop WHERE ID = " & reference & "")
men med småt i denne
i1 = RS_mainmessage2("id")
Ikke at det ændrer din eof fejl...men det bør vel være ens :o)
Avatar billede busschou Praktikant
25. april 2005 - 21:45 #4
cpufan >> Det ændrer jo ikke på en eof ;o) ...
Avatar billede cpufan Juniormester
25. april 2005 - 21:57 #5
nix busschou

og man kan bruge den samme connection til flere sql's vel at mærke hvis det er samme db.
Connect2 kan lige så godt benytte Connect1
Avatar billede cpufan Juniormester
25. april 2005 - 21:58 #6
nå ups, så lige at det ikke er samme db.............
undskyld
Avatar billede micplus Nybegynder
25. april 2005 - 22:02 #7
busschou,

ja - det er RS_MainMessage2 .... Har du en idé til en løsning ?
Avatar billede busschou Praktikant
25. april 2005 - 22:04 #8
Jamen du må jo lave en
if not RS_MainMessage2.eof
Men så kan du heller ikke lave dit link
Avatar billede micplus Nybegynder
25. april 2005 - 22:07 #9
det er netop hvad jeg vil ;) .. altså, bruge info fra DB-1 til at hente linket fra DB-2.
Avatar billede busschou Praktikant
25. april 2005 - 22:08 #10
yes ...men din eof fejl betyder jo netop at der så ikke er et link med den reference ;o)
Avatar billede micplus Nybegynder
25. april 2005 - 22:12 #11
jamen, .. det _er_ der netop. Det er hvorfor jeg ikke forstår, hvad der går galt - jeg henter jo netop den relevante data fra den første database.
Avatar billede busschou Praktikant
25. april 2005 - 22:14 #12
prøv udskrive dem og se om du kan se hvad der går galt
Altså
<%
Set Connect2 = Server.CreateObject("ADODB.Connection")
strDSN2 = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("p/file1.mdb")
Connect2.Open strDSN2
%>
 
    <%
Set Connect1 = Server.CreateObject("ADODB.Connection")
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("p/file2.mdb")
Connect1.Open strDSN
sql1 = "SELECT top 5 * FROM com ORDER BY id DESC"
response.write sql1
    Set RS_MainMessage1 = Connect1.Execute(sql1)
    do while not RS_MainMessage1.EOF
    navn = RS_MainMessage1("navn")
    besked = RS_Mainmessage1("besked")
    reference = RS_Mainmessage1("ref")
    beskededit = trim(Left(besked, 100)) & "..."
    %>
 
    <%
sql2 = "SELECT * FROM lop WHERE ID = " & reference
response.write sql2
    Set RS_MainMessage2 = Connect2.Execute(sql2)
    y1 = RS_MainMessage2("year")
    m1 = RS_Mainmessage2("month")
    i1 = RS_mainmessage2("id")
    %>
 
 
 
    <b><%=navn%></b>
    <br>
    <%=beskededit%>
    <br><br>
    <a href="site.asp?y=<%=y1%>&m=<%=m1%>&input=<%=i1%>" class="ulink" onfocus="this.blur()">læs indlæg</a>
 
    <% rs_mainmessage1.Movenext
    loop
    %>
Avatar billede busschou Praktikant
25. april 2005 - 22:15 #13
hvis den giver eof kan det kun betyde at der IKKE er et ID = reference
Avatar billede micplus Nybegynder
25. april 2005 - 22:31 #14
ahh - nu begynder det at hjælpe...

Problem med EOF'en er, at den prøver at hente udtræk fra db'en hvor ID = 9999. Jeg har indsat 2 poster, som er lidt udenfor kategori, og som ikke skal tages med (dem havde jeg overset!).

Hvordan omskriver jeg nemmest :
Set RS_MainMessage2 = Connect2.Execute("SELECT * FROM lop WHERE ID = " & reference & "") til at undtage de tilfælde hvor ID/reference = 9999 og 9998
Avatar billede cpufan Juniormester
25. april 2005 - 23:15 #15
Set RS_MainMessage2 = Connect2.Execute("SELECT * FROM lop WHERE ID = " & reference & " AND ID <> 9999 AND ID <> 9998"
Avatar billede cpufan Juniormester
25. april 2005 - 23:16 #16
eller
Set RS_MainMessage2 = Connect2.Execute("SELECT * FROM lop WHERE ID = " & reference &" AND ID NOT IN (9998,9999)"
Avatar billede cpufan Juniormester
25. april 2005 - 23:17 #17
du får lige svar
Avatar billede micplus Nybegynder
25. april 2005 - 23:23 #18
det giver stadig en EOF, da den ID den vil hente = 9999.... desværre :(
Avatar billede busschou Praktikant
26. april 2005 - 05:54 #19
Jeg gætter på du vælger top 5 fordi du vil have fem poster?
Så du bliver nød til at lave en tæller hvis du ikke ved hvor mange poster som hedder 9999 eller 9998 og du stadig ønsker 5
-----
<%
Set Connect2 = Server.CreateObject("ADODB.Connection")
strDSN2 = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("p/file1.mdb")
Connect2.Open strDSN2
count = 0

Set Connect1 = Server.CreateObject("ADODB.Connection")
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("p/file2.mdb")
Connect1.Open strDSN
sql1 = "SELECT * FROM com ORDER BY id DESC"
Set RS_MainMessage1 = Connect1.Execute(sql1)
  do while not RS_MainMessage1.EOF and count < 5
    navn = RS_MainMessage1("navn")
    besked = RS_Mainmessage1("besked")
    reference = RS_Mainmessage1("ref")
    beskededit = trim(Left(besked, 100)) & "..."
    if reference <> 9999 and reference <> 9998 then
    count = count + 1
    sql2 = "SELECT * FROM lop WHERE ID = " & reference
    response.write sql2
    Set RS_MainMessage2 = Connect2.Execute(sql2)
    y1 = RS_MainMessage2("year")
    m1 = RS_Mainmessage2("month")
    i1 = RS_mainmessage2("id")
    %>
    <b><%=navn%></b>
    <br>
    <%=beskededit%>
    <br><br>
    <a href="site.asp?y=<%=y1%>&m=<%=m1%>&input=<%=i1%>" class="ulink" onfocus="this.blur()">læs indlæg</a>
<%  end if
  rs_mainmessage1.Movenext
  loop
    %>
Avatar billede micplus Nybegynder
26. april 2005 - 06:35 #20
herligt ! det var lige hvad der skulle til :)
Smid lige et svar busschou.

Og en stor tak for hjælpen !
Avatar billede busschou Praktikant
26. april 2005 - 07:37 #21
Det var så lidt da ... sorry jeg ikke var der igår...var monster træt..hehe
Godt det virker :o)
Avatar billede micplus Nybegynder
26. april 2005 - 19:37 #22
Fordeler dem 20/10, da cpufan har gjort et godt forsøg ! ;)
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