---
title: "Skapa textfil från databas"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/147758-skapa-textfil-från-databas"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "devotion"
published: "2006-06-06T10:32:52.000Z"
updated: "2006-06-08T21:14:06.000Z"
replies: 11
views: 625
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/147758-skapa-textfil-från-databas"
---

# Skapa textfil från databas

## #1 — devotion, 2006-06-06T10:32Z

Hej! :) 
Jag har ju gjort script som läser in en textfil i en databas... 

Kan man göra tvärtom, dvs hämta data från en databas och skapa en textfil med ett visst format? Om man kan det hur gör man?

mvh
Henrik

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

## #2 — @nders, 2006-06-06T11:28Z

Det är klart man kan.
Lite stränghanteringsfunktioner, och använd FSO för att skapa och skriva till textfilen.

Du kan ju börja med att bygga upp en sträng som ser ut som en rad som du vill skriva till filen, och sedan är filskrivningen en kakbit.

mvh

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

## #3 — devotion, 2006-06-06T19:43Z

Hepp!

Gjorde s å här och det fjunkar ju...

```
<%
dim objConn, objRS, sSQL, fsObj,tfile

' Öppna databasen
' ***************
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.ConnectionString = Application("sConn")
objConn.Open

set fsObj=Server.CreateObject("Scripting.FileSystemObject")
set tfile=fsObj.CreateTextFile(server.MapPath("/prisfiler/solar.txt"))

sSQL = 	"SELECT tblArticle.articlenumber, tblArticle.articleName, tblPrice.articlePrice, tblPrice.articleCategoryNumber, tblArticle.articleUnit, " &_
		"tblCategory.CategoryName, tblCategory.categoryNumber, tblDiscount.articleDiscount, tblSupplier.SupplierName, tblSupplier.SupplierId, " &_
		"CASE WHEN articleDiscount is null THEN articlePrice ELSE articlePrice*(1-([articleDiscount]*0.01)) END AS articlePriceWithDiscount " &_
		"FROM tblArticle " &_
		"INNER JOIN tblPrice ON tblArticle.articlenumber = tblPrice.articleNumber " &_
		"INNER JOIN tblSupplier ON tblPrice.articleSupplierId = tblSupplier.SupplierId " &_
		"LEFT OUTER JOIN tblDiscount ON tblPrice.articleCategoryNumber = tblDiscount.categoryNumber AND tblPrice.articleSupplierId = tblDiscount.supplierId " &_
		"LEFT OUTER JOIN tblCategory ON tblPrice.articleSupplierId = tblCategory.supplierId AND tblPrice.articleCategoryNumber = tblCategory.categoryNumber " &_
		"WHERE tblSupplier.supplierId = 1 " &_
		"ORDER BY tblArticle.articlenumber"
		
Set objRS = Server.Createobject("ADODB.Recordset")
objRS.Open sSQL, objConn, 1, 2

Do while not objRS.EOF
	
	sArticleNumber = objRS("articleNumber")
	sArticleName = objRS("articleName")
	dArticlePrice = cdbl(objRS("articlePrice"))
	
	sLine = sArticleNumber & "     " & sArticleName & "      " & dArticlePrice
	tfile.WriteLine(sLine)
	
	objRS.Movenext 
Loop 

objRS.Close
Set objRS = Nothing

tfile.close
set tfile=nothing
set fsObj=nothing
%>
```

Men hur gör jag för att få fasta startpositioner för de olika variablerna i strängen sLine?

```
sLine = sArticleNumber & "     " & sArticleName & "      " & dArticlePrice
```

säg att jag vill att:
 sArticleNumber ska börja position 1
sArticleName ska börja position 10
dArticlePrice ska börja position 60

Hur gör man då?

Mvh
Henrik

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

## #4 — emission, 2006-06-06T20:38Z

Gör en liten funktion som ser till att en sträng alltid blir av en viss längd.

```
function GetFixedWidthString(stringVal,length)
   GetFixedWidthString=left(stringVal & string(length," "),length)
end function
```

...och sedan är det ännu en kakbit.

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

## #5 — devotion, 2006-06-06T20:45Z

