webForumDet fria alternativet

Söka i access databas

.NET

18 svar · 771 visningar · startad av Topper

Medlem sedan apr. 200531 inlägg
Frågan#1

Hej!

Jag skulle vilja ha hjälp med att fixa en kod till en sökfunktion.

Jag har en databaskoppling och databasens innehåll visas i en datagrid, men jag skulle nu vilja ha en enkel sökmotor som söker igenom databasen.

Varje gång sidan laddas vill jag att datagriden ska visa allt innehåll i databasen sedan när man har sökt så ska sökresultatet komma upp istället.

Någon som kan hjälpa mig med detta?

MVH

/ Kalle Anka

Medlem sedan maj 2003151 inlägg
#2

Jag skrev precis denna sql string ..

"SELECT tbl_artiklar.id AS art_id, tbl_artiklar.art_namn, 
tbl_artiklar.art_artnr, tbl_artiklar.art_desc,
tbl_artiklar.art_kat, tbl_artiklar.art_tilv,
tbl_artiklar.art_bild, tbl_artiklar.art_pris,
tbl_leverantorer.tilv_namn, tbl_kategorier.kat_namn,
tbl_kategorier.id  FROM ( tbl_artiklar LEFT JOIN
tbl_leverantorer ON tbl_artiklar.art_tilv = tbl_leverantorer.id ) LEFT JOIN tbl_kategorier ON
tbl_artiklar.art_kat = tbl_kategorier.id WHERE
tbl_artiklar.art_namn LIKE \"%"+SearchBox.Text+"%\" OR
tbl_artiklar.art_desc LIKE \"%"+SearchBox.Text+"%\" OR
tbl_leverantorer.tilv_namn LIKE
\"%"+SearchBox.Text+"%\" OR tbl_kategorier.kat_namn
LIKE \"%"+SearchBox.Text+"%\""

Sen använder du bara en OleDbDataAdapter så får du ut
och fyller en DataSet och binder den till din DataGrid så ska det nog funka ...

Lite mer exempel

OleDbConnection olCon = new OleDbConnection(ConnectionString);
OleDbDataAdapter olData = new OleDbDataAdapter(SQLQUERY, olCon);

DataSet ds = new DataSet();
olData.Fill(ds);
olCon.Close();
DataGrid dGrid = new DataGrid();
dGrid.DataSource = ds;
dGrid.DataBind();

Taget direkt ut huvvet så jag vet inte hur det funkar i praktiken ;)

Förenklad SQL Query

SELECT * FROM tabell WHERE column_varduvillsokai LIKE "%SÖK VÄRDE%"
Medlem sedan apr. 200531 inlägg
#3

Okej, tack så mycket.

Men nu är det så att jag är ganska ny inom området. Så jag undrar om det finns någon som vill hjälp mig lite mer, så jag förstår...typ väldigt mycket.

Jag har en access databas...

Medlem sedan juni 20019 519 inlägg
#4

den övre koden är ju en SQL fråga... och den nedre som Jazzil skriver är vad jag förstå en Object öppning... ungefär som vilken programmering som hellst. http://webeye.nu har bra artiklar tycker jag personligen inom ASP sen finns asp.net också(Är själv rätt ny inom .net området)

Medlem sedan apr. 200531 inlägg
#5

Okej.

Det är ASP.NET som gäller...
Ingen annan som kan hjälpa mera?

Har ju en fungerande datagrid och allt sånt klart....kan väl inte vara så svårt?

Medlem sedan maj 2003151 inlägg
#6

Om du kan ge lite kod så kanske vi kan bygga på den .. det är enklare så :)

Medlem sedan apr. 200531 inlägg
#7

Okej här kommer det....

<%@ Page Language="VB" Debug="true" Culture="sv-se" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.oledb" %>
<script runat="server">

    protected strSQL As String = "SELECT ett,två, tre, fyra," & _
                 "FROM Tabell"
    
    
              Sub Page_Load(Source As Object, E As EventArgs)
              If Not Page.IsPostBack Then
    
               lblSQL.text= strSQL
    
                BindData()
               End If
               
               
               End Sub
    
              Sub BindData()
                Dim ds As New DataSet
                Dim da As oledbDataAdapter
                 Dim strConn as string = ("Provider=" & _
                "Microsoft.Jet.OLEDB.4.0;" & _
                "Data source=" & server.mappath("databas.mdb"))
    
    
    
               da = New oledbDataAdapter(lblSQL.text, strConn)
               da.Fill(ds, "Tabell")
               myDataGrid.DataSource = ds.Tables("Tabell")
               myDataGrid.DataBind()
              End Sub
    
              Sub Paging_Click(Source As Object, E As DataGridPageChangedEventArgs)
    
               myDataGrid.CurrentPageIndex = E.NewPageIndex
               BindData()
              End Sub
    
              Sub Sorting_Click(Source As Object, E As DataGridSortCommandEventArgs)
                lblSQL.text = strSQL & " ORDER BY " & E.SortExpression
               BindData()
              End Sub
    
         Sub myDataGrid_SelectedIndexChanged(sender As Object, e As EventArgs)
    
         End Sub
    
        

