webForumDet fria alternativet

sql?

7 svar · 296 visningar · startad av freddssite

freddssiteMedlem sedan maj 2001128 inlägg
#1

Varför får jag detta fel...

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

när jag söker på ett efternamn, fungerar på att söka på de andra...

Where efternamn = '" & Request.Form("sokord") & "' or personnummer = '" & Request.Form("sokord") & "' or id = " & Request.Form("sokord") & ""
@ndersMedlem sedan juni 200026 914 inlägg
#2

Om ID är numeriskt kan du inte jämföra det med något som inte är ett tal.

Skriv ut färdig SQL-fråga så kan du se varför saker och ting inte funkar.

jonneMedlem sedan jan. 20011 097 inlägg
#3

Skriv ut din SQL sats med response.write så du ser att du verkligen får med de värden du vill.

freddssiteMedlem sedan maj 2001128 inlägg
#4

man kan söka på id eller personnummer, men inte på efternamnet!

J.N.Medlem sedan apr. 20031 660 inlägg
#5

HEJ!

Söker du på exakt hela efternamnet?

'Nilsson' ger träff, 'son' ger inga?

Du bör använda LIKE istället för lika med, eftersom det är sträng, men också, viktigast, stoppa % runt värdena, fungerar som *.

Då får du träff på alla son-namn enligt ovanstående exempel.
... efternamn LIKE '%" & innehallsok & "%'

En bättre rubrik hade inte skadat!

@ndersMedlem sedan juni 200026 914 inlägg
#6

@nders skrev:

Om ID är numeriskt kan du inte jämföra det med något som inte är ett tal.

Är ID numeriskt?

fredrikMedlem sedan dec. 19991 082 inlägg
#7

...förlåt om jag går lite "Off Topic" men vill bara höja ett varningensfinger när jag ser din kod:
"...Where efternamn = '" & Request.Form("sokord")..."

som är helt öppen för SQL-injection. Kort innebär det att någon skulle kunna skriva egen SQL-kod som kör egna frågor mot din databas. Enklaste skyddet är att kontrollera '-tecknet, men att använda parameteriserade frågor är att föredra.

Läs gärna mer om säkerhetsrelaterade ämnen på swesecure.com och särskilt om SQL-injection på:
http://www.swesecure.com/?ID=dc6ea60a-12ae-4e7e-9e9c-59489ccafa90&IID=29a58b01-ca79-4877-b924-4f5da18d4a2a

Engine^Medlem sedan dec. 20002 861 inlägg
#8

Re: sql?

freddssite skrev:

Varför får jag detta fel...

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

när jag söker på ett efternamn, fungerar på att söka på de andra...

Where efternamn = '" & Request.Form("sokord") & "' or personnummer = '" & Request.Form("sokord") & "' or id = " & Request.Form("sokord") & ""

Därför att du i en funktion, som du har inbakad i din fråga, saknar ett argument. Om det ingår data från tabellen som är Null kan du nog (eftersom du kör Access) komma undan med att köra Tools » Database Utilities » Compact and Repair Database...

För övrigt föreslår jag att du läser igenom föregående svar noga.

Genererad på 369 ms · cache AV · v20260730165559-full.f96bc7eb