Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Vad är det för fel på den här sökstränge

Postades av 2002-10-16 09:07:14 - Nina Ringbom, i forum asp - allmänt, Tråden har 21 Kommentarer och lästs av 787 personer

Hejsan
Skulle vilja att någon hjälper mig...
Jag håller på och lägger in min släktforskning i en databas (access) och
användare skall via en enkel sökformulär kunna söka på förnamn, efternamn och födelseårtal.
Vad är det för fel på den här söksträngen?
Den funkar inte. Jag får inget felmeddelande utan jag får bara upp: "du fick inga träffar... " fast jag sökte på Anders och jag har 2 st i db som heter Anders.....

SQL = "SELECT * FROM tabellen WHERE fnamn = ' " & strfnamn & " ' OR enamn = ' " & strenamn & " ' OR fodelsedatum = ' " & strfodelsedatum & " ' order by fnamn desc"

//Nina




Svara

Sv: Vad är det för fel på den här söksträ

Postades av 2002-10-16 09:31:10 - Lena Christensson

Jag kan inte se något fel på din fråga, felet måste ligga nån annanstans i din kod. Kanske det inte är rätt värde i dina variabler?


Svara

Sv: Vad är det för fel på den här söksträ

Postades av 2002-10-16 09:51:32 - Nina Ringbom

<form method=post action="resultatsokning.asp">

<table border=0>
<tr><td>Sök på förnamn<br>
<input type=text name=fnamn size=15>
</td>

<td>Sök på efternamn<br>
<input type=text name=enamn size=15>
</td>

<td>Sök på födelsedatum<br>
<input type=text name=fodelsedatum size=15>
</td>
</tr>
</table>

<input type=submit value="Visa">
</form>
--------------------------------------------------------------------------------
<% Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)}; DBQ=D:\Inetpub\wwwroot\snowcat\forskning.mdb"

Dim strfnamn, strenamn, strfodelsedatum

strfnamn = Request.Form("fnamn")
strenamn = Request.Form("enamn")
strfodelsedatum = Request.Form("fodelsedatum")

SQL = "SELECT * FROM tabellen WHERE fnamn = ' " & strfnamn & " ' OR enamn = ' " & strenamn & " ' OR fodelsedatum = ' " & strfodelsedatum & " ' order by fnamn desc"

Set RecSet = Server.CreateObject("ADODB.Recordset")
RecSet.Open SQL, Connect

If RecSet.EOF then %>

<Table border=0 cellspacing=2 width=300>

<tr><td colspan=2>Du sökte på: <p></td></tr>
<tr><td>Förnamn:</td> <td><% =strfnamn%></td></tr>
<tr><td>Efternamn: </td> <td><% =strenamn%></td></tr>
<tr><td>Födelsedatum: </td> <td><% =strfodelsedatum%></td></tr>
</table><p>
och fick inga träffar... <br>
Du får försöka med några andra söksträngar.<p>

<% Else %>

<Table border=0 cellspacing=2>

<tr><td colspan=2>Du sökte på: </td></tr>
<tr><td>Förnamn:</td> <td><% =strfnamn%></td></tr>
<tr><td>Efternamn: </td> <td><% =strenamn%></td></tr>
<tr><td>Födelsedatum: </td> <td><% =strfodelsedatum%></td></tr>
</table>

och fick följande träffar... <p>

<% Do While Not RecSet.EOF %>


<table border=0 width="550">

<TR><TD ID=dd COLSPAN=4 valign="top"><B>Förnamn:</B></TD> <TD ID=dd valign="top" COLSPAN=3 ><%=RecSet("fnamn")%> </TD></TR>
<TR><TD ID=dd COLSPAN=4 valign="top"><B>Efternamn:</B> </TD> <TD ID=dd valign="top" COLSPAN=3 ><%=RecSet("enamn")%> </TD></TR>
--------------------------------------------------------------------------------
Testade sedan med den här:
SQL = "SELECT * FROM tabellen WHERE fnamn like '%"&strfnamn&"%' AND enamn like '%"&strenamn&"%' AND fodelsedatum LIKE '%"&strfodelsedatum&"%' order by enamn desc"

