Avatar billede simonia Nybegynder
11. marts 2004 - 13:50 Der er 13 kommentarer og
1 løsning

Søgefunktion - Hvordan

Hej.
Jeg skal bruge en søgefunktion, så der kan søges i min database og evt. også på mine sider.

Spørgsmålet er også oprettet på activedeveloper, da jeg ønsker et hurtigt svar.

Tak til de der vil hjælpe.

//Simonia
Avatar billede burningice Nybegynder
11. marts 2004 - 14:50 #1
hvis du har struktureret din database ordenligt er det at gøre brug af LIKE statements i din sql-query

SELECT * FROM tabel WHERE tekst LIKE '%søgeord%'

ang. dine sider, så skal du have åbnet din side i en TextReader og iterere igennem hvert ord for at se om det matcher
Avatar billede simonia Nybegynder
11. marts 2004 - 14:53 #2
Okay, så dropper jeg i første omgang at søge på siderne.

Angående dit statement, så bruger man ' og ikke % i access.

Har du functionen, da det er den jeg har bedt om ;)?
Avatar billede burningice Nybegynder
11. marts 2004 - 15:05 #3
'' er til at angive tekst, ja, % bruger man som en joker... så ved at skrive

WHERE tekst LIKE '%bu%'

finder du både bus, albue, marabu osv..

funktion? det er jo bare en helt normal sql-query

private string[] match(string word) {

//Opret connection
//Opret command
IDataReader r command.ExecuteReader("SELECT * FROM tabel WHERE tekst LIKE '% "+ word +"%'");

ArrayList arr = new ArrayList();
while (r.Read()) {
  arr.Add(r.GetString(0));
}
r.Close();

string[] words = new string[arr.Length];
arr.CopyTo(words);
return words;

}
Avatar billede simonia Nybegynder
11. marts 2004 - 15:08 #4
Jeg prøver og vender tilbage:)
Avatar billede simonia Nybegynder
11. marts 2004 - 15:39 #5
Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: BC30188: Declaration expected.

Source Error:



Line 15:    End Sub
Line 16:
Line 17:    IDataReader r command.ExecuteReader("SELECT * FROM Vare WHERE tekst LIKE '% "+ word +"%'");
Line 18:
Line 19:    ArrayList arr = new ArrayList();


Fejlen er i linie 17, skriver den.
Avatar billede burningice Nybegynder
11. marts 2004 - 15:45 #6
blah... du skal da ikke bare kopiere min pseudo-kode ukritisk ;)

der mangler et = mellem IDataReader og r
Avatar billede simonia Nybegynder
11. marts 2004 - 16:35 #7
Det giver samme fejl, og jeg er altså ikke sådan inde i det, så jeg kan se sådan noget endnu!
Avatar billede simonia Nybegynder
11. marts 2004 - 16:43 #8
Compiler Error Message: BC30684: 'IDataReader' is a type and cannot be used as an expression.

Source Error:



Line 18:   
Line 19:    Sub BtnSog_Click(sender As Object, e As EventArgs)
Line 20:    IDataReader = r command.ExecuteReader("SELECT * FROM Vare WHERE tekst LIKE '% "+ word +"%'");
Line 21:   
Line 22:    ArrayList arr = new ArrayList();
Avatar billede simonia Nybegynder
11. marts 2004 - 16:46 #9
Måske det letteste at poste hele mit dokument:

<%@ Page Language="VB" Debug="true" AspCompat="true" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.Oledb" %>
<script runat="server">

    Dim strConn As String
    Dim objConn As OleDbConnection
    Dim objComm As OleDbCommand
    Dim objDataReader As OleDbDataReader
   
    Sub Page_Load()
        strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.Mappath("db/Hammerslag.mdb") & ";"
        objConn = New OleDbConnection(strConn)
   
    End Sub
   
   
   
    Sub BtnSog_Click(sender As Object, e As EventArgs)
    IDataReader = r command.ExecuteReader("SELECT * FROM Vare WHERE tekst LIKE '% "+ word +"%'");
   
    ArrayList arr = new ArrayList();
    while (r.Read()) {
      arr.Add(r.GetString(0));
    }
    r.Close();
   
    string[] words = new string[arr.Length];
    arr.CopyTo(words);
    return words;
   
    }
    End Sub

</script>
<html>
<head>
</head>
<body>
    <form runat="server">
        <asp:TextBox id="TxtSog" runat="server" OnTextChanged="TxtSog_TextChanged"></asp:TextBox>
        <asp:Button id="BtnSog" onclick="BtnSog_Click" runat="server" Text="Søg"></asp:Button>
        <!-- Insert content here -->
    </form>
</body>
</html>
Avatar billede dgivoni Nybegynder
11. marts 2004 - 16:59 #10
proev at flyt = tegnet en tak til hoejre i denne linje:
IDataReader = r command.ExecuteReader("SELECT * FROM Vare WHERE tekst LIKE '% "+ word +"%'");

skal vaere:

IDataReader r = command.ExecuteReader("SELECT * FROM Vare WHERE tekst LIKE '% "+ word +"%'");
Avatar billede simonia Nybegynder
11. marts 2004 - 17:26 #11
Det har jeg nu skrevet og får denne igen:

Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: BC30684: 'IDataReader' is a type and cannot be used as an expression.

Source Error:



Line 18:   
Line 19:    Sub BtnSog_Click(sender As Object, e As EventArgs)
Line 20:    IDataReader r = command.ExecuteReader("SELECT * FROM Vare WHERE tekst LIKE '% "+ word +"%'");
Line 21:   
Line 22:    ArrayList arr = new ArrayList();


Source File: D:\Skole\KOD\Hammerslag\websiden\sogeside.aspx    Line: 20
Avatar billede dgivoni Nybegynder
11. marts 2004 - 17:38 #12
Naa, du skal ikke bruge IDataReader, men bare DataReader
Avatar billede dgivoni Nybegynder
11. marts 2004 - 17:38 #13
Dvs. System.Data.OleDb.OleDbDataReader for at vaere helt korrekt
Avatar billede simonia Nybegynder
27. maj 2004 - 19:44 #14
der lukkes. fl ikke korrekt svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester