---
title: "Söka i databasen"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/9057-söka-i-databasen"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Bjarne A"
published: "2001-04-14T09:09:00.000Z"
updated: "2001-04-17T20:19:00.000Z"
replies: 14
views: 300
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/9057-söka-i-databasen"
---

# Söka i databasen

## #1 — Bjarne A, 2001-04-14T09:09Z

Hej! 
Jag har en databas med serienummer, modell, tillverkningsår mm 
och ett formulär där jag skriver in posterna till databasen

Nu skulle jag vilja hämta hela posten (serienummer, modell, tillverkningsår mm)
som tillhör ett visst serienummer, dvs öka i databasen.

Om man inte hittar rätt serienummer skall man komma till en "errorsida.asp"

Hur kan man fixa detta??

En tacksam nybörjare

Permalänk: https://www.webforum.nu/p/9057

## #2 — drain, 2001-04-14T09:26Z

öppna DB släng in alla serie nummer i ett recordset. sedan loopar du detta och jämför mot din request.form("serie")

något sånt här blir det

'efter att ha öppnat db med alla serienr

do until recordset.eof
if recordset("serienr") = request.form(serienr") then
response.redirect ("error.asp")
else 
gör det du skall
end if

OBS för att resposne.redirect skall fungera måste du sätt överst på sidan (japp allra överst) \<%response.buffer=true%\> 
 

gör så här! serie nummret kommer ju från ett formulär!

Permalänk: https://www.webforum.nu/p/263371

## #3 — ERR0R, 2001-04-14T09:50Z

öööh?
Med din kod så kommer man väl till error-sidan om den hittar serienumret.

Ska väl vara

```
if recordset("serienr") <> request.form(serienr") then
response.redirect ("error.asp")
```

eller?

Permalänk: https://www.webforum.nu/p/263372

## #4 — john_samuel, 2001-04-14T11:04Z

ehm. om jag har fattat det hela rätt så vill du plocka ut ett fält ur databasen där serienummret är det samma som det som skrivs in i formuläret?

isåfall vore det väl lättast att använda sig av en SQL-sträng. Typ:

```
SQL = "SELECT * FROM tabell WHERE serie = " & Request.Form("serie")
set rs = connection.execute(SQL)

if rs.EOF Then
Response.Redirect("error.asp")
Else
' gör det som skall ske ifall posten fanns
End if
```

men, jag kan ju också ha förstått det hela fel....

Permalänk: https://www.webforum.nu/p/263373

## #5 — Bjarne A, 2001-04-14T13:32Z

Tack det borde ju funka, det blir som ett lösenord. 
Men hur kan man få det att skriva ut just den posten som 
innehåller serienummret som man har skrivit in.

Det som händer efter else "gör det du skall"

Permalänk: https://www.webforum.nu/p/263374

## #6 — streetrobban, 2001-04-14T15:28Z

Oj, fixade det.

\[Redigerat av streetrobban den 14 apr 2001\]

Permalänk: https://www.webforum.nu/p/263375

## #7 — john_samuel, 2001-04-14T22:10Z

jaa. det borde väl bara vara att skriva ut det som vanligt (eller menar du att det skall vara nått speciellt?). typ:

```
.... 
else %>
hejsan hoppsan: <%= rs("modell") 'osv...
<%
End If
%>
```

typ... 

(OOPs, glömde slutet på KOD-grejjen :)

Permalänk: https://www.webforum.nu/p/263376

## #8 — Bjarne A, 2001-04-16T22:35Z

Det vill inte funka
Jag har en databas med namn "db.mdb" sökväg:c:\\inetpub\\wwwroot\\databas\\db.mdb
och en tabell med namn "test"
Jag har kolumer med namn serie, modell, year och text
Och "adovbs.inc" på plats
Måsta den vara med?

Jag skickar ett serienummer med denna sida:

```
<html>

<form method="POST" action="b.asp">

Namn: <input type="text" size="30" name="serie"><br>

<input type="submit" value="Skicka!">
<input type="reset" value="Radera">

</form>

</html>
```

Och trodde det skulle kunna ta imot av "b.asp" enligt nedan

```
<html>

<!-- #include virtual="/databas/adovbs.inc" -->

<%	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\inetpub\wwwroot\databas\db.mdb" 
	RecSet.Open Uppdatera, Connect, adOpenStatic, adLockOptimistic 
	Set RecSet = Server.CreateObject("ADODB.Recordset")
%>

<%
SQL = "SELECT * FROM test WHERE serie = " & Request.Form("serie")
set rs = connection.execute(SQL) 
if rs.EOF Then
Response.Redirect("error.asp")
Else %>

Dessa uppgifter finns på maskinen med ditt serienummer<BR>
<%RecSet("modell")%><BR>
<%RecSet("year")%><BR>
<%RecSet("text")%><BR>

<%End if %>

<%Connect.Close %>

</html>
```

Men det vill sig inte någon som vet vad alla felen är

Tack

Permalänk: https://www.webforum.nu/p/263377

## #9 — LarsG, 2001-04-16T22:52Z

Jag skrev om lite. Om man inte hittade något så stängs aldrig connection. Du hämtar data till rs men skriver recset sedan, ändrade det också.

```
<html>
<!-- #include virtual="/databas/adovbs.inc" -->

<% Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\inetpub\wwwroot\databas\db.mdb" 

SQL = "SELECT * FROM test WHERE serie = " & Request.Form("serie")
set rs = connection.execute(SQL) 
found = not rs.eof
if found then
%>
  
Dessa uppgifter finns på maskinen med ditt serienummer<BR>
<%= RS("modell")%><BR>
<%= RS("year")%><BR>
<%= RS("text")%><BR>

<%
End if
rs.close
set rs = nothing
Connect.Close
set connect = nothing
if not found then
   response.redirect "error.asp"
end if
%>

</html>
```

En sak som jag undrar är vilken datatyp kolumnen serie är.  Om den är av typen character så skall sökvärdet omges av '

Vad får du för fel nu?

Permalänk: https://www.webforum.nu/p/263378

## #10 — Bjarne A, 2001-04-17T18:35Z

Alla kolumerna är av typen PM (memmo)
och jag får ett felemedelande :

Körningsfel i Microsoft VBScript fel '800a01a8' 

Objekt krävs.: '' 

/databas/b.asp, rad 7 

//Bjarne

Permalänk: https://www.webforum.nu/p/263379

## #11 — @nders, 2001-04-17T18:38Z

ok, då är det ett objekt du försöker använda, som du kallar för någonting annat än när du skapade det.

vilken är rad 7?
hur ser hela din kod ut nu?

Permalänk: https://www.webforum.nu/p/263380

## #12 — LarsG, 2001-04-17T18:44Z

Såg det nu. Du skapar ett connectionobjekt som heter connect men sedan så anväder du connection. Ändra så att det blir connect överallt.

Permalänk: https://www.webforum.nu/p/263381

## #13 — Bjarne A, 2001-04-17T20:02Z

Om jag inte ändrar Server.CreateObject("ADODB.connection")
till connect för det skall man väll inte ?

```
<html>
<!-- #include virtual="/databas/adovbs.inc" -->
<% Set connect = Server.CreateObject("ADODB.connection")
connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\inetpub\wwwroot\databas\db.mdb" 

SQL = "SELECT * FROM test WHERE serie = " & Request.Form("serie")
set rs = connect.execute(SQL) 
found = not rs.eof
if found then
%>

Dessa uppgifter finns på maskinen med ditt serienummer<BR>
<%= RS("modell")%><BR>
<%= RS("year")%><BR>
<%= RS("text")%><BR>

<%
End if
rs.close
set rs = nothing
connect.Close
set connect = nothing
if not found then
response.redirect "error.asp"
end if
%>

</html>
```

så får jag felmedelande:

Microsoft OLE DB Provider for ODBC Drivers fel '80040e07' 

\[Microsoft\]\[Drivrutin för ODBC Microsoft Access\] Typblandningsfel i villkorsuttryck. 

/databas/b.asp, rad 7 

rad 7 = set rs = connect.execute(SQL) 

om jag även ändrar till Server.CreateObject("ADODB.connect")
får jag medelandet:

Serverobjekt fel 'ASP 0177 : 800401f3' 

Server.CreateObject misslyckades 

/databas/b.asp, rad 3 

800401f3 

//Bjarne

Permalänk: https://www.webforum.nu/p/263382

## #14 — @nders, 2001-04-17T20:07Z

Om jag inte ändrar Server.CreateObject("ADODB.connection")
till connect för det skall man väll inte ?

nix! :)

felmeddelandet du får beror förmodligen på att (antar jag) *serie* är av typen text i tabellen?

då ska frågan se ut så här:

```
SQL = "SELECT * FROM test WHERE serie = '" & Request.Form("serie") & "'"
```

mvh,

Permalänk: https://www.webforum.nu/p/263383

## #15 — Bjarne A, 2001-04-17T20:19Z

Jipppi !!!!!

Nu funkar det 
Tack alla
(det är pg av sådanna här forum Sverige ligger i topp i IT världen)

Permalänk: https://www.webforum.nu/p/263384

---

Tråden på webben: https://www.webforum.nu/amne/asp/9057-söka-i-databasen