och den funkar men jag får då bara upp en Anders fast jag har 2 st Anders i databasen....????


Svara

Sv: Vad är det för fel på den här söksträ

Postades av 2002-10-16 10:21:14 - Lena Christensson

LIKE är nog bättre att söka med. Men du har bytt från OR till AND såg jag, kanske sökningen bara genererar en träff då?


Svara

Sv: Vad är det för fel på den här söksträ

Postades av 2002-10-16 10:26:57 - Andreas Hillqvist

Skippa mellanslagen. Det är det som strula upp sökningen:
SQL = "SELECT * FROM tabellen WHERE fnamn = '" & strfnamn & "' OR enamn = '" & strenamn & "' OR fodelsedatum = '" & strfodelsedatum & "' order by fnamn desc"


Svara

Sv: Vad är det för fel på den här söksträ

Postades av 2002-10-16 11:00:51 - Nina Ringbom

ok nu har jag följande string:
SQL = "SELECT * FROM tabellen WHERE fnamn = '"&strfnamn&"' OR enamn = '"&strenamn&"' OR fodelsedatum = '"&strfodelsedatum&"' order by fnamn desc"

och den funkar bra FAST INTE födelsedatumet. Det kan ju vara att de bara skriver in tex. 1795 och då får jag ingen träff. I databasen ligger det 1795-01-25. Skriver jag in hela det så funkar det, men det är ju inte säker att de vet hela... bara året.... Har försökt med:
fodelsedatum LIKE '%"&strfodelsedatum&"%' med % alltså men det funkar inte heller....
OCH en sak till: skriver jag in tex Anders Johansson får jag Ander Johansson och även Anders Bengtsson.....


Svara

Sv: Vad är det för fel på den här söksträ

Postades av 2002-10-16 13:35:24 - Andreas Hillqvist

Testa med:
<code>
<%
Dim strSQL
Dim strWhere

If Len(strfnamn) > 0 Then
strWhere = "AND fnamn = '" & strfnamn & "'"
End If
If Len(strenamn) > 0 Then
strWhere = "AND enamn = '" & strenamn & "'"
End If
If Len(strfodelsedatum) > 0 Then
strWhere = "AND (fodelsedatum >= #" & fodelsedatum & "-01-01# AND fodelsedatum < #" & fodelsedatum + 1 & "-01-01#)"
End If

If Len(strWhere) Then
strSQL = "SELECT * FROM tabellen WHERE " & strWhere & " ORDER BY fnamn DESC"
Else
strSQL = "SELECT * FROM tabellen ORDER BY fnamn DESC"
End If
%>
</code>


Svara

Sv: Vad är det för fel på den här söksträ

Postades av 2002-10-16 16:35:14 - Nina Ringbom

Hej
Testade det du skrev och fick följande:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'AND (fodelsedatum >= #-01-01# AND fodelsedatum < #1-01-01#)'.
/resultatsokning.asp, line 50

På line 50 står det: RecSet.Open strSQL, Connect
-----------------------------------------------------------------------------
om jag istället på line 50 har: RecSet.Open SQL, Connect
så får jag följande felmeddelande:

ADODB.Recordset error '800a0bb9'
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
/resultatsokning.asp, line 50


Svara

Sv: Vad är det för fel på den här söksträ

Postades av 2002-10-16 22:54:29 - Andreas Hillqvist

Jag glömde den första And. Den ska inte var med.

Testa med:
<code>
<%
Dim strSQL
Dim strWhere

If Len(strfnamn) > 0 Then
strWhere = "AND fnamn = '" & strfnamn & "'"
End If
If Len(strenamn) > 0 Then
strWhere = "AND enamn = '" & strenamn & "'"
End If
If Len(strfodelsedatum) > 0 Then
strWhere = "AND (fodelsedatum >= #" & fodelsedatum & "-01-01# AND fodelsedatum < #" & fodelsedatum + 1 & "-01-01#)"
End If

If Len(strWhere) Then
strSQL = "SELECT * FROM tabellen WHERE " & Mid(strWhere, 5) & " ORDER BY fnamn DESC"
Else
strSQL = "SELECT * FROM tabellen ORDER BY fnamn DESC"
End If
%>
</code>


