välja poster ?

ASP

15 svar · 265 visningar · startad av JaktJanne

Medlem sedan feb. 20001 507 inlägg
Trådstart#1

Suttit och slitit mitt hår inför ett problem, vet ej om det går att lösa med den koden som följer:

Set strRS = Server.CreateObject("ADODB.Recordset")
 Set strCONN = Server.CreateObject("ADODB.Connection")

 strCONN.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("sokning.mdb")
 strCONN.Open

 strRS.Open "SELECT * FROM data", strCONN, 2, 3
strRS.Find "num = " & strRS("num")

Do Until strRS.EOF = True

   Response.Write "namn = " & strRS("namn")
   Response.Write "storlek = " & strRS("storlek")
   Response.Write "<p><BR></p>"
   strRS.MoveNext
Loop

 strRS.Close %>

Vad jag vill göra är att bara visa de poster som = num. Nu får jag upp alla poster i db:n.
Tilläggas att detta är mitt första försök med databaser :)

Medlem sedan dec. 19996 721 inlägg
#2

Hänger inte riktigt med. Vad ska num vara? 5, 6, "ostron"?

Find-metoden ska du inte använda, kan jag i alla fall säga.

Medlem sedan feb. 20001 507 inlägg
#3

num är en "string". Vad jag har gjort är egentligen att modifiera ett script som fungerar att hämta en post till att hämta fler. Att jag inte skall använda Find har jag nog förstått. Har fått tips om följande kod

Set strRS = Server.CreateObject("ADODB.Recordset")
Set strCONN = Server.CreateObject("ADODB.Connection")
strCONN.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("sokning.mdb")
strCONN.Open

val1 = Request("num")

strSQL="SELECT * FROM data WHERE num LIKE '" & val1 & "'

strRS.Open strSQL

strRS.MoveFirst
Do While Not strRS.EOF

Response.Write "namn = " & strRS("namn")
Response.Write "storlek = " & strRS("storlek")
Response.Write "<p><BR></p>"
strRS.MoveNext
Loop

strRS.Close %>

Det ser väl bättre ut :q

Medlem sedan feb. 20001 507 inlägg
#4

Snart hoppar jag i älva.... :(
Nu får jag felmeddelande.

ADODB.Recordset fel '800a0e7d'

Programmet begärde en åtgärd på ett objekt som refererar till ett stängt eller ett ogiltigt Connection-objekt.

på rad 13, och där står det RecSet.Open strSQL. Och mer

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ= c:\inetpub\wwwroot\databas\sokning.mdb"
nummer = Request("ID")
 Set RecSet = Server.CreateObject("ADODB.Recordset")

strSQL="SELECT * FROM data WHERE ID LIKE '& nummer & '"

RecSet.Open strSQL

HHJJJÄÄÄÄLP..

Medlem sedan dec. 19998 577 inlägg
#5

Testa detta:

RecSet.Open strSQL, Connect

Medlem sedan feb. 20001 507 inlägg
#6

Ny fel kod sama rad:
[Microsoft][Drivrutin för ODBC Microsoft Access] Selected collating sequence not supported by the operating system.

Medlem sedan dec. 19998 577 inlägg
#7

ehrm... skit i mitt föregående inlägg :e

RecSet.Open strSQL, "Driver={Microsoft Access Driver (*.mdb)};DBQ= c:\inetpub\wwwroot\databas\sokning.mdb"
Medlem sedan feb. 20001 507 inlägg
#8

Nytt fel:
Programmet använder felaktiga parametrar, som antingen ligger utanför tillåtet intervall, eller som skapar en inbördes konflikt.

Medlem sedan dec. 19998 577 inlägg
#9

Grrrr... :e

Varför använder du ett recordset föresten?

Medlem sedan feb. 20001 507 inlägg
#10

Frågar du en gröngöling det.
har du alternativ att hämta postar om innehållet i fältet stämmer med önskad val.
Jag behöver ocksåanvända Response.write
Hoppas du fattar :e

Medlem sedan dec. 19998 577 inlägg
#11

Gör såhär istället:

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ= c:\inetpub\wwwroot\databas\sokning.mdb"
nummer = Request("ID")
strSQL="SELECT * FROM data WHERE ID LIKE '& nummer & '"
Set rsResult = Connect.execute(strSQL)

Do Until rsResult.EOF

Response.Write "namn = " & rsResult("namn")
Response.Write "storlek = " & rsResult("storlek")
Response.Write "<p><BR></p>"
rsResult.MoveNext
Loop

Lite enklare... :)

Medlem sedan feb. 20001 507 inlägg
#12

Det verkar som jag inte får köra SQL uttryck, får detta feelmeddelande:
[Microsoft][Drivrutin för ODBC Microsoft Access] Selected collating sequence not supported by the operating system.
på rad:
Set rsResult = Connect.execute(strSQL)
:q :q :( x(

Medlem sedan dec. 200012 464 inlägg
#13
strSQL="SELECT * FROM data WHERE ID LIKE '& nummer & '"

Vilken datatyp har kolumnen ID? Om den är numeriskt så är predikatet like inte så användbart.

Om ID är numeriskt så skriver man

strSQL="SELECT * FROM data WHERE ID = " & nummer

dvs inga apostrofer omkring sökvärdet.

Like används för fritextsökning i karaktärskolumner. Om man använder like så kan man ha med % eller _ i söksträngen där % matchar 0 eller flera godtyckliga tecken och _ matchar ett godtyckligt tecken.
Om du inte har några wildcards i din söksträng så är det bättre att använda = i stället för like.

Ok @anders.

Medlem sedan feb. 20001 507 inlägg
#14

Det kan vara bra att veta, men när jag startade om datorn så fungerade scriptet, det var väl lite mycket igår kväll. :)

Medlem sedan juni 200032 967 inlägg
#15

det är nog inte ofta det händer men larsg har skrivit fel!

strSQL="SELECT * FROM data WHERE ID = " & nummer

det beror väl kanske på att vide också skrivit fel!

fast det var nog bara en temporär black out i grabbarnas huven tror jag. :)

Medlem sedan dec. 19998 577 inlägg
#16

@nders, det heter huvuden inte huven... för jag är då ingen bil :e

252 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)