</script>
<html>
<head>
    <title></title>
  

</head>
<body leftmargin="30" topmargin="30">
    <form method="post" runat="server">
        <p>
        </p>
        <table cellspacing="0" cellpadding="0" width="889">
            <tbody>
                <tr>
                    <td valign="top" width="1">
                    </td>
                    <td valign="top" width="700">
                        <p>
                            <br />
                            &nbsp;<br />
                        </p>
                        <table cellspacing="0" width="700" border="0">
                            <tbody>
                                <tr>
                                    <td width="700" height="0">
                                        <br />
                                        <p>
                                        </p>
                                        <p>
                                            Sökord 
                                            <asp:TextBox id="Form1" runat="server"></asp:TextBox>
                                            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                                            <asp:Button id="Button1" runat="server" Text="Sök"></asp:Button>
                                            <br />
                                            <br />
                                        </p>
                                        <p>
                                            <br />
                                            <br />
                                            &nbsp; 
                                        </p>
                                    </td>
                                </tr>
                                <tr>
                                    <td valign="top" colspan="0" rowspan="0" border="0">
                                    </td>
                                </tr>
                                <tr>
                                    <td valign="top">
                                        <asp:Label id="lblSQL" runat="server" visible="False"></asp:Label>
                                        <asp:Datagrid id="myDataGrid" runat="server" Font-Size="10pt" Font-Name="Verdana" Border="0" Cellpadding="4" CssClass="DataGrid" HeaderStyle-Font-Bold="True" AllowSorting="True" OnSortCommand="Sorting_Click" AllowPaging="True" OnPageIndexChanged="Paging_Click" PagerStyle-Mode="NumericPages" PagerStyle-HorizontalAlign="Right" Width="700px" OnSelectedIndexChanged="myDataGrid_SelectedIndexChanged">
                                            <AlternatingItemStyle backcolor="#ffffff"></AlternatingItemStyle>
                                            <HeaderStyle font-bold="True" forecolor="Black"></HeaderStyle>
                                            <PagerStyle horizontalalign="Right" mode="NumericPages"></PagerStyle>
                                        </asp:Datagrid>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                        <p align="right">
                        </p>
                    </td>
                    <td valign="bottom" width="1">
                    </td>
                    <td valign="top" width="178">
                        &nbsp;<br />
                        <br />
                        &nbsp;<br />
                        <br />
                    </td>
                </tr>
                <p>
                </p>
            </tbody>
        </table>
        <p>
        </p>
    </form>
</body>
</html>
Medlem sedan maj 2003151 inlägg
#8

Nu är jag ingen ninja på vb men here goes.

Ändrad/Ny kod är i Bold

<%@ Page Language="VB" Debug="true" Culture="sv-se" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.oledb" %>
<script runat="server">

    protected strSQL As String = "SELECT ett,två, tre, fyra," & _
                 "FROM Tabell"
    
    
              Sub Page_Load(Source As Object, E As EventArgs)
              If Not Page.IsPostBack Then
    
               lblSQL.text= strSQL
    
                BindData()
               End If
               
               
               End Sub
				
			 [B]Sub sokFunc(sender As Object, E As EventArgs)
				Dim searchQuery As String = "SELECT * FROM tabell WHERE columattletai LIKE '%"& Form1.Text &"%'"
				lblSQL.text = searchQuery;
				
				BindData()
			  End Sub [/B]
			
              Sub BindData()
                Dim ds As New DataSet
                Dim da As oledbDataAdapter
                 Dim strConn as string = ("Provider=" & _
                "Microsoft.Jet.OLEDB.4.0;" & _
                "Data source=" & server.mappath("databas.mdb"))
    
    
    
               da = New oledbDataAdapter(lblSQL.text, strConn)
               da.Fill(ds, "Tabell")
               myDataGrid.DataSource = ds.Tables("Tabell")
               myDataGrid.DataBind()
              End Sub
    
              Sub Paging_Click(Source As Object, E As DataGridPageChangedEventArgs)
    
               myDataGrid.CurrentPageIndex = E.NewPageIndex
               BindData()
              End Sub
    
              Sub Sorting_Click(Source As Object, E As DataGridSortCommandEventArgs)
                lblSQL.text = strSQL & " ORDER BY " & E.SortExpression
               BindData()
              End Sub
    
         Sub myDataGrid_SelectedIndexChanged(sender As Object, e As EventArgs)
    
         End Sub
    
        

