Avatar billede clausn Nybegynder
21. februar 2001 - 10:25 Der er 14 kommentarer og
1 løsning

Søg og erstat

Hejsa!

Jeg vil på min side gerne have muligthed for at kunne formatere noget forskelligt tekst.
Teksten ser sådan Qxxxxxx (Som nogen måske har gættet er det Microsofts KB artikler)

Eksempelvis skal Q201255 ersatatted med http://support.microsoft.com/support/kb/articles/Q201/2/55.ASP

Disse KB artikler står rundt omkring i forskellige poster i en Access db, så det hjælper ikke noget med at lede efter det i SQL sætningen, da den anden tekst ikke vil komme med.
Det skal fungere lidt efter samme princip som de funktioner der kan lede efter www og e-mail adresser og erstastte dem med hyperlinks.

Posten i Access er af typen \"Notat\"

Løsning ses gerne hvis der skal uddeles point :)
Avatar billede eagleeye Praktikant
22. februar 2001 - 09:58 #1
<%
\'Hend Qxxxxxx fra et recordset.
kbName = RecordSet(\"FeltNavn\")


if Len(kbName) = 7 then
  sub1 = Mid(kbName, 1, 4)
  sub2 = Mid(kbName, 5, 1)
  sub3 = Mid(kbName, 6, 2)
  linktokb = \"http://support.microsoft.com/support/kb/articles/\" & sub1 & \"/\" & sub2 & \"/\" & sub3 & \".asp\"
end if
%>

Så kan du indsætte et link sådan:
<a href=\"<%=linktokb%>\">Articke <%=kbName%></a>
Avatar billede clausn Nybegynder
22. februar 2001 - 16:49 #2
Godt forsøg, men desvæære er det ikke lige det jeg er ude efter, da hvis jeg har et ord som fx \"Nielsen\", vil den også lave det om KB artikkel. Et lille eksempel: \"Failed to initialize - terminating Q226528 Installer mdac 2.1 fra cdrom:\\common\\enu\"

Det er KB artiklen jeg gerne vil have formateret, men den skal stadig stå midt inde i teksten - den skal bare laves om til et hyperlink.
Avatar billede eagleeye Praktikant
22. februar 2001 - 20:29 #3
hmm nu forstår jeg hvorfor det er et memo felt :)

