---
title: "Dela upp ett fält till två, eller nått..."
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/109093-dela-upp-ett-fält-till-två-eller-nått"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "His Divine Shadow"
published: "2004-08-13T07:37:46.000Z"
updated: "2004-08-13T10:53:04.000Z"
replies: 19
views: 468
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/109093-dela-upp-ett-fält-till-två-eller-nått"
---

# Dela upp ett fält till två, eller nått...

## #1 — His Divine Shadow, 2004-08-13T07:37Z

Har ett fält med förnamn och efternamn men jag behöver dela upp det till två fält, ett för förnamnet och ett för efternamnet, hur gör jag det?

Tycker det måste vara möjligt att göra nån kod som tar alla ord efter det första och flyttar det till ett annat fält.

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

## #2 — LeonL, 2004-08-13T08:36Z

Tyvärr känner jag inte till om det finns något inom SQL som gör att man kan göra det du beskriver. Det finns nog troligtvis inte.

Du får hämta post för post och ändra det. Huruvida du delar upp namnen beror på hur du vill göra det. Du kan använda [Split()](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfctSplit.asp) eller någon kombination med [InStr()](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfctInStr.asp) med Left() eller Right().

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

## #3 — Jesper T, 2004-08-13T08:46Z

Lägg till en kolumn "fornamn" och en "efternamn" och som princip:

```
sql="Select namn,id from tabell"
'öppna databas och loopa ut
Do while not RS.EOF
str = RS("namn")
id = RS("id")
mySplit = split(str," ")
Response.Write "Uppdaterar: "& str &"<br>"
Conn.execute("UPDATE tabell set fornamn='"& mySplit(0) &"',efternamn='"& mySplit(1) &"') where id = " & id),,128
RS.movenext
loop
'Stäng databas
RS.Close
```

Du kan kanske lägga till on error resume next om det är så att något namn skulle saknas i tabellen.

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

## #4 — Engine^, 2004-08-13T08:56Z

Om du använder Access kan du förmodligen göra på följande sätt

```
UPDATE tabell SET fornamn = Left(namn, InStr(namn, ' '), efternamn = Mid(namn, InStr(namn, ' ') + 1)
```

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

## #5 — His Divine Shadow, 2004-08-13T09:46Z

Här är koden jag använder, den kör igenom praktiskt taget alla poster men inga namn ändras alls:

```
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=E:\inetpub\wwwroot\Spas\main\avance.mdb;"
SQL = "SELECT * FROM Avance"
Set RS = Conn.Execute(SQL)
'öppna databas och loopa ut
Do while not RS.EOF
str = RS("namn")
id = RS("nr")
mySplit = split(str," ")
Response.Write "Uppdaterar: "& str &"<br>"
on error resume next
Conn.execute "UPDATE tabell SET fornamn = Left(namn, InStr(namn, ' '), efternamn = Mid(namn, InStr(namn, ' ') + 1)"
RS.movenext
loop
'Stäng databas
RS.Close
%>
```

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

## #6 — LeonL, 2004-08-13T09:48Z

Nu blandar du ihop två koder. :) Ersätt:

```
Conn.execute "UPDATE tabell SET fornamn = Left(namn, InStr(namn, ' '), efternamn = Mid(namn, InStr(namn, ' ') + 1)"
```

Med:

```
Conn.execute("UPDATE tabell set fornamn='"& mySplit(0) &"',efternamn='"& mySplit(1) &"') where id = " & id),,128
```

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

## #7 — His Divine Shadow, 2004-08-13T09:52Z

Jo jag har prövat båda faktiskt, och jag bytte ut "tabell" mot det riktiga namnet, samma sak, sidan körs igenom och det ser ok ut, öppnar tabellen i access och inget har ändrats, mysko mysko...

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

## #8 — Engine^, 2004-08-13T09:56Z

Det jag tänkte med min SQL-sats var att den kan du köra direkt i Access, men det går givetvis att göra med en funktion också.