Svara

Sv: Vad är det för fel på den här söksträ

Postades av 2002-10-17 09:37:20 - Nina Ringbom

Hej igen :-)
Om man skriver in datum 1795 funkar det men om man skriver in 1795-01-25 så får jag följande:

----------------------------------------------------
Microsoft VBScript runtime error '800a000d'
Type mismatch: '[string: "1795-01-25"]'
----------------------------------------------------

Om man sedan söker på tex Nina Jönsson 1795 så får jag
Berta Hansson 1795.......
//Nina


Svara

Sv: Vad är det för fel på den här söksträ

Postades av 2002-10-17 11:38:16 - Andreas Hillqvist

Jobbig mäniska. ;o)

Testa med:
<code>
<%
Dim strSQL
Dim strWhere

If Len(strfnamn) > 0 Then
strWhere = "AND fnamn = '" & strfnamn & "'"
End If
If Len(strenamn) > 0 Then
strWhere = "AND enamn = '" & strenamn & "'"
End If
If Len(strfodelsedatum) > 0 Then
If IsNumeric(strfodelsedatum) Then
strWhere = "AND (fodelsedatum >= #" & fodelsedatum & "-01-01# AND fodelsedatum < #" & fodelsedatum + 1 & "-01-01#)"
ElseIf IsDate(strfodelsedatum) Then
strWhere = "AND fodelsedatum = #" & fodelsedatum & "#"
End If
End If

If Len(strWhere) Then
strSQL = "SELECT * FROM tabellen WHERE " & Mid(strWhere, 5) & " ORDER BY fnamn DESC"
Else
strSQL = "SELECT * FROM tabellen ORDER BY fnamn DESC"
End If
%
</code>


Svara

Sv: Vad är det för fel på den här söksträ

Postades av 2002-10-17 11:44:46 - Nina Ringbom

Ja jag vet att jag är jobbig :-S sorry !!!
Men det funkar inte och jag ger snart upp
Provade din kod och fick:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in date in query expression '(fodelsedatum >= #-01-01# AND fodelsedatum < #1-01-01#)'.


Svara

Sv: Vad är det för fel på den här söksträ

Postades av 2002-10-17 11:52:33 - Patrik Löwendahl

Funkar datepart i access ?? isf:

"where Datapart(year, fodelse) = " & year


Svara

Sv: Vad är det för fel på den här söksträ

Postades av 2002-10-17 12:06:55 - Patrik Andersson

är inte namnet på variablen strfodelsedatum och inte fodelsedatum.

strWhere = "AND (fodelsedatum >= #" & strfodelsedatum & "-01-01# AND fodelsedatum < #" & strfodelsedatum + 1 & "-01-01#)"

skall det nog vara.
//Putte


Svara

Sv: Vad är det för fel på den här söksträ

Postades av 2002-10-17 12:39:24 - Andreas Hillqvist

Som nämnts är det att jag glömt str i variabelnamnet.
Försök med:
<code>
<%
Dim strSQL
Dim strWhere

If Len(strfnamn) > 0 Then
strWhere = "AND fnamn = '" & strfnamn & "'"
End If
If Len(strenamn) > 0 Then
strWhere = "AND enamn = '" & strenamn & "'"
End If
If Len(strfodelsedatum) > 0 Then
If IsNumeric(strfodelsedatum) Then
strWhere = "AND (fodelsedatum >= #" & strfodelsedatum & "-01-01# AND fodelsedatum < #" & strfodelsedatum + 1 & "-01-01#)"
ElseIf IsDate(strfodelsedatum) Then
strWhere = "AND fodelsedatum = #" & strfodelsedatum & "#"
End If
End If

If Len(strWhere) Then
strSQL = "SELECT * FROM tabellen WHERE " & Mid(strWhere, 5) & " ORDER BY fnamn DESC"
Else
strSQL = "SELECT * FROM tabellen ORDER BY fnamn DESC"
End If
%>
</code>


Svara

Sv: Vad är det för fel på den här söksträ

Postades av 2002-10-17 13:34:15 - Nina Ringbom

