Avatar billede l_otto Nybegynder
24. juli 2003 - 09:59 Der er 39 kommentarer og
1 løsning

Udtræk el. eksport til excel. fra søgning.

Jeg skal bruge et script der kan trække de viste felter ud til et excel ark så det kan bruges til brevfelt..

den viser Fornavn og Efternavn... se ned og det er de to felter og senere flere der skal trækkes ud..

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("database.mdb")
Conn.Open DSN

' Skaber et recordset udfra SQL strengen
Set rs = Conn.Execute(strSQL)

' Hvis der er fundet poster på søgningen
If Not (rs.BOF Or rs.EOF) Then

MedarbejderPosition = 0

Do While Not rs.EOF

' Variabler deklæres
id                    = rs("id")
Navn                = rs("Fornavn")
Efternavn    = rs("Efternavn")
Adresse        = rs("Adresse")

' Generere et link, som er defineret i databasen
Link = "<a href='semedarb.asp?position="&MedarbejderPosition&"'>"  & Navn & "&nbsp;" & Efternavn &"</a></b>"


' Udskriver linket som det blev genereret ovenfor + tilhørende kommentar
Response.Write "<li>" & Link & "</li>" & "  "
MedarbejderPosition = MedarbejderPosition + 1

rs.MoveNext
Loop
Else

' Hvis der ikke er fundet poster på søgningen
Response.Write "<li>Sådan en har vi ikke  ?"

End If

' Databaseforbindelsen lukkes
Conn.Close
Set Conn = Nothing
Avatar billede zembla Nybegynder
24. juli 2003 - 11:09 #1
Vil du oprette et decideret excel-regneark via dit script ... eller blot noget som kan importere i Excel?
Avatar billede l_otto Nybegynder
24. juli 2003 - 11:11 #2
Jamen jeg kan godt have en execl ark klar...
Avatar billede l_otto Nybegynder
24. juli 2003 - 11:12 #3
hvor :
a1 = fornavn
b1 = efternavn

og så skal den ligge de rigtige data ned i... så kan man derefter flette det ud i et word doc...
Avatar billede zembla Nybegynder
24. juli 2003 - 11:39 #4
Hvis du har et eksisterende regneark, kan du blot åbne det og skrive data til det på følgende måde: (Det kræver at du har Excel på samme server som din webserver kører og rettigheder til at ændre i den pågældende excel-fil)

dim OXL
set oXL = CreateObject("EXCEL.application")
oXL.workbooks.Open "dinexcelfil.xls"
oXL.sheets("Ark1").Activate
'Her laver du fx et loop
for i = 1 to 10
  oXL.ActiveSheet.range("A" & i).Activate
  oXL.activecell.Value = "Linje " & i & " HER SKRIVER DU BARE DIN TEKST"
next
oXL.application.quit
set OXL = nothing
Avatar billede l_otto Nybegynder
25. juli 2003 - 08:59 #5
det er ikke helt det jeg mener.. det skal jeg ske via en søgning..
Avatar billede zembla Nybegynder
25. juli 2003 - 09:04 #6
Du erstatter for-next med et gennemløb af dit søgeresultat ... det er en smal sag.
Avatar billede l_otto Nybegynder
25. juli 2003 - 09:06 #7
ok, jeg har lige fået det til at virker på en lidt anden måde....se her det er den nederset kode.:
<%
' Henter værdien fra search.htm
strKeyword     = Trim(Request.Form("search_keyword"))

strStilling    = Trim(Request.Form("search_stilling"))

strPostNummer    = Trim(Request.Form("search_postnr"))

back = Request.QueryString("back")

if not back = "true" then
    session("search_keyword")        = strKeyword
    session("search_stilling")     = strStilling
    session("search_postnr")        = strPostNummer
end if

searchExpression = "false"

' Hvis der er skrevet i feltet
strKeyword = Replace(strKeyword,"'","''")
strStilling = Replace(strStilling,"'","''")
strPostNummer = Replace(strPostNummer,"'","''")