</script>
<html>
<head>
    <title></title>
  

</head>
<body leftmargin="30" topmargin="30">
    <form method="post" runat="server">
        <p>
        </p>
        <table cellspacing="0" cellpadding="0" width="889">
            <tbody>
                <tr>
                    <td valign="top" width="1">
                    </td>
                    <td valign="top" width="700">
                        <p>
                            <br />
                             <br />
                        </p>
                        <table cellspacing="0" width="700" border="0">
                            <tbody>
                                <tr>
                                    <td width="700" height="0">
                                        <br />
                                        <p>
                                        </p>
                                        <p>
                                            Sökord 
                                            <asp:TextBox id="Form1" runat="server"></asp:TextBox>
                                                   
                                            <asp:Button id="Button1" runat="server" [B]OnClick="sokFunc"[/B] Text="Sök"></asp:Button>
                                            <br />
                                            <br />
                                        </p>
                                        <p>
                                            <br />
                                            <br />
                                              
                                        </p>
                                    </td>
                                </tr>
                                <tr>
                                    <td valign="top" colspan="0" rowspan="0" border="0">
                                    </td>
                                </tr>
                                <tr>
                                    <td valign="top">
                                        <asp:Label id="lblSQL" runat="server" visible="False">[...]
Medlem sedan apr. 200531 inlägg
#9

KANON! Tack så mycket!!
Bara ett litet, litet problem...

Vi kan bara söka i en kolumn i taget, hur gör man för att ändra detta?

Vi vill att sökordet ska söka igenom fem kolumner....

TACK IGEN!

Medlem sedan maj 2003151 inlägg
#10

Ändra om sql till:
"SELECT * FROM tabell WHERE columattletai LIKE '%"& Form1.Text &"%' OR columntvåattletai LIKE '%"& Form1.Text &"%' OR columntreattletai LIKE '%"& Form1.Text &"%'"

Osv..

Glömm inte att markera frågan besvarad ;)

Medlem sedan mars 20023 561 inlägg
#11

Topper: Det går jättebra att redigera inlägg istället för att posta ett nytt inlägg med såpass mycket innehåll, där dessutom nästan allt är samma som tidigare inlägg.

jazzil: Ett tips är att skaffa en bok för att få en överblick över sådana här ganska grundläggande saker. Eller kolla upp artiklar, dokumentation på nätet.

Medlem sedan maj 2003151 inlägg
#12

Josef skrev:

Topper: Det går jättebra att redigera inlägg istället för att posta ett nytt inlägg med såpass mycket innehåll, där dessutom nästan allt är samma som tidigare inlägg.

jazzil: Ett tips är att skaffa en bok för att få en överblick över sådana här ganska grundläggande saker. Eller kolla upp artiklar, dokumentation på nätet.

va? .. Jag har inget emot kritik men jag försår inte riktigt vad du menar.

Medlem sedan apr. 200531 inlägg
#13

Jazzil, tusen tack...det löste sig!

Tack!!

Fattar inte heller va Josef menar...

Tack igen

Medlem sedan mars 20023 561 inlägg
#14

Ojdå! Sorry jazzil, förväxlade er. :r

En annan grej, det är det inlägget som löste problemet som ska markeras inte det senaste.

Medlem sedan apr. 200531 inlägg
#15

Hej!

Sökmotorn fungerar som den ska men det är en liten bugg.

I min datagrid väljer jag att bara visa 10 poster på varje sida, och när jag går vidare till "sida" 2 och försöker söka där så går det inte.

Vad är det som är fel?

Förstår mig inte alls på varför det blir fel när man inte är på "sida" 1.

Medlem sedan maj 2003151 inlägg
#16

Ska du visa en andra sida av sökreslutaten eller ska du söka från sida 2?

Medlem sedan apr. 200531 inlägg
#17

Söka från sidan 2.
Visa andra sidan fungerar...som det ska.

Medlem sedan aug. 20003 575 inlägg
#18

En fråga! Om hela databasen redan är inladdad i en DataGrid varför röra databasen?

Varför inte söka i DataGriden då? Kommer att gå mycket fortare eftersom den redan ligger i minnet.

Medlem sedan apr. 200531 inlägg
#19

OKej, men hur fungerar det?

Sökmotorn fungerar ju bra, bara att det inte går att söka på första sidan...

270 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
144 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)