Avatar billede turbo2000 Nybegynder
19. oktober 2004 - 13:17 Der er 10 kommentarer og
1 løsning

Søgning i excel fil?

Hej,

Er der nogen som har lyst til at hjælpe mig med at få søgefelterne på følgende side til at virke:
http://liteframe.dk/excel/

Jeg har formået at få dataerne ud, og ønsker nu at den skal kunne søge i postnumrende i excel filen.

Jeg har lagt filerne ud til download her:
http://liteframe.dk/excel/files.rar

Venlig hilsen
/Turbo2000
Avatar billede hiks Nybegynder
19. oktober 2004 - 16:21 #1
hej

du gør således:

<%
' Selected constants from adovbs.inc
Const adOpenStatic = 3
Const adLockPessimistic = 2

Dim cnnExcel
Dim rstExcel
Dim I
Dim iCols

' This is all standard ADO except for the connection string.
' You can also use a DSN instead, but so it'll run out of the
' box on your machine I'm using the string instead.
Set cnnExcel = Server.CreateObject("ADODB.Connection")
cnnExcel.Open "DBQ=" & Server.MapPath("dealers.xls") & ";" & _
"DRIVER={Microsoft Excel Driver (*.xls)};"
%>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
        <title></title>
        <link href="../external.css" rel="stylesheet" type="text/css" media="all">
    </head>
   
    <body>
    <form method="post">
        <table cellpadding="0" cellspacing="0" border="0">
            <tr>
                <td><h5>From Zip:</h5></td>
                <td>&nbsp;</td>
                <td><h5>To Zip:</h5></td>
            </tr>
            <tr>
                <td><input type="text" name="zipstart" style="width:40px;" maxlength="4"></td>
                <td></td>
                <td><input type="text" name="zipend" style="width:40px;" maxlength="4"></td>
            </tr>
            <tr>
                <td colspan="3">&nbsp;</td>
            </tr>
            <tr>
                <td colspan="3"><input type="submit" value="Search"></td>
            </tr>
        </table>
    </form>
    <%
    ' Same as any other data source.
    ' FYI: Pulje1 is my named range in the Excel file
    Set rstExcel = Server.CreateObject("ADODB.Recordset")
   
    dim zipstart, zipend
   
    zipstart = Cint(Request.Form("zipstart"))
    zipend = Cint(Request.Form("zipend"))
   
    if zipstart <> 0 and zipend <> 0 then
        rstExcel.Open "SELECT * FROM Dealers Where Zip Between " & zipstart & " AND " & zipend & ";", cnnExcel, _
            adOpenStatic, adLockPessimistic
    else
        rstExcel.Open "SELECT * FROM Dealers;", cnnExcel, _
            adOpenStatic, adLockPessimistic
    end if
    ' Get a count of the fields and subtract one since we start
    ' counting from 0.
    iCols = rstExcel.Fields.Count
    %>
    <table width="100%" border="0" cellspacing="0" cellpadding="2">
        <tr>
            <%
            ' Show the names that are contained in the first row
            ' of the named range.  Make sure you include them in
            ' your range when you create it.
            For I = 0 To iCols - 1
                Response.Write "<td bgcolor=""#555555"" width=""40""><h4><b><font color=""white"">"
                Response.Write rstExcel.Fields.Item(I).Name
                Response.Write "</font></b></h4></td>" & vbCrLf
            Next 'I
            %>
        </tr>
        <%
        rstExcel.MoveFirst

        ' Loop through the data rows showing data in an HTML table.

        bgcolor = "#FFFFFF"

        Do While Not rstExcel.EOF
            Response.Write "<tr bgcolor=" & bgcolor & ">" & vbCrLf
            For I = 0 To iCols - 1
                Response.Write "<td><h5>"
                Response.Write rstExcel.Fields.Item(I).Value
                Response.Write "</h5></td>" & vbCrLf
            Next 'I
            Response.Write "</tr>" & vbCrLf

        if bgcolor = "#FFFFFF" then
        bgcolor = "#DDDDDD"
        else
        bgcolor = "#FFFFFF"
        end if

            rstExcel.MoveNext
        Loop
        %>
    </table>

    </body>

<%
rstExcel.Close
Set rstExcel = Nothing

cnnExcel.Close
Set cnnExcel = Nothing
%>

Som du kan se har jeg navngivet din zipstart og zipend i formen og tester på om de er forskellige fra 0

/hiks
Avatar billede hiks Nybegynder
19. oktober 2004 - 16:26 #2
du bør nok også teste for om zipstart og zipstart ikke er udfyldte altså

if zipstart = "" then zipstart = 0
if zipend = "" then zipend = 0



- eller nogle helt andre test omkring om det er et tal der er indtastet i feltet eller om længden af indtastningen er < 4

/hiks
Avatar billede turbo2000 Nybegynder
19. oktober 2004 - 16:30 #3
Hej Hiks,

Skide godt! hvor skal jeg sætte følgende ind henne?:

if zipstart = "" then zipstart = 0
if zipend = "" then zipend = 0
Avatar billede hiks Nybegynder
19. oktober 2004 - 16:42 #4
hej

