---
title: "Skriva till databas"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/156380-skriva-till-databas"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "devotion"
published: "2007-01-24T17:34:52.000Z"
updated: "2007-01-25T18:14:20.000Z"
replies: 4
views: 423
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/dotnet/156380-skriva-till-databas"
---

# Skriva till databas

## #1 — devotion, 2007-01-24T17:34Z

Hej!
Jag har ett halvfärdigt script, som jag undrar om någon kan hjälpa mig med...

Det är en html-fil som innehåller vbscript. Filen i sig används i en windowsapplikation...

Allt fungerar, jag vill bara ha hjälp med att skriva till databasen..  :)  .

Hade det varit en asp-fil hade jag klarat det... Men nu när det är vbscript, vet jag inte riktigt hur jag ska göra....

Här kommer iaf koden:

```
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Registrera materialrader</title>
<link rel='stylesheet' href='././form.css' type='text/css'>
</head>

<%
	'*********************************
	'*********************************
	function InsertPriceListOptions()
		Dim objConn, objRS, sSQL
		dim s, sName, sPriceListNr, n
		
		Set objConn = CreateObject("ADODB.Connection")
		objConn.Open Application.sDbConnectionString
		Set objRs = CreateObject("ADODB.Recordset")
		
		sSQL = "SELECT * FROM [tblPricelist] WHERE [Nr] In('01','02','03','07','11') ORDER BY [Name]"
		objRS.Open sSQL, objConn
		
		s=""
		while not ObjRS.EOF
			sName=objRs("Name")
			n=InStr(sName, " (")
			if n>0 then sName = Left(sName, n-1)
			
			sPriceListNr = objRS("Nr")
			s = s & "<option value='" & sPriceListNr & "'>" & sName & "</option>" 
			objRS.Movenext
		wend

		objRS.Close
		Set objRS = Nothing
		objConn.Close
		Set objConn = Nothing

		InsertPriceListOptions=s
	end function

	'*********************************
	'*********************************
	function InsertMaterialRows()
		dim i, s
		
		s=""
		for i = 1 to 10
			s = s & "<tr>"
			s = s & "<td><label>Artikelnummer: <input name='article" & i & "' onkeyup='OnValidateArtNr(" & i & ")'></label></td>"

			s = s & "<td><label>Antal: "
			s = s & "<select name='amount" & i & "' id='amount" & i & "'>"
				for j = 1 to 100
					s = s & "<option value='" & j & "'>" & j & "</option>" & vbCrLf
				next
			s = s & "</select>"
			s = s & "</label></td>"

			s = s & "<td><label>Enhet: "
			s = s & "<select name='unit" & i & "'>"
				s = s & "<option value='st'>styck</option>"
				s = s & "<option value='m'>meter</option>"
			s = s & "</select>&nbsp;&nbsp;</td>"
			s = s & "<td><label id='artname" & i & "'>(ingen artikel vald)</label></td>"
			s = s & "</tr>"
		Next

		InsertMaterialRows = s
	end function
%>

<SCRIPT language='vbscript'>
	'*********************************
	' KOPIERAD FRÅN UN_GLOBAL.VBS:
	' Return a value from an SQL SELECT query to Uppdrag NU db
	'*********************************
	function GetUNValue(sSQL)
		dim Conn, Rs
		Set Conn=CreateObject("ADODB.Connection")
		Conn.Open "<% =Application.sDbConnectionString %>"
		Set Rs=CreateObject("ADODB.Recordset")
		Rs.Open sSQL, Conn
		if Rs.EOF then
			GetUNValue=""
		else
			GetUNValue=Rs.Fields(0)
		end If
		Rs.Close
		Set Rs=Nothing
		Set Conn=Nothing
	end function

	'*********************************
	'*********************************
	sub OnValidateArtNr(nIndex)
		dim sArtNr, sArtName
		dim sPLNr, sSupplierPrice

		sArtNr=document.all.item("article" & nIndex).value
		if sArtNr="" then 
			document.all.item("artname" & nIndex).innerHtml="(ingen artikel vald)"
			exit sub
		end if

		sArtName=GetUNValue("SELECT [Name] FROM [tblArticle] WHERE [Nr]='" & sArtNr & "'")
		sUnit=GetUNValue("SELECT [Unit] FROM [tblArticle] WHERE [Nr]='" & sArtNr & "'")
		if sArtName="" then 
			document.all.item("artname" & nIndex).innerHtml="<font color='#ff0000'>(felaktigt artikelnr)</font>"
		else
			sPLNr=document.all.item("supplier").value
			sSupplierPrice=GetUNValue("SELECT [Price] FROM [tblPrice] WHERE [PriceListNr]='" & sPLNr & "' AND [ArtNr]='" & sArtNr & "' AND [Type]=4 AND [FromAmount]=0")
			if sSupplierPrice="" then
				document.all.item("artname" & nIndex).innerHtml="<font color='#ff0000'>(artikeln finns ej hos vald leverantör)</font>"
			else
				document.all.item("artname" & nIndex).innerHtml=sArtName
				document.all.item("unit" & nIndex).value=sUnit
			end if
		end if
	end sub
	
	'*********************************
	'*********************************
	sub OnSave()
		dim i
		dim sArtNr, sAtrName, fAmount, sUnit, sPLNr, fPrice
		dim s
		dim CrLf : CrLf = Chr(13) & Chr(10)
	
		sPLNr=document.all.item("supplier").value

		s=""
		for i=1 to 10
			sArtNr=document.all.item("article" & i).value
			sArtName=document.all.item("artname" & i).innerhtml
			fAmount=document.all.item("amount" & i).value
			sUnit=document.all.item("unit" & i).value
			if sArtNr<>"" and lcase(Left(sArtName, 5))<>"<font" then
				fPrice=GetUNValue("SELECT TOP 1 [Price] FROM [tblPrice] WHERE [Type]=4 AND [PriceListNr]='" & sPLNr & "' AND [ArtNr]='" & sArtNr & "' AND [FromAmount]<=" & fAmount & "ORDER BY [FromAmount] DESC")
				if not IsNumeric(fPrice) then fPrice=0
				s = s & fAmount & " " & sUnit & " av artikelnr " & sArtNr & ", pris " & fPrice & " kr" & Chr(13) & Chr(10)
			end if
		next
		if s<>"" then
			r=MsgBox("Följande materialrader kommer att registreras: " & CrLf & CrLf & s , 1, "Skapa materialrader")
			if r<>1 then exit sub
		else
			call MsgBox("Det finns inga godkända materialrader som kan skapas.", 0, "Fel")
		end if
	end sub
</SCRIPT>

<body bgcolor='#<COLOR_3DFACE>'>

<h1>Registrera materialrader för uppdrag: <% =GetUNValue("SELECT [TaskNr] FROM [tblTask] WHERE [Id]=<TaskId>") %></h1>

<form name='myform' action="javascript:OnSave()" method="post">

<label>Välj leverantör: 
<select name='supplier'><% =InsertPriceListOptions() %></select>
</label>
<p>
<table border='0'>
<% =InsertMaterialRows() %>
</table>
<input name="addArticles" type="submit" value="Lägg till">
</form>
</body>
</html>
```

