Avatar billede rocky Nybegynder
16. april 2003 - 22:48 Der er 23 kommentarer og
1 løsning

åbning af word dokumenter

Hejsa jeg har et problem som I sikkert ikke kan løse,
men jeg forsøger alligevel..

Jeg har denne asp hjemmeside, som består af Overskriften, Menu'en og indholdet
. I menu delen har jeg en henvisning der fx hedder

<A HREF="indhold.asp?type=Afdelingens virkeområde" TARGET="indhold">Afdelingens virkeområde</A>

den link referer altså til indholdsdelen og min access database der består
af tekst/link til forskellige word dokumenter. I dette tilfælde er det så
word dokumenterne under afdelingens virkeområder jeg beder dem om.


Derfor har jeg også i indholdssiden lavet disse kommandoer:



<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("wordarkiv.mdb")
strKrit = Request.QueryString("type")

strSQL = "Select * From wordarkiv Where type='" & strKrit & "'"

Set wordarkiv = Conn.Execute(strSQL)
%>

<table>

<%
While NOT wordarkiv.EOF
%>
<tr>
<td>
<HR SIZE="1" NOSHADE>
</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<% navn = wordarkiv.Fields ("worddoc")%>
<td><A HREF="<% = navn%>"><% = navn%></A></td>
</tr>
<tr>
<td></td>
</tr>

<%
wordarkiv.MoveNext
Wend
%>


Mit spørgsmål er så, om man på nogen måde kan lave en kommando, der gør
at indholdssiden automatisk åbner dokumenterne hvis der kun er et dokument
listet i databasen, således at man ikke behøver at trykke på det efterfølgende link?

Alle ideer har interesse..
Tak på forhånd!!
Avatar billede jespernaur Nybegynder
17. april 2003 - 16:30 #1
"som I sikkert ikke kan løse" -- hvad er det for en utilstedelig mangel på tiltro? Du kan tro nej! Her skal du bare se:

<%

sub rw(txt)
  Response.Write(txt)
end sub


Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("wordarkiv.mdb")
strKrit = Request.QueryString("type")

strSQL = "Select * From wordarkiv Where type='" & strKrit & "'"

Set wordarkiv = Conn.Execute(strSQL)

' Find ud af om der var 1 eller flere rækker
antal = 0
Do While NOT wordarkiv.EOF
  antal = antal + 1
  if antal = 1 then
      ' Gem den første, for det tilfælde at antal = 1
      navn = wordarkiv.Fields ("worddoc")
  Else
      Exit Do ' Der er flere end 1, vi behøver ikke se resten
  End If
  wordarkiv.MoveNext
Loop


if antal = 1 then
  ' Generer noget javascript, der henter den fundne URL
  rw("<script language=""JavaScript"">location = '" & navn & "';</script>" & vbcrlf)
else
  ' Generer liste over URL's
  wordarkiv.MoveFirst
%>

  <table>

<%
  While NOT wordarkiv.EOF
%>
      <tr>
      <td>
      <HR SIZE="1" NOSHADE>
      </td>
      </tr>
      <tr>
      <td></td>
      </tr>
      <tr>
      <% navn = wordarkiv.Fields ("worddoc")%>
      <td><A HREF="<% = navn%>"><% = navn%></A></td>
      </tr>
      <tr>
      <td></td>
      </tr>

<%
      wordarkiv.MoveNext
  Wend
%>
  </table>
<%
end if

Set wordarkiv = Nothing
Conn.Close
Set Conn = Nothing
%>

Som du ser har jeg tilføjet lidt oprydning til sidst - hvis du allerede har det, skal du bare smide det ud.

Mvh
Jesper Naur
Avatar billede rocky Nybegynder
19. april 2003 - 19:39 #2
Tak skal du have vi forsøger at få det til at virke.
Avatar billede rocky Nybegynder
20. april 2003 - 20:00 #3
Vi kan ikke rigtig få det til at virke... Den siger den ikke kan finde siden når der kun er et worddokument. og melder fejl når der intet er... Hjælp, ved godt jeg har givet dig point, men det er livsvigtigt for os..tak på forhånd.
Avatar billede jespernaur Nybegynder
20. april 2003 - 23:49 #4
For at finde ud af hvad problemet er, kan du ændre linien:

  rw("<script language=""JavaScript"">location = '" & navn & "';</script>" & vbcrlf)

til

  rw("<script language=""JavaScript"">//location = '" & navn & "';</script>" & vbcrlf)

Derved forhindrer vi at JavaScript koden til at hente siden bliver udført, og derved kan du se den genererede kode ved at sige 'vis kilde' (eller 'view source' hvis du kører engelsk). Så må du kontrollere, om URL'en ser fornuftig ud.
Avatar billede rocky Nybegynder
22. april 2003 - 13:43 #5
ok, prøver lige.. beklager jeg ikke er så hurtig til at svare, men det har jo været ferie.. :-) håber du også har nydt den..
Avatar billede rocky Nybegynder
23. april 2003 - 08:31 #6
hmmm
Det eneste den skriver er
antal = 1
Avatar billede jespernaur Nybegynder
23. april 2003 - 09:23 #7
Ja og herefter skal du højreklikke på skærmen og trykke "view source" for at se koden til siden - og det er DER det bliver interessant
Avatar billede rocky Nybegynder
23. april 2003 - 09:30 #8
nå ja.. sorry, sover stadig...
Avatar billede rocky Nybegynder
23. april 2003 - 09:31 #9
CTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<!-- Minus AutoDato -->
    <TITLE>Indhold</TITLE>
<META NAME="Generator" CONTENT="Stone's WebWriter 3.5">
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000080" LINK="#0000FF" VLINK="#660066" ALINK="#FF0000">
<FONT SIZE="5" COLOR="#004080">Haderslev sygehus - oversigtsplan</FONT><BR>



<table>



<script language="JavaScript">//location = 'worddoc\civic1.htm';</script>





</table>
</BODY>
</HTML> 
antal = 1
Avatar billede rocky Nybegynder
23. april 2003 - 09:34 #10
worddokumentet er gemt som en hjemmeside, for at forhindre den grimme kant, derfor civic1.htm
Avatar billede rocky Nybegynder
23. april 2003 - 09:35 #11
jeg har slettet det sidste: antal = 1, så siden er tomt i stedet..
Avatar billede rocky Nybegynder
23. april 2003 - 09:36 #12
men jeg kan ikke rigtig finde nogle konkrete fejl.. kan du??
Avatar billede jespernaur Nybegynder
23. april 2003 - 10:13 #13
Såvidt jeg kan bedømme, må det være backslash i

  location = 'worddoc\civic1.htm';

der er problemet - da backslash er 'escape' tegn i JavaScript strenge, vil ovenstående blive opfattet som

  location = 'worddoccivic1.htm';

da \c ikke er en særlig escape-sekvens. For at opnå det du har brug for, er man antagelig nødt til at sørge for, at der kommer til at stå

  location = 'worddoc\\civic1.htm';

Det bør kunne løses ved at skrive

  Replace name, "\", "\\"

i ASP-siden, umiddelbart inden den genererer JavaScriptet, altså således:

  ' Generer noget javascript, der henter den fundne URL
  Replace name, "\", "\\"
  rw("<script language=""JavaScript"">location = '" & navn & "';</script>" & vbcrlf)
Avatar billede jespernaur Nybegynder
23. april 2003 - 10:16 #14
Ups, der skulle have stået

  Replace navn, "\", "\\"