' Opbygger en dynamisk SQL streng
strSQL = "SELECT id, Fornavn, Efternavn, Adresse, Postnr, Bynavn, Mobiltelefon, Telefon, mailm, Stilling FROM Kontaktpersoner"

if strKeyword <> "" then
    if searchExpression = "false" then
        strSQL = strSQL & " WHERE "
    end if
    strSQL = strSQL & " ((id LIKE '%" & strKeyword & "%')"
    strSQL = strSQL & " OR (Fornavn LIKE '%" & strKeyword & "%')"
    strSQL = strSQL & " OR (Efternavn LIKE '%" & strKeyword & "%')"
    strSQL = strSQL & " OR (Adresse LIKE '%" & strKeyword & "%')"
    strSQL = strSQL & " OR (Postnr LIKE '%" & strKeyword & "%')"
    strSQL = strSQL & " OR (Bynavn LIKE '%" & strKeyword & "%')"
    strSQL = strSQL & " OR (Mobiltelefon LIKE '%" & strKeyword & "%')"
    strSQL = strSQL & " OR (Telefon LIKE '%" & strKeyword & "%')"
    strSQL = strSQL & " OR (mailm LIKE '%" & strKeyword & "%')"
    strSQL = strSQL & " OR (Stilling LIKE '%" & strKeyword & "%') )"
   
    searchExpression = "true"
end if

if strStilling <> "" then
    if searchExpression = "false" then
        strSQL = strSQL & " WHERE "
    end if
    if searchExpression = "true" then
        strSQL = strSQL & " AND "
    end if
    strSQL = strSQL & "  ( Stilling = '" & strStilling & "') "
    searchExpression = "true"
end if


if strPostNummer <> "" then
    if searchExpression = "false" then
        strSQL = strSQL & " WHERE "
    end if
    if searchExpression = "true" then
        strSQL = strSQL & " AND "
    end if
    strSQL = strSQL & "  ( Postnr = '" & strPostNummer & "') "
    searchExpression = "true"
end if

strSQL = strSQL & " ORDER BY Efternavn "

'hvis vi er gået tilbage så vis den gamle søgning
if back = "true" then
    strSQL = session("search_sql")
end if

session("search_sql") = strSQL
session("search_position") = 0


' Open a connection to the Excel spreadsheet
Set exConn = Server.CreateObject("ADODB.Connection")
exConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & Server.MapPath("test.xls") & ";" & _
            "Extended Properties=""Excel 8.0;HDR=Yes;"";"

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("database.mdb")
Conn.Open DSN

' Skaber et recordset udfra SQL strengen
Set rs = Conn.Execute(strSQL)

'Hvis der er fundet poster på søgningen
If Not (rs.BOF Or rs.EOF) Then

MedarbejderPosition = 0



Do While Not rs.EOF

' Variabler deklæres
id                    = rs("id")
Navn                = rs("Fornavn")
Efternavn    = rs("Efternavn")
Adresse        = rs("Adresse")

' Generere et link, som er defineret i databasen
Link = "<a href='semedarb.asp?position="&MedarbejderPosition&"'>"  & Navn & "&nbsp;" & Efternavn &"</a></b>"


' Udskriver linket som det blev genereret ovenfor + tilhørende kommentar
Response.Write "<li>" & Link & "</li>" & "  "
MedarbejderPosition = MedarbejderPosition + 1

'Skriv til excel arket:
SQL = "INSERT INTO `brevFletkols` (fornavn, efternavn) VALUES ("
SQL = SQL & "'" & navn & "', "
SQL = SQL & "'" & efternavn & "') "

exConn.Execute(SQL)

rs.MoveNext
Loop

Else

' Hvis der ikke er fundet poster på søgningen
Response.Write "<li>Sådan en har vi ikke  ?"

End If

