webForumDet fria alternativet

Söka i access databas

.NETur .NET

18 svar · 771 visningar · startad av Topper

TopperMedlem sedan apr. 200531 inlägg
#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

jazzilMedlem 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%"
TopperMedlem 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...

voigtann1Medlem 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)

TopperMedlem 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?

jazzilMedlem sedan maj 2003151 inlägg
#6

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

TopperMedlem 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>
jazzilMedlem 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">[...]
TopperMedlem 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!

jazzilMedlem 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 ;)

JosefMedlem 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.

jazzilMedlem 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.

TopperMedlem sedan apr. 200531 inlägg
#13

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

Tack!!

Fattar inte heller va Josef menar...

Tack igen

JosefMedlem 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.

TopperMedlem 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.

jazzilMedlem sedan maj 2003151 inlägg
#16

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

TopperMedlem sedan apr. 200531 inlägg
#17

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

NickemannenMedlem 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.

TopperMedlem 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...

145 ms totalt · 3 externa anrop · v20260731065814-full.363dfaf6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)