```
strSql = "UPDATE Avance SET fornamn = Left(namn, InStr(namn, ' '), efternamn = Mid(namn, InStr(namn, ' ') + 1)"

Conn.Execute strSql, lngUpdates

Response.Write lngUpdates & " st. poster uppdaterades."
```

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

## #9 — His Divine Shadow, 2004-08-13T09:58Z

Hej vänta, det finns tre ( tecken men fyra ) tecken, ett för mycket eller?

Jo, det är det, och tar man bort error resume next så får jag:
Extra ) in query expression ''EFTERNAMN)'.

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

## #10 — His Divine Shadow, 2004-08-13T10:02Z

> **Engine^ skrev:**
>
> Det jag tänkte med min SQL-sats var att den kan du köra direkt i Access

Jo som en fråga, men det låter mig inte spar koden, klistrade bara in den såhär:
UPDATE Avance SET fornamn = Left(namn, InStr(namn, ' '), efternamn = Mid(namn, InStr(namn, ' ') + 1)

Men det säger "missing ),\], or Item in query expression" osv.

edit:
Detta säger det när jag gjorde det som en funktion:
"Missing ), \], or Item in query expression 'Left(namn, InStr(namn, ' '), efternamn = Mid(namn, InStr(namn, ' ') + 1)'. "

Samma sak som i access

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

## #11 — LeonL, 2004-08-13T10:02Z

Såg inte det själv. ;) Ersätt:

```
Conn.execute("UPDATE tabell set fornamn='"& mySplit(0) &"',efternamn='"& mySplit(1) &"') where id = " & id),,128
```

Med:

```
Conn.execute("UPDATE tabell set fornamn='"& mySplit(0) &"',efternamn='"& mySplit(1) &"' where id = " & id),,128
```

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

## #12 — His Divine Shadow, 2004-08-13T10:07Z

> **LeonL skrev:**
>
> Såg inte det själv. ;) Ersätt:
>
> ```
> Conn.execute("UPDATE tabell set fornamn='"& mySplit(0) &"',efternamn='"& mySplit(1) &"') where id = " & id),,128
> ```
>
> Med:
>
> ```
> Conn.execute("UPDATE tabell set fornamn='"& mySplit(0) &"',efternamn='"& mySplit(1) &"' where id = " & id),,128
> ```

Jo jag prövade detta också men då säger det "No value given for one or more required parameters"

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

## #13 — LeonL, 2004-08-13T10:12Z

Skriv tillbaka "On Error Resume Next".

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

## #14 — His Divine Shadow, 2004-08-13T10:18Z

Då kör det igenom alla poster på sidan men i tabellen händer ingenting.

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

## #15 — LeonL, 2004-08-13T10:19Z

Innehåller ID något värde? Skriv ut SQL-strängen för att kolla om allt ligger rätt till.

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

## #16 — His Divine Shadow, 2004-08-13T10:25Z

Jodå alla id strängar har värden, kan man använda response.write för att set hur UPDATE strängen ser ut?

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

## #17 — Jesper T, 2004-08-13T10:36Z

visst:

```
Response.Write "UPDATE tabell set fornamn='"& mySplit(0) &"',efternamn='"& mySplit(1) &"' where id = " & id
```

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

## #18 — His Divine Shadow, 2004-08-13T10:44Z

Joo, det såg ju ok ut, ex:
"UPDATE avance set fornamn='XXXXX',efternamn='XXXX' where id = 4 "

Förstår inte vad som är fel...

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

## #19 — Engine^, 2004-08-13T10:45Z

Jag som var lite klantig med paranteserna...

```
strSql = "UPDATE Avance SET fornamn = Left(namn, InStr(namn, ' ')[b])[/b], efternamn = Mid(namn, InStr(namn, ' ') + 1)"
```

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

## #20 — His Divine Shadow, 2004-08-13T10:53Z

Tackar för all hjälp, funkar fint nu :)

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/109093-dela-upp-ett-fält-till-två-eller-nått