' Databaseforbindelsen lukkes
Conn.Close
Set Conn = Nothing
exConn.Close
Set exConn = Nothing %>
Avatar billede l_otto Nybegynder
25. juli 2003 - 09:07 #8
men nu ligger den bare data ind igen og igen hver gang jeg laver søgningen og det er fint men jeg skal jo lige have slettet det der stod i excelarket først hvordan gør jeg det-
Avatar billede zembla Nybegynder
25. juli 2003 - 09:09 #9
Har du prøvet

exConn.Execute("delete * from brevFletkols")

?
Avatar billede l_otto Nybegynder
25. juli 2003 - 09:10 #10
nej hvor skal jeg sætte den ind helt præcist ?
Avatar billede zembla Nybegynder
25. juli 2003 - 10:08 #11
Du kan evt sætte den ind lige før linjen 'Do While Not rs.EOF'
Avatar billede l_otto Nybegynder
25. juli 2003 - 10:11 #12
det går ikke for Bill Gates.:

Microsoft JET Database Engine error '80004005'

Deleting data in a linked table is not supported by this ISAM.

/medarb/search.asp, line 235


hvad gør man så ?
Avatar billede l_otto Nybegynder
28. juli 2003 - 10:27 #13
har du tid til at hjælpe mig med det ? eller hur..
Avatar billede zembla Nybegynder
28. juli 2003 - 10:30 #14
Desværre ikke lige nu. Arbejdet kalder :-)
Avatar billede l_otto Nybegynder
28. juli 2003 - 10:33 #15
det er bare ok.............
Avatar billede l_otto Nybegynder
04. august 2003 - 14:03 #16
når hvordan går det...

nu virker det, men jeg har et problem jeg skal have slettet alle data på det excel ark der ligger på serveren.. inden der kommer ny data i, ved du hvordan man kan slette på et excel ark der ligge på servern ?
Avatar billede l_otto Nybegynder
06. august 2003 - 08:26 #17
når hvordan går det...

nu virker det, men jeg har et problem jeg skal have slettet alle data på det excel ark der ligger på serveren.. inden der kommer ny data i, ved du hvordan man kan slette på et excel ark der ligge på servern ?
Avatar billede l_otto Nybegynder
08. august 2003 - 13:07 #18
når hvordan går det...

nu virker det, men jeg har et problem jeg skal have slettet alle data på det excel ark der ligger på serveren.. inden der kommer ny data i, ved du hvordan man kan slette på et excel ark der ligge på servern ?
Avatar billede zembla Nybegynder
08. august 2003 - 13:17 #19
Jeg har lige været på en uges ferie ... er det stadig et problem for dig?
Avatar billede l_otto Nybegynder
08. august 2003 - 13:36 #20
nej nu kan jeg sætte ind i excel arket men ikke slette i det... hvor dan sletter man i det ?
Avatar billede l_otto Nybegynder
11. august 2003 - 14:19 #21
hej zembla

hvordan gør det det her:

<rip>
You are more restricted in deleting Excel data than data from a relational data source. In a relational database, "row" has no meaning or existence apart from "record"; in an Excel worksheet, this is not true. You can delete values in fields (cells). However, you cannot: Delete an entire record at once or you receive the following error message:

"Deleting data in a linked table is not supported by this ISAM."

You can only delete a record by blanking out the contents of each individual field.
</rip>

jeg vil gerne hvave den overskrive alt fra b1 og ned med ingenting...
Avatar billede zembla Nybegynder
11. august 2003 - 15:16 #22
Avatar billede l_otto Nybegynder
11. august 2003 - 15:47 #23
ja tak men jeg kan ikke få den til at overwrite data...
Avatar billede l_otto Nybegynder
11. august 2003 - 15:58 #24
der står ikke noget om "blanking out"

jeg har denne kode der skriver fint i excelarket hvordan kan jeg få den lavet om til at overwrite/blanke out ?

Open a connection to the Excel spreadsheet
Set exConn = Server.CreateObject("ADODB.Connection")
exConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & Server.MapPath("test.xls") & ";" & _
            "Extended Properties=""Excel 8.0;HDR=Yes;"";"

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("database.mdb")
Conn.Open DSN