hmmmm... :(  

Nu är jag inte riktigt med, som vanligt..

Säg att jag vill att formatet på textfilen ska vara så här:

```
0000040    Kabel 1                                       125
0001289    Kabel 2                                       150
1259861    Strömbrytare                                  256
```

Hur använder jag funktionen?

Mvh
Henrik

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

## #6 — jonne, 2006-06-07T09:14Z

Borde väl gå att peta in en &vbtab eftersom det ska skrivas ut i en ren textfil

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

## #7 — J.N., 2006-06-07T09:32Z

HEJ!

Annars räcker det kanske med ; , : eller annat lämpligt tecken emellan?

Ang koden använder man den väl med GetFixedWidthString(sArticleName,10) så får du en sträng som är 10 tecken lång, med mellanslag för de positioner som du inte sArticleName täcker upp.

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

## #8 — devotion, 2006-06-07T10:11Z

> **J.N. skrev:**
>
> HEJ!
> 
> Annars räcker det kanske med ; , : eller annat lämpligt tecken emellan?
> 
> Ang koden använder man den väl med GetFixedWidthString(sArticleName,10) så får du en sträng som är 10 tecken lång, med mellanslag för de positioner som du inte sArticleName täcker upp.

Hej!

Det går inte ha några tecken mellan. Det måste vara fasta positioner....  Men jag ska testa emissions fina funktion, nu när jag vet hur den funkar!  ;)  

Mvh
Henrik

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

## #9 — devotion, 2006-06-08T20:26Z

Hepp!
Så här fick det bli, med emissions finfina funktion:

```
<%
dim objConn, objRS, sSQL, fsObj,tfile

function GetFixedWidthString(stringVal,length)
   GetFixedWidthString=left(stringVal & string(length," "),length)
end function

' Öppna databasen
' ***************
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.ConnectionString = Application("sConn")
objConn.Open

set fsObj=Server.CreateObject("Scripting.FileSystemObject")
set tfile=fsObj.CreateTextFile(server.MapPath("/prisfiler/solar.txt"))

sSQL = 	"SELECT tblArticle.articlenumber, tblArticle.articleName, tblPrice.articlePrice, tblPrice.articleCategoryNumber, tblArticle.articleUnit, " &_
		"tblCategory.CategoryName, tblCategory.categoryNumber, tblDiscount.articleDiscount, tblSupplier.SupplierName, tblSupplier.SupplierId, " &_
		"CASE WHEN articleDiscount is null THEN articlePrice ELSE articlePrice*(1-([articleDiscount]*0.01)) END AS articlePriceWithDiscount " &_
		"FROM tblArticle " &_
		"INNER JOIN tblPrice ON tblArticle.articlenumber = tblPrice.articleNumber " &_
		"INNER JOIN tblSupplier ON tblPrice.articleSupplierId = tblSupplier.SupplierId " &_
		"LEFT OUTER JOIN tblDiscount ON tblPrice.articleCategoryNumber = tblDiscount.categoryNumber AND tblPrice.articleSupplierId = tblDiscount.supplierId " &_
		"LEFT OUTER JOIN tblCategory ON tblPrice.articleSupplierId = tblCategory.supplierId AND tblPrice.articleCategoryNumber = tblCategory.categoryNumber " &_
		"WHERE tblSupplier.supplierId = 1 " &_
		"ORDER BY tblArticle.articlenumber"
		
Set objRS = Server.Createobject("ADODB.Recordset")
objRS.Open sSQL, objConn, 1, 2

Do while not objRS.EOF
	
	sArticleNumber = GetFixedWidthString(objRS("articleNumber"), 10)
	sArticleName = GetFixedWidthString(objRS("articleName"), 55)
	dArticlePrice = GetFixedWidthString(cdbl(objRS("articlePrice")), 80)
	
	sLine = sArticleNumber & sArticleName & dArticlePrice
	tfile.WriteLine(sLine)
	
	objRS.Movenext 
Loop 

objRS.Close
Set objRS = Nothing

tfile.close
set tfile=nothing
set fsObj=nothing
%>
```

Tackar!

Mvh
Henrik

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

## #10 — emission, 2006-06-08T20:47Z

Perverskt! (y)

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

## #11 — Jesper T, 2006-06-08T20:52Z

OT: Kan du inte lägga din långa sql-sats i en stored procedure.
Det är lite väl mycket konkantenerande... ;)

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

## #12 — devotion, 2006-06-08T21:14Z

Jo, det kan jag... Jag har dock inte använt mig av SP innan, så någon måste visa.... :D  

Mvh
Henrik

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/147758-skapa-textfil-från-databas