ok nu funkar det om man skriver in 1784... MEN (he he)
om man skriver in (förnamn) LARS (födelseår) 1784 (som inte finns i db så får jag ANNA 1784 (som finns)
Och skriver jag HANSSON 1784 så får jag ANNA 1784...

//Jobbiga Nina


Svara

Sv: Vad är det för fel på den här söksträ

Postades av 2002-10-18 09:45:23 - Nina Ringbom

NÅGON ?? HJÄLP ??


Svara

Sv: Vad är det för fel på den här söksträ

Postades av 2002-10-18 09:49:53 - Patrik Andersson

skriv ut sql strängen så att vi får se hur den ser ut

Response.Write strSQL

//Putte


Svara

Sv: Vad är det för fel på den här söksträ

Postades av 2002-10-18 10:16:51 - Nina Ringbom

<code>


<% Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)}; DBQ=D:\Inetpub\wwwroot\snowcat\forskning.mdb"

Dim strfnamn, strenamn, strfodelsedatum

strfnamn = Request.Form("fnamn")
strenamn = Request.Form("enamn")
strfodelsedatum = Request.Form("fodelsedatum")

Dim strSQL
Dim strWhere

IF strfnamn = "" and strenamn = "" and strfodelsedatum = "" then
response.write "Du måste fylla i något fält !"
end if

If Len(strfnamn) > 0 Then
strWhere = "AND fnamn = '" & strfnamn & "'"
End If
If Len(strenamn) > 0 Then
strWhere = "AND enamn = '" & strenamn & "'"
End If
If Len(strfodelsedatum) > 0 Then
If IsNumeric(strfodelsedatum) Then
strWhere = "AND (fodelsedatum >= #" & strfodelsedatum & "-01-01# AND fodelsedatum < #" & strfodelsedatum + 1 & "-01-01#)"
ElseIf IsDate(strfodelsedatum) Then
strWhere = "AND fodelsedatum = #" & strfodelsedatum & "#"
End If
End If

If Len(strWhere) Then
strSQL = "SELECT * FROM tabellen WHERE " & Mid(strWhere, 5) & " ORDER BY fnamn DESC"
Else
strSQL = "SELECT * FROM tabellen ORDER BY fnamn DESC"
End If

Set RecSet = Server.CreateObject("ADODB.Recordset")
RecSet.Open strSQL, Connect

If RecSet.EOF then %>

<!-- #INCLUDE FILE = "sokning.asp" -->

<Table border=0 cellspacing="2">

<tr><td ID=dd colspan="2" align=left><nobr><b>Du sökte på:</b></td></tr>

<tr><td ID=dd>Förnamn:</td> <td align="left" id=a><% =strfnamn%><% =strfnamn2%>&nbsp</td></tr>
<tr><td ID=dd>Efternamn:</td> <td id=a><% =strenamn%>&nbsp</td></tr>
<tr><td ID=dd>Födelsedatum:</td> <td id="a"><% =strfodelsedatum%>&nbsp</td></tr>
<tr><td ID=dd colspan="2"> <b>och fick inga träffar...</b><br> Du får försöka med några andra söksträngar.</td></tr>
</table>

<% Else %>

<!-- #INCLUDE FILE = "sokning.asp" -->

<% Do While Not RecSet.EOF %>

<table border=0 width="500">

<TR><TD width="70" ID=dd valign="top" align="left" ><B>Förnamn:</B></TD> <TD ID=dd valign="top" align="left" COLSPAN="3"><%=RecSet("fnamn")%>&nbsp<%=RecSet("fnamn2")%>&nbsp</TD></TR>
<TR><TD ID=dd valign="top" align="left" ><B>Efternamn:</B> </TD> <TD ID=dd valign="top" align="left" COLSPAN="3"><%=RecSet("enamn")%> &nbsp</TD></TR>
<TR><TD ID=dd valign="top" align="left" ><B>Yrke:</B></TD> <TD ID=dd valign="top" align="left" COLSPAN="3"><%=RecSet("yrke")%> &nbsp</TD></TR>

<TR><TD HEIGHT=20 COLSPAN="4">&nbsp</TD></TR>

osv
osv

<% RecSet.MoveNext
Loop
End if

RecSet.Close
Set RecSet = Nothing

