aljMedlem sedan sep. 2002392 inlägg
Hesjan, jag har en SQL sats som ser ut såhär:
sqlSok = "SELECT * FROM tblData " _
& "WHERE Rubrik LIKE '%" & Replace(strSok, "'", "''") & "%' " _
& "OR Innehall LIKE '%" & Replace(strSok, "'", "''") & "%' " _
& "ORDER BY Rubrik;"
Om strSok är likamed = "hej" hittar den alla rubriker eller innehall som innehåller "hej".
Nu skulle jag även vilja räkna hur många poster den hittar, men jag vet inte vart jag skall placera COUNT(*) AS sokresult..
Några förslag, eller kan man ens göra så, att man även skriver ut allt som matchar och även skriver ut hur mycket som matchade med samma sql sats?
@ndersMedlem sedan juni 200026 914 inlägg
Antingen får du lägga till din select count-fråga som en subquery till det hela, eller så kan du skapa ett recordset explicit och använda ado-propertyn .RecordCount. (Det har jag dock ingen aning om hur man gör, eftersom jag inte använder ADO-metoder och dylikt. Vill man göra det med en subquery kan det se ut så här:
sqlSok = "SELECT * FROM tblData " _
& "WHERE Rubrik LIKE '%" & Replace(strSok, "'", "''") & "%' " _
& "OR Innehall LIKE '%" & Replace(strSok, "'", "''") & "%' " _
& ", (SELECT COUNT(*) FROM tblData " _
& "WHERE Rubrik LIKE '%" & Replace(strSok, "'", "''") & "%' " _
& "OR Innehall LIKE '%" & Replace(strSok, "'", "''") & "%') As Totalt_antal " _
& "ORDER BY Rubrik;"
Det kan dock se olika ut beroende på vilken dbms man använder.
Mvh,
aljMedlem sedan sep. 2002392 inlägg
Jo jag testade med dbSok.RecordCount men det gav "-1" eftersom att jag endast kör en connect.execute(SQL)..
Men din kod ville inte fungera riktigt beror det på att jag använder MS access?
[Microsoft OLE DB Provider for ODBC Drivers fel '80040e14'
Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel (komma) i frågeuttrycket 'Rubrik LIKE '%hej%' OR Innehall LIKE '%hej%' , (SELECT COUNT(*) FROM tblData WHERE Rubrik LIKE '%hej%' OR Innehall LIKE '%hej%') As Totalt_antal'.
/pusselny/Sok.asp, rad 22
Min connect sträng ser ut såhär:
Dim connect
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open = "Driver={Microsoft Access Driver (*.mdb)}; dbq=" & Server.MapPath("inc\db.mdb")&";"
Tack för hjälpen :)
@ndersMedlem sedan juni 200026 914 inlägg
alj skrev:
Jo jag testade med dbSok.RecordCount men det gav "-1" eftersom att jag endast kör en connect.execute(SQL)..
Det stämmer. Du måste öppna med Rs.Open med rätt parametrar, du får söka lite. :)
Men din kod ville inte fungera riktigt beror det på att jag använder MS access?
Nej, det beror på att jag placerade delfrågan fel. Nytt försök kommer:
sqlSok = "SELECT *"
& ", (SELECT COUNT(*) FROM tblData " _
& "WHERE Rubrik LIKE '%" & Replace(strSok, "'", "''") & "%' " _
& "OR Innehall LIKE '%" & Replace(strSok, "'", "''") & "%') As Totalt_antal " _
& "FROM tblData WHERE Rubrik LIKE '%" & Replace(strSok, "'", "''") & "%' " _
& "OR Innehall LIKE '%" & Replace(strSok, "'", "''") & "%' " _
& "ORDER BY Rubrik;"
Mvh,
aljMedlem sedan sep. 2002392 inlägg
Jippiie :D Nu fungerar det, tack vet du möjligtvis något ställe där man kan läsa mer om delfrågor?
@ndersMedlem sedan juni 200026 914 inlägg
Nej, jag har tyvärr väldigt dålig koll på vad som finns på nätet som är bra, men generellt kan jag rekommendera w3schools och Jet SQL på DevGuru. Jag vet inte just hur mycket där står om delfrågor, men, leta lite kan man ju alltid.
Det vore intressant med fler länkar dock, så den som känner sig manad; ös på!
Mvh,