Avatar billede jespernaur Nybegynder
23. april 2003 - 10:22 #15
Endnu mere ups, det skal være:

  navn = Replace(navn, "\", "\\")

(og nu er det testet!)
Avatar billede rocky Nybegynder
23. april 2003 - 11:50 #16
Jeg prøver det lige, men jeg er først tilbage imorgen igen omkring kl 12.. Har ikke Internet på min egen pc, desværre... men jeg takker virkelig for din hjælp!!
Avatar billede rocky Nybegynder
24. april 2003 - 11:57 #17
Det virker!!!!!!!!!!!!
Yes.... tak skal du ha!!!!
Du skal have tusind tak.. Du fortjener næsten nogle flere point.
Avatar billede rocky Nybegynder
24. april 2003 - 14:22 #18
Hvis du har ekstra tid og lyst til nogle flere point, har jeg et ekstra spørgsmål

Når der nu ikke kun er 1 link, men flere, så viser hjemmesiden alle links, men det ser ikke så pænt ud at disse links er hele stien, fx worddoc\civic1.htm 
Jeg er godt klar over at det er her jeg skal ændre noget:
<table>

<%
  While NOT wordarkiv.EOF
%>
      <tr>
      <td>
      <HR SIZE="1" NOSHADE>
      </td>
      </tr>
      <tr>
      <td></td>
      </tr>
      <tr>
      <% navn = wordarkiv.Fields ("worddoc")%>
      <td><A HREF="<% = navn%>"><% = navn%></A></td>
      </tr>
      <tr>
      <td></td>
      </tr>

<%
      wordarkiv.MoveNext
  Wend
%>
  </table>

og jeg har også forsøgt at lave et ekstra felt i databasen der hedder titel og så ændret koden til:
<a href="<%=rs("navn")%>"><%=rs("title")%></a>
men jeg gør sikkert et eller andet forkert, det er trods alt min første hjemmeside og jeg er ikke så kendt på området endnu.
Hvis du kan løse problemet opretter jeg med glæde et nyt spørgsmål og donere 150 point til dig igen...
Avatar billede jespernaur Nybegynder
24. april 2003 - 14:51 #19
Det skulle nok kunne klares - det er ikke ganske klart om du har kaldt det nye felt "titel" eller "title". Nu har jeg valgt at kalde det "titel".

Jeg viser lige det meste af logikken igen - jeg fik også lige løst problemet der opstod, når den ikke finder nogen dokumenter.

Hvis du lægger et nyt spørgsmål, så husk at det skal indeholde reference til indeværende - ellers får du på puklen af reglements-vogterne!

Her er det så:

if antal = 0 then
  rw("Ingen dokumenter fundet<br>")
elseif antal = 1 then
  ' Generer noget javascript, der henter den fundne URL
  navn = Replace(navn, "\", "\\")
  rw("<script language=""JavaScript"">location = '" & navn & "';</script>" & vbcrlf)
else
  ' Generer liste over URL's
  wordarkiv.MoveFirst
%>

  <table>

<%
  While NOT wordarkiv.EOF
%>
      <tr>
      <td>
      <HR SIZE="1" NOSHADE>
      </td>
      </tr>
      <tr>
      <td></td>
      </tr>
      <tr>
      <%
      navn = wordarkiv.Fields ("worddoc")
      titel  = wordarkiv.Fields ("titel")
      %>
      <td><A HREF="<% = navn%>"><% = titel%></A></td>
      </tr>
      <tr>
      <td></td>
      </tr>

<%
      wordarkiv.MoveNext
  Wend
%>
  </table>
<%
end if

Set wordarkiv = Nothing
Conn.Close
Set Conn = Nothing
%>


Mvh
Jesper Naur
Avatar billede rocky Nybegynder
25. april 2003 - 22:22 #20
Jeg har fået det med titlen til at virke, men jeg har fundet lidt småproblemer med mit første spørgsmål.
Der hvor der ikke er nogle dokumenter og den skulle skrive "ingen dokumenter fundet" . Det virker kun ved nogle links
. Jeg har prøvet at kopiere de links der virker og de fortsætter også med at virke indtil jeg ændre navnet på
dem. Jeg har sikkert gjort et eller andet forkert, men jeg kan ikke finde ud af hvilket..
Jeg er næsten sikker på at navnet er rigtigt, men fejlmeddelsen lyder sådan:


Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A005E)
Null er brugt ugyldigt: 'Replace'
/projekt sygehus/hjemmesiden/indhold.asp, line 47

Hvad betyder dette.. Jeg har prøvet at højreklikke og sige vis kilde, men der står næsten det samme.
Du bliver nød til at hjælpe mig, tiden begynder at blive knap..
Avatar billede jespernaur Nybegynder
25. april 2003 - 23:57 #21
Når du gengiver en fejludskrift der indeholder et linienummer fra koden, skal du vænne dig til også at vise den pågældende linie, med samt mindst de foregående 3-4 linier (og evt de 2-3 følgende), og med tydelig angivelse af, hvilken kodelinie der refereres fra fejludskriften. I det aktuelle tilfælde kan jeg godt gætte hvilken linie der er tale om, men det vil generelt ikke være muligt.

Det du i en sådan situation bør vise, kunne se således ud:

...
if antal = 0 then
  rw("Ingen dokumenter fundet<br>")
elseif antal = 1 then
  ' Generer noget javascript, der henter den fundne URL
  navn = Replace(navn, "\", "\\")    <<<<<<< linie 47 <<<<<<***************
  rw("<script language=""JavaScript"">location = '" & navn & "';</script>" & vbcrlf)
else
...

Jeg har kunnet genskabe dit problem ved at lave en række i databasen med en unik "type", men hvor feltet "worddoc" er tomt. Dette giver i koden anledning til at variablen "navn" ikke indeholder gyldige data, eller med andre ord er "Null". Dette får Replace til at give fejl, men der er i bund og grund tale om, at der er kludder i dit databaseindhold!

Jeg angiver en rettelse hvor denne situation bliver fanget, og du får en fejludskrift der indeholder rækkens "type", men som nævnt - der er kludder i dine data!

...
if antal = 0 then
  rw("Ingen dokumenter fundet<br>")
elseif antal = 1 then
  if IsNull(navn) then
      rw("Inkonsistente data for type &lt" & strKrit & "&gt<br>" & vbcrlf)
  else
      ' Generer noget javascript, der henter den fundne URL
      navn = Replace(navn, "\", "\\")
      rw("<script language=""JavaScript"">location = '" & navn & "';</script>" & vbcrlf)
  end if
else
...


Mvh
Jesper Naur
Avatar billede rocky Nybegynder
20. maj 2003 - 14:51 #22
undskyld jeg havde helt glemt at give dig ekstra point som jeg lovede, du siger man skal lave en henvisning.. skal man bare oprette et nyt spørgsmål og skrive hvorfor, eller skal der stå noget bestemt.
Avatar billede jespernaur Nybegynder
20. maj 2003 - 17:16 #23
Du opretter bare et nyt spm fx 'Point til jespernaur', og indsætter en henvisning til indeværende spm, fx sådan:

http://www.eksperten.dk/spm/341447
Avatar billede rocky Nybegynder
28. maj 2003 - 11:34 #24
så har jeg oprette et spm. til dig, så du kan få nogle point..
http://www.eksperten.dk/spm/358124
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