Connect.Close
Set Connect = Nothing
%>




testa här:
http://snowcat.no-ip.info/sokning.asp


Svara

Sv: Vad är det för fel på den här söksträ

Postades av 2002-10-21 13:18:53 - Nina Ringbom

Hejsan jag fösöker igen... :-)
Jag har ändrat en hel massa i koden. Nu ser den ut så här.
Det som inte funkar är att man kan inte söka på tex ANNA och 1897.
Då får man även CARL 1897.
Och söker man på efternamn= ADOLFSDOTTER och datum=1807 så får
jag även träff på CARLSSON 1807.
Alla andra sökvarianter går bra.

<code>
If strfnamn = "" and strenamn = "" then
strSQL = "SELECT * FROM tabellen WHERE fodelsedatum LIKE '"&strfodelsedatum&"' order by enamn desc"

elseIf strenamn = "" and strfodelsedatum = "" then
strSQL = "SELECT * FROM tabellen WHERE fnamn = '"&strfnamn&"' order by enamn desc"

elseIf strfodelsedatum = "" and strfnamn = "" then
strSQL = "SELECT * FROM tabellen WHERE enamn = '"&strenamn&"' order by enamn desc"

elseIf strenamn = "" then
strSQL = "SELECT * FROM tabellen WHERE fnamn = '"&strfnamn&"' AND fodelsedatum = '"&strfodelsedatum&"' order by enamn desc"

elseIf strfodelsedatum = "" then
strSQL = "SELECT * FROM tabellen WHERE fnamn = '"&strfnamn&"' AND enamn = '"&strenamn&"' order by enamn desc"

elseIf strfnamn = "" then
strSQL = "SELECT * FROM tabellen WHERE enamn = '"&strenamn&"' AND fodelsedatum = '"&strfodelsedatum&"' order by enamn desc"

else
strSQL = "SELECT * FROM tabellen WHERE fnamn = '"&strfnamn&"' AND enamn = '"&strenamn&"' AND fodelsedatum = '"&strfodelsedatum&"' order by enamn desc"

end if

If Len(strfodelsedatum) > 0 Then
If IsNumeric(strfodelsedatum) Then
strWhere = "AND (fodelsedatum >= #" &strfodelsedatum& "-01-01# AND fodelsedatum < #" &strfodelsedatum + 1 & "-01-01#)"

ElseIf IsDate(strfodelsedatum) Then
strWhere = "AND fodelsedatum = #" &strfodelsedatum& "#"
End If
End If

If Len(strWhere) Then
strSQL = "SELECT * FROM tabellen WHERE " & Mid(strWhere, 5) & " ORDER BY enamn asc"

End If
</code>


Svara

Sv: Vad är det för fel på den här söksträ

Postades av 2002-10-22 11:24:16 - Nina Ringbom

Finns det någon expert som kan knäcka det här?

Nina


Svara

Sv: Vad är det för fel på den här söksträ

Postades av 2002-10-22 12:47:33 - Andreas Hillqvist

Felet var att jag inte slog samman tidigare vikor. Testa med:
<code>
<%
Dim strSQL
Dim strWhere

If Len(strfnamn) > 0 Then
strWhere = strWhere & " AND fnamn = '" & strfnamn & "'"
End If
If Len(strenamn) > 0 Then
strWhere = strWhere & " AND enamn = '" & strenamn & "'"
End If
If Len(strfodelsedatum) > 0 Then
If IsNumeric(strfodelsedatum) Then
strWhere = strWhere & " AND (fodelsedatum >= #" & strfodelsedatum & "-01-01# AND fodelsedatum < #" & strfodelsedatum + 1 & "-01-01#)"
ElseIf IsDate(strfodelsedatum) Then
strWhere = strWhere & " AND fodelsedatum = #" & strfodelsedatum & "#"
End If
End If

If Len(strWhere) Then
strSQL = "SELECT * FROM tabellen WHERE " & Mid(strWhere, 5) & " ORDER BY fnamn DESC"
Else
strSQL = "SELECT * FROM tabellen ORDER BY fnamn DESC"
End If
%>
</code>


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 812
27 960
271 761
518
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies