---
title: "Regexp o hämta data från DB"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/71577-regexp-o-hämta-data-från-db"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "aleborg"
published: "2003-03-19T17:21:03.000Z"
updated: "2003-03-20T15:12:07.000Z"
replies: 10
views: 252
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/71577-regexp-o-hämta-data-från-db"
---

# Regexp o hämta data från DB

## #1 — aleborg, 2003-03-19T17:21Z

Jag har en kod som ser ut så här:

```
Function VisaPdf(text)
	Dim vpSQL, objRegExp, ersatt, matches, Match
	
	Set objRegExp = New regexp
	objRegExp.Global = true
	objRegExp.IgnoreCase = true
	objRegExp.Pattern = "\[fil=(.*?)\]"
	Set matches = objRegExp.Execute(text)
	For Each Match IN Matches
		vpSQL = getDbRows( strCon, "Select FilID, Fil_Topic_"& Session("lang") &", Fil_End, Fil_Namn From Filer Where FilID="& objRegExp.Replace(Match.Value,"$1") )
		If Not IsNull(vpSQL) Then
			ersatt = "<table width=""450"" border=""0"" cellspacing=""0"" cellpadding=""0"">"
			ersatt = ersatt &"<tr height=""15""><td height=""15""></td></tr>"
			ersatt = ersatt &"<tr height=""1""><td bgcolor=""#A9A9A9"" height=""1""></td></tr>"
			ersatt = ersatt &"<tr><td>"
			ersatt = ersatt &"<table width=""450"" border=""0"" cellspacing=""0"" cellpadding=""0"">"
			ersatt = ersatt &"<tr height=""24""><td bgcolor=""#A9A9A9"" width=""1"" height=""24""></td>"
			ersatt = ersatt &"<td width=""5"" height=""24""></td><td width=""20"" height=""24""><img src=""../../graphics/misc/iconPdf.gif"" alt="""" height=""13"" width=""14"" border=""0""></td>"
			ersatt = ersatt &"<td height=""24""><div class=""download""><a href=""../../transauto/upload/"& vpSQL(0,0) &"_"& vpSQL(3,0) &"_"& Session("lang") &"."& vpSQL(2,0) &""" target=""_blank"">"& vpSQL(1,0) &"</a></div></td>"
			ersatt = ersatt &"<td align=""right"" height=""24""><div class=""download"">32 kb</div></td>"
			ersatt = ersatt &"<td width=""5"" height=""24""></td><td bgcolor=""#A9A9A9"" width=""1"" height=""24""></td></tr>"
			ersatt = ersatt &"<tr height=""1""><td bgcolor=""#A9A9A9"" width=""1"" height=""1""></td>"
			ersatt = ersatt &"<td bgcolor=""#A9A9A9"" width=""5"" height=""1""></td><td bgcolor=""#A9A9A9"" width=""20"" height=""1""></td>"
			ersatt = ersatt &"<td bgcolor=""#A9A9A9"" height=""1""></td><td align=""right"" bgcolor=""#A9A9A9"" height=""1""></td>"
			ersatt = ersatt &"<td bgcolor=""#A9A9A9"" width=""5"" height=""1""></td><td bgcolor=""#A9A9A9"" width=""1"" height=""1""></td>"
			ersatt = ersatt &"</tr></table></td></tr><tr height=""15""><td height=""15""></td></tr></table>"
		Else
			ersatt = ""
		End If
		text = objRegExp.Replace(text,ersatt)
	Next
	VisaPdf = text
End Function
```

problemet är att det blir samma data på alla ställen som replacas
Vad gör jag fel?

Permalänk: https://www.webforum.nu/p/71577

## #2 — Nickemannen, 2003-03-19T18:03Z

Varför inte bara text = ersatt ?

Och istället för 

```
ersatt = ""
ersatt = ersatt & ""
```

skriv

```
ersatt = ""&_
"fortsatt text"&_
"fortsatt"
```

Permalänk: https://www.webforum.nu/p/983974

## #3 — aleborg, 2003-03-19T18:13Z

> **Nickemannen skrev:**
>
> Varför inte bara text = ersatt ?

Då syns inte övrig text, regexp:en plockar ut \[fil=34\] och \[fil=2\] i en text, t ex:
"här har vi en fil \[fil=34\] och en till \[fil=2\]"

plockar fram med regexp 34 och 2 och hämtar info om filerna i en databas och ersätter varje \[fil=X\] med "ersatt"

Permalänk: https://www.webforum.nu/p/983977

## #4 — Nickemannen, 2003-03-19T18:16Z

Men du, du har ingen räknare i Din for each så att den kan gå till nästa post i vpSQL(0,0), skall det inte vara vpSQL(i,0) och att i ökas med ett i varje steg ?