' Skaber et recordset udfra SQL strengen
Set rs = Conn.Execute(strSQL)

'Hvis der er fundet poster på søgningen
If Not (rs.BOF Or rs.EOF) Then

MedarbejderPosition = 0



Do While Not rs.EOF

' Variabler deklæres
id                    = rs("id")
Navn                = rs("Navn2")
Efternavn    = rs("Navn1")
Adresse        = rs("Adresse1")
postnr  = rs("Post_nr")
distrikt        = rs("Distrikt")
       



' Generere et link, som er defineret i databasen
Link = "<a href='osemedarb.asp?position="&MedarbejderPosition&"'>"  & Navn & "&nbsp;" & Efternavn &"</a></b>"


' Udskriver linket som det blev genereret ovenfor + tilhørende kommentar
Response.Write "<li>" & Link & "</li>" & "  "
MedarbejderPosition = MedarbejderPosition + 1

'Skriv til excel arket:
SQL = "INSERT INTO `brevFletkols` (fornavn, efternavn, Adresse, postnr, distrikt) VALUES ("
SQL = SQL & "'" & navn & "', "
SQL = SQL & "'" & efternavn & "', "
SQL = SQL & "'" & adresse & "', "
SQL = SQL & "'" & postnr & "', "
SQL = SQL & "'" & distrikt & "') "







exConn.Execute(SQL)

rs.MoveNext
Loop

Else

' Hvis der ikke er fundet poster på søgningen
Response.Write "<li>Sådan en har vi ikke  ?"

End If

' Databaseforbindelsen lukkes
Conn.Close
Set Conn = Nothing
exConn.Close
Set exConn = Nothing %>
Avatar billede l_otto Nybegynder
11. august 2003 - 16:21 #25
nu har jeg den, men hvordan får jeg den til at vælge bare der står noget i feltet og ikke kun "babara" ?

<%
' Open a connection to the Excel spreadsheet
Set exConn = Server.CreateObject("ADODB.Connection")
exConn.Provider = "Microsoft.Jet.OLEDB.4.0"
exConn.ConnectionString = "Data Source=" & Server.MapPath("test.xls") & ";Extended Properties=Excel 8.0;"
exConn.Open


strSQL = "UPDATE `brevFletkols` SET fornavn='' WHERE fornavn='Barbara'"
exConn.Execute(strSQL)

exConn.Close
Set exConn = Nothing
%>
Avatar billede zembla Nybegynder
12. august 2003 - 08:43 #26
har du prøvet
  strSQL = "UPDATE brevFletkols SET fornavn='' WHERE fornavn<>'' or fornavn not is null"
Avatar billede l_otto Nybegynder
12. august 2003 - 08:53 #27
jubiiiiiiiiiii nu virker det...

strSQL = "UPDATE `brevFletkols` SET fornavn='' WHERE fornavn<>'' "

men jeg skal lige have efternavn, adresse, postnr, og by med hvordan gør jeg det......
Avatar billede zembla Nybegynder
12. august 2003 - 08:56 #28
du tar' en kolonne ad gangen:
exConn.Execute("UPDATE `brevFletkols` SET fornavn='' WHERE fornavn<>''")
exConn.Execute("UPDATE `brevFletkols` SET adresse='' WHERE adresse<>''")
exConn.Execute("UPDATE `brevFletkols` SET postnr='' WHERE postnr<>''")
exConn.Execute("UPDATE `brevFletkols` SET [by]='' WHERE [by]<>''")

By er et reserveret ord, derfor i []
Avatar billede l_otto Nybegynder
12. august 2003 - 09:02 #29
den sletter godt nu men jeg får en fejl..

<%
' Open a connection to the Excel spreadsheet
Set exConn = Server.CreateObject("ADODB.Connection")
exConn.Provider = "Microsoft.Jet.OLEDB.4.0"
exConn.ConnectionString = "Data Source=" & Server.MapPath("test.xls") & ";Extended Properties=Excel 8.0;"
exConn.Open