jeg vil nok foreslå dig at slette:

    dim zipstart, zipend
   
    zipstart = Cint(Request.Form("zipstart"))
    zipend = Cint(Request.Form("zipend"))

og istedet indsætte en funktion i toppen af dit asp dokument (taget herfra: http://eksperten.dk/spm/551506):

<%

Function kuntal(str) 'sorterer bogstaver osv fra
  Dim RegEx
  Set RegEx = New RegExp
  RegEx.Global=true 
  RegEx.Pattern = "([^\d+])"
  kuntal = RegEx.Replace(str,"")
End Function

%>

når vi så er sikre på at det kun er tal - så kan vi nøjes med at teste om længden er lig 4 - så det ovenstående - jeg vidste før skal byttes ud med dette:

    dim zipstart, zipend
   
    zipstart = Request.Form("zipstart")
    zipend = Request.Form("zipend")

    if Len(zipstart) <> 4 Or Len(zipend) <> 4 then
        zipstart = 0
        zipend = 0
    End if

mvh hiks
Avatar billede hiks Nybegynder
19. oktober 2004 - 16:43 #5
nå ja - jeg kludrer lidt i det - vi skal jo lige huske at bruge funktionen så det sidste skal se således ud:

    dim zipstart, zipend
   
    zipstart = kuntal(Request.Form("zipstart"))
    zipend = kuntal(Request.Form("zipend"))

    if Len(zipstart) <> 4 Or Len(zipend) <> 4 then
        zipstart = 0
        zipend = 0
    End if
Avatar billede turbo2000 Nybegynder
19. oktober 2004 - 16:49 #6
Det bare alletiders! Mange tak for det hiks...

Mvh
turbo2000
Avatar billede hiks Nybegynder
19. oktober 2004 - 16:52 #7
det var så lidt!

tak for p.

/hiks
Avatar billede turbo2000 Nybegynder
19. oktober 2004 - 16:58 #8
Hov.. jeg har lige et spørgsmål til.. ved du forresten hvordan jeg får "Website" og "E-mail" til at fremstå som links?
Avatar billede hiks Nybegynder
19. oktober 2004 - 17:18 #9
du kan prøve at bruge den her funktion (LinkStringMail2) i følgende sektion:

        Do While Not rstExcel.EOF
            Response.Write "<tr bgcolor=" & bgcolor & ">" & vbCrLf
            For I = 0 To iCols - 1
                Response.Write "<td><h5>"
                Response.Write LinkStringMail2(rstExcel.Fields.Item(I).Value) 'altså her
                Response.Write "</h5></td>" & vbCrLf
            Next 'I
            Response.Write "</tr>" & vbCrLf


Denne her funktion sættes ind i toppen af dit asp-dokument:

<%

Function LinkStringMail2(strInput)

Set objRegExpHTTP1 = New RegExp
Set objRegExpHTTP2 = New RegExp
Set objRegExpEMail = New RegExp

objRegExpHTTP1.Pattern = "(http|ftp)(:\/\/[\w\._-]+\.[\w\._-]+\S*)"
objRegExpHTTP2.Pattern = "(^|[^\/])(www[^\.\s]?\.[\w\._-]+\.[A-Za-z]{2,3}[\w\S]*)"
objRegExpEMail.Pattern = "([\w\._-]+@[\w\._-]+\.[A-Za-z]{2,3}\S*)"

objRegExpHTTP1.Global = True
objRegExpHTTP2.Global = True
objRegExpEMail.Global = True

objRegExpHTTP1.IgnoreCase = True
objRegExpHTTP2.IgnoreCase = True
objRegExpEMail.IgnoreCase = True

strOutput = objRegExpEMail.Replace(strInput, " <a href='mailto:$1'>$1</a> ")
strOutput = objRegExpHTTP1.Replace(strOutput, " <a href='$1$2' target='_blank'>$1$2</a> ")
strOutput = objRegExpHTTP2.Replace(strOutput, " $1<a href='http://$2' target='_blank'>$2</a> ")

objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])('>)"
strOutput = objRegExpHTTP2.Replace(strOutput, "$2")
objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])(' target=)"
strOutput = objRegExpHTTP2.Replace(strOutput, "$2")
objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])(</a>)"
strOutput = objRegExpHTTP2.Replace(strOutput, "$2$1")

Set objRegExpHTTP2 = Nothing
set objRegExpHTTP1 = Nothing
Set objRegExpEMail = Nothing

LinkStringMail2 = strOutput
End Function

%>
Avatar billede turbo2000 Nybegynder
19. oktober 2004 - 17:36 #10
Skide smart! Det virker bare :)
Avatar billede turbo2000 Nybegynder
19. oktober 2004 - 17:43 #11
Mange tak for hjælpen. Hvis du er interesseret i hjælp mht. til grafik etc. er du meget velkommen til at kontakte mig på msn (rune @ rullekebab . dk) så vil jeg meget gerne hjælpe dig med dette, da jeg selv er "prof" webdesigner/grafiker.
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
Kurser inden for grundlæggende programmering

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