Kanske har missuppfattat här också.

Permalänk: https://www.webforum.nu/p/983986

## #5 — aleborg, 2003-03-19T18:26Z

Den hämtar ju data i varje "for" så det behövs inte

Permalänk: https://www.webforum.nu/p/984003

## #6 — Nickemannen, 2003-03-19T18:30Z

Okej, hehe hittade något annat nu då.

Borde det inte vara såhär ?

text = text &  reg.replace

Permalänk: https://www.webforum.nu/p/984008

## #7 — aleborg, 2003-03-19T18:44Z

Då blir det dubbelt av övrig text!

Permalänk: https://www.webforum.nu/p/984021

## #8 — aleborg, 2003-03-20T08:37Z

Någon som vet hur man löser detta?
Någon måste gjort en funktion med regexp som hämtar data ur en databas?!

Permalänk: https://www.webforum.nu/p/984290

## #9 — solbulle, 2003-03-20T14:08Z

Om tanken alltså är att du ska få ut ett helt "tableblock" för varje matchning så måste väl de sista raderna i loopen se ut så här:

```
		VisaPdf = VisaPdf & objRegExp.Replace(text,ersatt)
	Next

End Function
```

Annars får du väl 'text' överskrivet för varje loop så att det bara blir det sista kvar?

Permalänk: https://www.webforum.nu/p/984475

## #10 — aleborg, 2003-03-20T14:14Z

Då blir allt dubbelt!

Permalänk: https://www.webforum.nu/p/984476

## #11 — aleborg, 2003-03-20T15:12Z

Löste det!

```
Function VisaPdf(text)
	Dim vpSQL, objRegExp, ersatt, matches, Match, texten
	
	Set objRegExp = New regexp
	objRegExp.Global = false
	objRegExp.IgnoreCase = true
	objRegExp.Pattern = "\[fil=(.*?)\]"
	Set matches = objRegExp.Execute(text)
		texten = text
	For Each Match IN matches
		vpSQL = getDbRows( strCon, "Select FilID, Fil_Topic_"& Session("lang") &", Fil_End, Fil_Namn, Fil_Size From Filer Where FilID="& objRegExp.Replace(Match.Value,"$1") )
		If Not IsNull(vpSQL) Then
			ersatt = "<table width=""450"" border=""0"" cellspacing=""0"" cellpadding=""0"">" & _
			"							<tr height=""15""><td height=""15""></td></tr>" & _
			"							<tr height=""1""><td bgcolor=""#A9A9A9"" height=""1""></td></tr>" & _
			"							<tr><td>" & _
			"									<table width=""450"" border=""0"" cellspacing=""0"" cellpadding=""0"">" & _
			"										<tr height=""24""><td bgcolor=""#A9A9A9"" width=""1"" height=""24""></td>" & _
			"											<td width=""5"" height=""24""></td><td width=""20"" height=""24""><img src=""../../graphics/misc/iconPdf.gif"" alt="""" height=""13"" width=""14"" border=""0""></td>" & _
			"											<td height=""24""><div class=""download""><a href=""../../upload/"& vpSQL(0,0) &"_"& vpSQL(3,0) &"_"& Session("lang") &"."& vpSQL(2,0) &""" target=""_blank"">"& vpSQL(1,0) &"</a></div></td>" & _
			"											<td align=""right"" height=""24""><div class=""download"">"& ConvFileSize(vpSQL(4,0),1) &"</div></td>" & _
			"											<td width=""5"" height=""24""></td><td bgcolor=""#A9A9A9"" width=""1"" height=""24""></td></tr>" & _
			"										<tr height=""1""><td bgcolor=""#A9A9A9"" width=""1"" height=""1""></td>" & _
			"											<td bgcolor=""#A9A9A9"" width=""5"" height=""1""></td><td bgcolor=""#A9A9A9"" width=""20"" height=""1""></td>" & _
			"											<td bgcolor=""#A9A9A9"" height=""1""></td><td align=""right"" bgcolor=""#A9A9A9"" height=""1""></td>" & _
			"											<td bgcolor=""#A9A9A9"" width=""5"" height=""1""></td><td bgcolor=""#A9A9A9"" width=""1"" height=""1""></td>" & _
			"										</tr></table></td></tr><tr height=""15""><td height=""15""></td></tr></table>"
		Else
			ersatt = ""
		End If
		texten = objRegExp.Replace(texten,ersatt)
		Exit For
	Next
		If Matches.Count>0 Then
			texten=VisaPdf(texten)
		End If
	VisaPdf = texten
End Function
```

Permalänk: https://www.webforum.nu/p/984514

---

Tråden på webben: https://www.webforum.nu/amne/asp/71577-regexp-o-hämta-data-från-db