exConn.Execute("UPDATE `brevFletkols` SET fornavn='' WHERE fornavn<>''")
exConn.Execute("UPDATE `brevFletkols` SET efternavn='' WHERE efternavn<>''")
exConn.Execute("UPDATE `brevFletkols` SET adresse='' WHERE adresse<>''")
exConn.Execute("UPDATE `brevFletkols` SET postnr='' WHERE postnr<>''")
exConn.Execute("UPDATE `brevFletkols` SET distrikt='' WHERE distrikt<>''")
exConn.Execute(strSQL)

exConn.Close
Set exConn = Nothing
%>
Avatar billede l_otto Nybegynder
12. august 2003 - 09:02 #30
Microsoft JET Database Engine error '80040e0c'

Command text was not set for the command object.

/ros/p.asp, line 16


linie16 = exConn.Execute(strSQL)
Avatar billede zembla Nybegynder
12. august 2003 - 09:06 #31
Fjern linje 16, dvs : exConn.Execute(strSQL)
Avatar billede l_otto Nybegynder
12. august 2003 - 09:15 #32
nu virker det..........:-)

men når jeg skriver til arket sætter den første den nye data ind der hvor det andet sluttede..

altså hvis den første gang jeg sætter data er der 12 medarbjder der kommer i ok det vil sige at den fylder op til linie 12 så sletter vi  og næste gang jeg sætter ind starter den ved linie 12.. og ikke linie 1 ?

jeg sætter ind via denne her:
'Skriv til excel arket:
SQL = "INSERT INTO `brevFletkols` (fornavn, efternavn, Adresse, postnr, distrikt) VALUES ("
SQL = SQL & "'" & navn & "', "
SQL = SQL & "'" & efternavn & "', "
SQL = SQL & "'" & adresse & "', "
SQL = SQL & "'" & postnr & "', "
SQL = SQL & "'" & distrikt & "') "


jeg vil gerne have den starter på linie 1.. men er det fordi vi skriver ingenting ind i felterne eller hvad ?
Avatar billede l_otto Nybegynder
14. august 2003 - 09:50 #33
er du der ?
Avatar billede zembla Nybegynder
14. august 2003 - 09:56 #34
nææææ
Avatar billede l_otto Nybegynder
14. august 2003 - 09:57 #35
ok :-) he he vi er bare så tæt på at få det til at virke... se 09:15:28
Avatar billede zembla Nybegynder
14. august 2003 - 10:07 #36
ja - jeg har dog ikke støt på problemet før, så jeg kan ikke ryste løsningen ud af ærmet.

I stedet for at sætte skrive ingenting i felterne, har du så prøvet med 'null', fx sådan:

exConn.Execute("UPDATE `brevFletkols` SET distrikt=null WHERE distrikt<>''")
Avatar billede l_otto Nybegynder
14. august 2003 - 10:15 #37
den sletter fint nok, men det er ligesom om den ved hvor der stod noget før ? for næste gang jeg indsætter så starter den f.eks denne gang på linie 375 i exel arket....

kan jeg ikke fortælle den hvor den skal starte med at skrive? ind denne sql ?

'Skriv til excel arket:
SQL = "INSERT INTO `brevFletkols` (fornavn, efternavn, Adresse, postnr, distrikt) VALUES ("
SQL = SQL & "'" & navn & "', "
SQL = SQL & "'" & efternavn & "', "
SQL = SQL & "'" & adresse & "', "
SQL = SQL & "'" & postnr & "', "
SQL = SQL & "'" & distrikt & "') "


den skal stare fra A2

peter
Avatar billede l_otto Nybegynder
15. august 2003 - 12:39 #38
har du totalt opgivet mig :-(
Avatar billede zembla Nybegynder
15. august 2003 - 13:18 #39
ja, desværre - du må prøve at finde hjælp et andet sted :-)
Avatar billede l_otto Nybegynder
15. august 2003 - 13:29 #40
ok, tak for kampen... :-)
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