Avatar billede rikkev Nybegynder
05. juli 2001 - 10:51 Der er 8 kommentarer og
1 løsning

Søgeresultat ikke korrekt

Hej,

Jeg oplever at en sql søgning via odbc connection giver 0 hits på webben, mens nøjagtig samme søgning foretaget via Access giver næste 200 poster? Kan nogen forklare mig, om der kan være en slags \'out of time\' problem (søgningen går meget, meget sløvt i webudgaven)

Med venlig hilsen
Rikke

Sætningen (er noget lang):
rs =
SELECT problems.number, problems.open_date, problems.brief_description, problems.contactname, webreport.resolution, problink.incident_id
FROM problems, webreport, problink
WHERE webreport.problem = problems.number and problems.number = problink.number and open_date <= \'2001-01-07\' and open_date >= \'2000-01-05\' and problems.company = \'maersk line \' and (Upper(brief_description) like Upper(\'%rkem%\') or resolution like \'%rkem%\')
ORDER BY open_date desc

Sql sætningen er samlet fra formfelter og resultatet vises som følger:

<% If (rs.BOF Or rs.EOF) Then
    response.Write \"No records found matching your search\"
    else
  Do Until rs.EOF
    response.Write \"<table border cellspacing=2 cellpadding=3 width=600>\"
    response.Write \"<tr><th><h3>PMnumber</h3></th><th><h3>Brief Description</h3></th><th><h3>Reported by:</h3></th><th><h3>Call Number</h3></th><th><h3>Open Date</h3></th></tr><tr><td>\"
    response.Write rs(\"number\")& \"</td><td>\"
    response.Write rs(\"brief_description\") & \"</td><td>\"
    response.Write rs(\"contactname\") & \"</td><td>\"
        response.Write rs(\"incident_id\") & \"</td><td>\"
        response.Write rs(\"open_date\") & \"</td></tr><tr><td colspan=5>\"
    response.Write \"<b>Solution:</b>\" & rs(\"resolution\") & \"</td></tr></table><br>\"
    \'rs.Movenext
  Loop
end if
Avatar billede webbe Nybegynder
05. juli 2001 - 11:27 #1
Efter din rs=.... så prøv at skrive følgende (i en ny linie)

Connect.Execute(rs)

Kunne iøvrigt godt tænke mig at se din connection!
Ville gøre det noget lettere!
Avatar billede webbe Nybegynder
05. juli 2001 - 11:28 #2
Problemet er at du definerer dit recordset men ikke executer den! ;0)

Dermed vil selve søgningen ikke blive udført og (rs.bof OR rs.eof) vil dermed være TRUE!
Avatar billede kichian Nybegynder
05. juli 2001 - 11:30 #3
Hvis der opstod time-out, ville du få det af vide. Medmindre du kører med on error resume next.

Jeg er ikke 100 på om det gør nogen forskel i Access, men er det \'maersk line \' eller \'maersk line\'.

Og så er der dine datoer. Der kan opstå problemer hvis de bliver tolket efter US format på serveren og DK i Access. Så medmindre der er tale om tekstfelter bør/skal datoer skrives som #MM/DD/ÅÅÅÅ TT:MM:SS# evt. #MM/DD/ÅÅÅÅ#, da dette er SQL92 format og forståes af alle SQL-kompatible databaser (Access, MS SQL-Server, Oracle, ...).
Avatar billede kichian Nybegynder
05. juli 2001 - 11:34 #4
Hvis Recordssættet ikke er åbent eller er et ADO.Recordset vil der opstå en runtime-fejl i lighed med time-out.

Derfor bruges on error resume next kun på 100% gennemtestet kode, hvor runtime-errors fanges.
Avatar billede rikkev Nybegynder
05. juli 2001 - 13:10 #5
Jeg udfører faktisk rs - det ser såden ud:

set conntemp=server.createobject(\"adodb.connection\")
conntemp.open myDSN
set rs=conntemp.execute(mySQL)
set record=server.createobject(\"adodb.recordset\")

Det virker nærmest som om noget giver op hvis recordsættet bliver for omfattende. Ved små søgeresultater eks. 50 poster er der ingen problemer. Underligt, ikk????
Avatar billede webbe Nybegynder
05. juli 2001 - 13:54 #6
Prøv at bytte om på set rs og set record - virker underligt at du vil execute din rs inden definerer den!
Avatar billede kichian Nybegynder
05. juli 2001 - 13:56 #7
Prøv at bruge OLE DB-provideren i stedet for ODBC.

myDSN = \"Provider=Microsoft.Jet.OLEDB.4.0;data source=sti_til_database.mdb;\"

Avatar billede rikkev Nybegynder
05. juli 2001 - 14:21 #8
Kan jeg godt bruge OLE DB - når jeg skal have forbindelse til en DB2?
Avatar billede kichian Nybegynder
05. juli 2001 - 14:39 #9
IBM skriver på deres hjemmeside, at der til Win-udgaven af DB2 følge en OLE DB-driver med. Denne må også kunne benyttes til at hente data fra andre platforme.
Hvis din kode fejler når du forbinder til DB2, kan det(lader det til) være ODBC-driveren som ikke fungerer optimalt. Prøv evt. om du kan rette på opsætningen af denne. Time-out etc.
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