Her noget nyt kode:
memofelt = recordset(\"memofeltet\")

<%
index=instr(1,memofelt,\"Q\")
do while (index <> 0)
  Qtalvalue = mid(memofelt,index+1,6) \'læs de 5 tal
  \'Mellemrum og ,/. bliver nogle gange betratet som tal :(. Derfor udskift dem med eks.vis A.
  Qtalvalue = replace (Qtalvalue,\" \",\"A\")
  Qtalvalue = replace (Qtalvalue,\",\",\"A\")
  Qtalvalue = replace (Qtalvalue,\".\",\"A\")
  linktext = \"\"
  if isnumeric (Qtalvalue) = true then
    sub1 = Mid(memofelt, index, 4) & \"/\"  \'hendt Qxxx/
    sub2 = Mid(memofelt, index+4, 1) & \"/\" \'hendt x/
    sub3 = Mid(memofelt, index+5, 2) & \".asp\" \'hendt xx.asp
    linktext = \"<a href=http://support.microsoft.com/support/kb/articles/\" & sub1 & sub2 & sub3 & \">\"
    linktext = linktext & \"Q\" & Qtalvalue & \"</A>\"
    if index > 1 then
      fortext = Mid(memofelt,1,index-1)
    end if
    memofelt = replace (memofelt,\"Q\"&Qtalvalue,linktext,index,1,1)
    memofelt = fortext & memofelt
  end if
  index=instr(index+1+len(linktext),memofelt,\"Q\") \'Find næste kb artikel.
loop
set Qtalvalue = nothing
set fortext = nothing
Response.Write memofelt
%>


Jeg har laver en test med:
memofelt = \"Q122522 Dette Q135643 er en test af links Q201255 på nettet. Ligeledes Q201255, og Q226528.Q765432\"
memofelt = \"Uden rigtig Qtal Q12425 223421Q,6523434\"
memofelt = \"Uden du ved nok\"

Umiddelbart syntes jeg det virker.
Avatar billede clausn Nybegynder
23. februar 2001 - 10:16 #4
Kommer med denne fejl:

Error Type:
Microsoft VBScript compilation (0x800A0401)
Expected end of statement
/faq.asp, line 116, column 70

linktext = \"<a href=http://support.microsoft.com/support/kb/articles/\"; & sub1 & sub2 & sub3 & \">\"
Avatar billede eagleeye Praktikant
23. februar 2001 - 10:30 #5
Prøv at fjerne ; fra linien:
linktext = \"<a href=http://support.microsoft.com/support/kb/articles/\" & sub1 & sub2 & sub3 & \">\"
Avatar billede eagleeye Praktikant
23. februar 2001 - 10:32 #6
Der er eksperten.dk som indsættet ; efter ...articles/\"

Lige som der er to ;; i dit indlæg.

Jeg ved ikke helt om den her virker, du kan jo prøve:
linktext = \"<a href=\"\"http://support.microsoft.com/support/kb/articles/\"\"\" & sub1 & sub2 & sub3 & \">\"
Avatar billede eagleeye Praktikant
23. februar 2001 - 10:33 #7
Nej det er det samme eksperten.dk indsætter et ;
Avatar billede clausn Nybegynder
23. februar 2001 - 10:33 #8
Nu virker det også sådan set meget godt... Borset fra at alle linjeskift ikke bliver medtaget.
Jeg har prøvet at indsætte følg. linje, men jeg kan ikke lige få det til at virke som jeg gerne vil :(

Replace(memofelt,vbcrlf,\"<br>\")
Avatar billede clausn Nybegynder
23. februar 2001 - 10:35 #9
Hvis Kb artiklen kommer efter et punktum bliver teksten ikke taget med.
Avatar billede eagleeye Praktikant
23. februar 2001 - 10:55 #10
Du har ret i at Replace(memofelt, vbCrLf, \"<br>\") skulle virke..
Jeg kan dessvære før prøve at kikke på koden når jeg kommer hjem i aften.

Hvilken streng giver problem, kan du give et eksempel på en som fejler med artiel efter punktum?

mit bud: \"Artiket efter punktum. Q201255 bør læses.\"  Eller hvor skal Qxxxxx stå ?
Avatar billede clausn Nybegynder
23. februar 2001 - 10:57 #11
Nemlig.. det er hvis der står \"Artiket efter punktum. Q201255 bør læses.\"
Avatar billede eagleeye Praktikant
23. februar 2001 - 15:57 #12
Jeg har prøvet nu. Jeg kan ikke genskabe den fejl du beskriver. Her er kode lavet lidt om, men jeg tro bare ikke det ændre på det.

index=instr(1,memofelt,\"Q\")
do while (index <> 0)
  Qtalvalue = mid(memofelt,index+1,6) \'læs de 5 tal
  \'Mellemrum og ,/. bliver nogle gange betratet som tal :(. Derfor udskift dem med eks.vis A.
  Qtalvalue = replace (Qtalvalue,\" \",\"A\")
  Qtalvalue = replace (Qtalvalue,\",\",\"A\")
  Qtalvalue = replace (Qtalvalue,\".\",\"A\")
  if isnumeric (Qtalvalue) = true then
    sub1 = Mid(memofelt, index, 4) & \"/\"  \'hendt Qxxx/
    sub2 = Mid(memofelt, index+4, 1) & \"/\" \'hendt x/
    sub3 = Mid(memofelt, index+5, 2) & \".asp\" \'hendt xx.asp
    linktext = \"<a href=http://support.microsoft.com/support/kb/articles/\" & sub1 & sub2 & sub3 & \">\"
    linktext = linktext & \"Q\" & Qtalvalue & \"</A>\"
    if index > 1 then
      fortext = Mid(memofelt,1,index-1)
    else
      fortext = \"\"
    end if
    memofelt = replace (memofelt,\"Q\"&Qtalvalue,linktext,index,1,1)
    memofelt = fortext & memofelt
  end if
  index=instr(index+1+len(linktext),memofelt,\"Q\") \'Find næste kb artikel.
loop
set Qtalvalue = nothing
set fortext = nothing
set linktext = nothing
memofelt = replace(memofelt,vbCrLf,\"<br>\")


Response.Write memofelt

Den udskifter også vbCrLf med <br>.
Avatar billede eagleeye Praktikant
23. februar 2001 - 16:02 #13
hmmmmm nu kommer ; med igen.... husk at fjerne det. evt ret linktext = \"<a...  til
linktext = \"<a href=\"\"http://support.microsoft.com/support/kb/articles/\" & sub1 & sub2 & sub3 & \"\"\">\"
Avatar billede eagleeye Praktikant
25. februar 2001 - 10:32 #14
Den med return hvis det ikke virker med vbCrLf så prøv evt:
memofelt = replace(memofelt,Chr(13),\"<br>\")
Avatar billede clausn Nybegynder
26. februar 2001 - 16:32 #15
Lækkert nok... Det virker som det skal...! 1000 Tak!
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