Mvh
Henrik

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

## #2 — Peter S, 2007-01-24T17:47Z

Vad är det som skall skrivas till db:n (inkl. tabell- och kolumnnamn)?

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

## #3 — devotion, 2007-01-24T18:38Z

Hepp!  :)  

tabellen heter:

> tblMaterial
> \*TaskId  (variabel: \<TaskId\> rad 166 Detta är en specialare som windowsapplikationen skapar)
> \*ArtNr (variabel: sArtNr)
> \*ArtName (variabel: sArtName)
> \*Amount (variabel: fAmount)
> \*Unit (variabel: sUnit)
> \*PricelistNr (variabel: sPLNR)
> \*Price (variabel: fPrice)

Mvh
Henrik

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

## #4 — Peter S, 2007-01-24T20:38Z

Det bör väl kunna se ut som så här då:

```
s=""
strValues = ""
for i=1 to 10
  sArtNr=document.all.item("article" & i).value
  sArtName=document.all.item("artname" & i).innerhtml
  fAmount=document.all.item("amount" & i).value
  sUnit=document.all.item("unit" & i).value
  if sArtNr<>"" and lcase(Left(sArtName, 5))<>"<font" then
    fPrice=GetUNValue("SELECT TOP 1 [Price] FROM [tblPrice] WHERE [Type]=4 AND [PriceListNr]='" & sPLNr & "' AND [ArtNr]='" & sArtNr & "' AND [FromAmount]<=" & fAmount & "ORDER BY [FromAmount] DESC")
    if not IsNumeric(fPrice) then fPrice=0
    s = s & fAmount & " " & sUnit & " av artikelnr " & sArtNr & ", pris " & fPrice & " kr" & Chr(13) & Chr(10)
    [red]strValues = strValues & "(<TaskId>,'"&sArtnr&"','"&sArtName&"',"&fAmount&",'"&sUnit&"','"&sPLNr&"',"&fPrice&"),"[/red]
  end if
next
strValues = left(strValues,len(strValues)-1)
if s<>"" then
  r=MsgBox("Följande materialrader kommer att registreras: " & CrLf & CrLf & s , 1, "Skapa materialrader")
  if r<>1 then exit sub
  set conn = createobject("adodb.connection")
  conn.open Application.sDbConnectionString
  sql = "insert into tblMaterial (taskid,artnr,artname,amount,unit,pricelistnr,price) " &_
      "values " & strValues
  conn.execute(sql)
  conn.close
  set conn = nothing
else
```

Den rad som är rödmarkerad kanske måste ses över, men det märker du  ;)

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

## #5 — devotion, 2007-01-25T18:14Z

Men weee..  :) såg inte detta förrän idag...

Ska se om jag hinner testa i kväll..  :)   

//Henrik

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/156380-skriva-till-databas
