Just nu i M3-nätverket
Gå till innehåll
Roger W

Problem med decimaltecknet..

Rekommendera Poster

Postad (redigerade)

Jag har en Tab-avgränsad textdatabas i vilken jag lagrar 2 fält och 4 poster:

"opt" Text 20 tecken och

"value" decimaltal

Innehållet:

LeftMargin 6.2

TopMargin 4.5

LabelWidth 66.6

LebelHeight 24.5

 

 

Jag läser in den i en ASP-Vbscriptsida med kommandot..

Set cn1 = Server.CreateObject("ADODB.Connection")

cn1.Open "Driver={Microsoft Text Driver (*.txt;" _

& " *.csv)};dbq="&ServerPath&";Extensions=asc,csv,tab,txt;"

 

Jag har skapat en fil, "schema.ini" i vilken jag satt de parametrar som gäller för databasen:

[settings.txt]

ColNameHeader=True

Format=TabDelimited

MaxScanRows=0

Col1=opt Text Width 30

Col2=value double

DecimalSymbol=.

 

Så långt fungerar det perfekt. Läser in innehållet utan problem....

 

Men då var det decimaltecknet/decimalavgränsaren. Jag har en script jag hittat där ute som vill ha fyra decimaltal att jobba med. Tyvärr vägrar den acceptera decimaltalen med komma (,) som avgränsare. I min textdatabas har jag punkt som avgränsare, men då jag lägger upp de fyra värdena från databasen på skärmen byts punkten ut mot ett kommatecken OAVSETT vad jag gör TROTS att allt jag hittat om "Schema.ini" påstår att inställningarna häri går före de som finns i Windows (där kommatecknet alltså ÄR decimalavgränsare). Men i helsike heller.

 

Om jag har fältet "opt" som ett textfält fungerar det så långt att jag får upp mina värden (som text) med punkt som avgränsare, men konverterar jag därefter värdet till numeriskt blir det kommatecken.

 

Kort sagt: Hur bär jag mig åt för att BEHÅLLA punkten som decimalavgränsare?

 

Jag har W7 Pro i min dator med IIS 7,5. Tog en hel evighet att mecka till det så jag över huvud taget kunde köra Classic ASP i den, och problemet kan givetvis sitta här också istället för i koden.

 

Har någon något tips vore jag oändligt tacksam!

Redigerad av roger.waara@home.se

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Vad är det för script? JavaScript?

 

Generellt sett så kommer servern att formatera tal enligt sina regionala inställningar när du konverterar tal till strängar. Dvs du läser in talen som tal från din textfil och när de ska skrivas ut på skärmen konverterar datorn dem till strängar. Du måste ta kontroll över den konverteringen för att få till punkt som decimaltecken. Din settings fil har inget med detta att göra.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Postad (redigerade)

Vad är det för script? JavaScript?

 

Generellt sett så kommer servern att formatera tal enligt sina regionala inställningar när du konverterar tal till strängar. Dvs du läser in talen som tal från din textfil och när de ska skrivas ut på skärmen konverterar datorn dem till strängar. Du måste ta kontroll över den konverteringen för att få till punkt som decimaltecken. Din settings fil har inget med detta att göra.

 

 

Jag hittade följande på http://msdn.microsoft.com/en-us/library/ms709353%28VS.85%29.aspx:

If the values in the registry differ from the values in Schema.ini, the values in the registry will be overwritten by the values from Schema.ini. Därför trodde jag att det var så. Alltså: att .ini-filen overrides inställningarna i datorn..

 

 

ASP-Sidan är i gammal hederlig Vbscript. Ber om ursäkt för att jag glömde skriva det. MEN scriptet som skall ha indatat är en jscript.

Det jag trixar med är "FPDF", där jag kan skriva ut innehållet från en tabell till ett tre-kolumningt PDF-dokument man sedan skall kunna skriva ut på etiketter. Tricksandet med decimalerna är för att man (användaren) skall kunna ställa in marginalerna efter sina egna etiketter. Tre kolumner, dock..

Redigerad av Roger W

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Jag hittade följande på http://msdn.microsoft.com/en-us/library/ms709353%28VS.85%29.aspx:

If the values in the registry differ from the values in Schema.ini, the values in the registry will be overwritten by the values from Schema.ini. Därför trodde jag att det var så. Alltså: att .ini-filen overrides inställningarna i datorn..

Ja, .ini filen går före datorns inställningar, när du läser in databasen. Inte för alla andra operationer du kan göra i ASP.

 

ASP-Sidan är i gammal hederlig Vbscript. Ber om ursäkt för att jag glömde skriva det. MEN scriptet som skall ha indatat är en jscript.

Det jag trixar med är "FPDF", där jag kan skriva ut innehållet från en tabell till ett tre-kolumningt PDF-dokument man sedan skall kunna skriva ut på etiketter.

Det ska inte vara något problem att fixa detta med VBScript. Men som sagt måste du ta kontroll över konverteringen mellan tal och sträng.

Nu var det en massa år sedan jag jobbade med ASP, men jag tror att funktionen FormatNumber är en kandidat här.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Postad (redigerade)
[..] jag tror att funktionen FormatNumber är en kandidat här.

Eller så gör du en replace på textsträngen innan du skickar den till webbläsaren/javascript.
strValue = "1,2345"
strNewValue = Replace(strValue, ",", ".")

'Kolla resultat: 			 	'
Response.Write "strValue: "&strValue &"<br>"
Response.Write "strNewValue : "&strNewValue

Redigerad av Cluster
Lagt till exempelkod

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Nackdelen med Replace är att om tusentalsavgränsaren är satt till punkt så får man två punkter i strängen efter Replace. Ja, det funkar förmodligen i detta fallet eftersom svenska inställningar (som jag gissar att detta är) har mellanslag som tusentalsavgränsare för vanliga tal. Om du däremot planerar att lägga sidan på en server med amerikanska inställningar så finns risken för problem igen, eftersom de använder punkt som decimal och komma som tusentalsavgränsare.

 

Jag tycker att det är bättre att lära sig rätt sätt att hantera decimaler från början så man inte lockas att återanvända denna lösning på ställen där den inte passar. Jag har sett alldeles för många exempel där utvecklare har snärjt in sig i att hantera decimalerna manuellt helt i onödan. Det finns vettiga funktioner för konvertering av tal där du talar om vad du har eller vill ha och får en entydig lösning som funkar.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
[...]Jag tycker att det är bättre att lära sig rätt sätt att hantera decimaler från början så man inte lockas att återanvända denna lösning på ställen där den inte passar. [...]
Håller fullkomligt med!

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Postad (redigerade)

Eller så gör du en replace på textsträngen innan du skickar den till webbläsaren/javascript.

strValue = "1,2345"
strNewValue = Replace(strValue, ",", ".")

'Kolla resultat: 			 	'
Response.Write "strValue: "&strValue &"<br>"
Response.Write "strNewValue : "&strNewValue

 

 

En evig rundgång. Jodå, jag har mixtrat med Replace, och det fungerar då decimaltalet är en sträng. Då jag Cdbl strängen ramlar kommat in där igen. Klockrent och punktligt, och då hamnar jag på ruta 1 igen.

Och, som jag skrev, FPDF-jscript-lösningen accepterar inte textsträngar. Den vill ha ett tal MED en punkt som decimalavskiljare.

 

FormatNumber har jag också testat.

FormatNumber(Expression[,NumDigAfterDec[,

IncLeadingDig[,UseParForNegNum[,GroupDig]]]])

 

Går, såvitt jag kan se, inte att ändra decimalavskiljaren med den funktionen. Man kan gruppera tal, ställa in antal decimaler, leading zero och sådant, men kommat når man inte med den. Och då vet jag inte hur man skall "ta kommandot" över decimalerna längre..

 

Ej eländig soppa, det här. Och jag saknar kunskap att tweaka i jscriptet.

 

R

Redigerad av Roger W

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Postad (redigerade)

Körs javascriptet serverside?

Annars måste det väl ändå gå bra med en textsträng?

 

Nåja, du kan ju även bestämma vilket Locale ID som skriptet skall använda.

Se:

http://msdn.microsoft.com/en-us/library/ms525071%28VS.90%29.aspx

och

http://msdn.microsoft.com/en-us/goglobal/bb964664.aspx

 

Jo, jag har tittat på locale på några webbsidor. Men på rad efter rad stod det "Works only with MSIE", och sådana lösningar gör jag inte.(http://www.w3schools.com/vbscript/func_setlocale.asp)

Men jag skall kolla igenom dina länktips. Tac för dem, förresten ;)!

Redigerad av Roger W

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Postad (redigerade)
Och, som jag skrev, FPDF-jscript-lösningen accepterar inte textsträngar. Den vill ha ett tal MED en punkt som decimalavskiljare.

Jag tror att du gör en tankevurpa här. Ett numerisk typ sparas inte i minnet med punkt eller komma. En float eller double sparas som ett heltal och position för decimaltecknet. Själva decimaltecknet, punkt eller komma, kommer till när talet görs om till en sträng.

 

Om scriptet accepterar en numerisk typ som input så spelar inte decimaltecknet någon roll. Blir det ändå fel måste det bero på buggar i scriptet.

 

Det är möjligt att jag var på fel funktion för att styra decimaltecknet, men det finns en funktion som tillåter dig att göra det. Du får väl leta lite i hjälpen.

Redigerad av gip

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Jo, jag har tittat på locale på några webbsidor. Men på rad efter rad stod det "Works only with MSIE", och sådana lösningar gör jag inte.(http://www.w3schools.com/vbscript/func_setlocale.asp)

Men jag skall kolla igenom dina länktips. Tac för dem, förresten ;)!

 

SetLocale(2057) fixade alla problem i Mozilla, men MSIE vägrar byta ut kommateckenen mot punkter trots att locale nu är 2057 (Engelsk). Alltså precis tvärt emot mot vad w3schools.com skrev. Så, från att HA fungerat i MSIE och inte i Mozilla är det numera tvärt om..

Man kan bli tokig för mindre, alltså.

In i dimman igen.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

SetLocale(2057) fixade alla problem i Mozilla, men MSIE vägrar byta ut kommateckenen mot punkter trots att locale nu är 2057 (Engelsk). [...]

Ok, men har du testat Session.LCID (istället för SetLocale) ?

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Postad (redigerade)

Ok, men har du testat Session.LCID (istället för SetLocale) ?

 

Jo. Session.LCID ger samma resultat:

Scenario: Avsändande formulär skickar över ett decimalvärde till mottagande formulär. Värdet i avsändande form har jag plockat från den "textdatabas" jag började med. I mottagande formulär konverterar jag fältet med kommandot..

leftm = Cdbl(request.form("LeftMargin")) och lägger ut det på skärmen med <%=leftm%>

 

 

Mozilla:

4.44 i avsändande formulär fortsätter att vara 4.44 då det kommer fram till mottagande formulär. Allt fungerar som det skall.

 

MSIE

4.44 i avsändande formulär förvandlas till 444 i mottagande formulär. Ingenting fungerar som tänkt.

Redigerad av Roger W

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Postad (redigerade)

Varför måste du göra om det till en double?

Posta en (utöver just detta problem) fungerande nedkokad kod som visar det du försöker göra.

Redigerad av Cluster

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Postad (redigerade)

Varför måste du göra om det till en double?

Posta en (utöver just detta problem) fungerande nedkokad kod som visar det du försöker göra.

 

Jo. Jag måste göra om den till något annat än text för att min jscript skall acceptera siffrorna.Double verkar fixa decimalerna... i alla fall i Firefox.

 

Ok. Avsändande sida:

<%Session.LCID=2057%>
<% Do While Not fran_textfilen.EOF
if fran_textfilen("opt") = "LeftMargin" then
LeftMargin=fran_textfilen("value")
end if
if fran_textfilen("opt") = "TopMargin" then
	TopMargin=fran_textfilen("value")
end if
if fran_textfilen("opt") = "LabelWidth" then
LabelWidth=fran_textfilen("value")
end if
if fran_textfilen("opt") = "LabelHeight" then
	LabelHeight=fran_textfilen("value")
end if
fran_textfilen.MoveNext
loop%>

<form action="printlabels.asp" method="POST" enctype="application/x-www-form-urlencoded">
LeftMargin=<INPUT Type="Text" Name="LeftMargin" Value="<%=LeftMargin%>"><br>
TopMargin=<INPUT Type="Text" Name="TopMargin" Value="<%=TopMargin%>"><br>
LabelWidth= <INPUT Type="Text" Name="LabelWidth" Value="<%=LabelWidth%>">
LabelHeight= <INPUT Type="Text" Name="LabelHeight" Value="<%=LabelHeight%>"><br><br>
Nämnd:
<select name="valjnamnd">
<% Do While NOT Nlist.EOF %>
	<Option value="<%= Nlist("NämndStyrelse") %>"><%= Nlist("NämndStyrelse") %></option>
<%Nlist.MoveNext
loop%>
</select<br>
<INPUT Type="Submit" Name="Printlabelok" Value="Jepp">
</FORM>
[/font]

Mottagande sida (printlabels.asp). Denna sida får värden via de överskickade variablerna valjnamnd, LeftMargin, TopMargin och LabelWidth

LabelHeight

<%
Session.LCID=2057

' Databaskoppling bortklippt
'

Set DetailStyrelse = OBJdbConnection.Execute(SQLQuery)

leftm = Cdbl(request.form("LeftMargin"))
topm = Cdbl(request.form("TopMargin"))
widthl = Cdbl(request.form("LabelWidth"))
heightl = Cdbl(request.form("LabelHeight"))
%>
<%=qsnamnd%><br>
<%=leftm%><br>
<%=topm%><br>
<%=widthl%><br>
<%=heightl%><br>

Det är variablerna leftm, topm, widthl och heightl i mottagande form som MSIE och Mozilla behandlar olika. Med Firefox (V 3.6.3)får jag korrekta värden med punkt som decimalavgränsare, och i MSIE (v 8)försvinner punkten, så att "4.44" blir 444.

Redigerad av Cluster
Moderator har lagt till KOD-taggar

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Jo. Jag måste göra om den till något annat än text för att min jscript skall acceptera siffrorna. Double verkar fixa decimalerna... i alla fall i Firefox.
Mycket svårt att testa fullt ut utan javascriptet men visst tusan ger både Response.LCID = 1033 och Session.LCID = 1033 komma som avgänsare vid utskrift/omvandling till textsträng.

Testa detta får du se:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
Response.LCID = 1033

LeftMargin = 6.2
TopMargin = 4.5
LabelWidth = 66.6
LabelHeight = 24.5
%>
<p>
<strong>Original</strong><br>
<% = LeftMargin %><br>
<% = TopMargin %><br>
<% = LabelWidth %><br>
<% = LabelHeight %>
</p>
<p>
<strong>cDbl</strong><br>
<% = cDbl(LeftMargin) %><br>
<% = cDbl(TopMargin) %><br>
<% = cDbl(LabelWidth) %><br>
<% = cDbl(LabelHeight) %>
</p>
<p>
<strong>cStr</strong><br>
<% = cStr(LeftMargin) %><br>
<% = cStr(TopMargin) %><br>
<% = cStr(LabelWidth) %><br>
<% = cStr(LabelHeight) %>
</p>

Byt sedan Response.LCID = 1033 mot Response.LCID = 1053

för svensk lokalisering och se skillnaden.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Postad (redigerade)

Mycket svårt att testa fullt ut utan javascriptet men visst tusan ger både Response.LCID = 1033 och Session.LCID = 1033 komma som avgänsare vid utskrift/omvandling till textsträng.

Testa detta får du se:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
Response.LCID = 1033

LeftMargin = 6.2
TopMargin = 4.5
LabelWidth = 66.6
LabelHeight = 24.5
%>
<p>
<strong>Original</strong><br>
<% = LeftMargin %><br>
<% = TopMargin %><br>
<% = LabelWidth %><br>
<% = LabelHeight %>
</p>
<p>
<strong>cDbl</strong><br>
<% = cDbl(LeftMargin) %><br>
<% = cDbl(TopMargin) %><br>
<% = cDbl(LabelWidth) %><br>
<% = cDbl(LabelHeight) %>
</p>
<p>
<strong>cStr</strong><br>
<% = cStr(LeftMargin) %><br>
<% = cStr(TopMargin) %><br>
<% = cStr(LabelWidth) %><br>
<% = cStr(LabelHeight) %>
</p>

Byt sedan Response.LCID = 1033 mot Response.LCID = 1053

för svensk lokalisering och se skillnaden.

 

 

Jag har testat att hårdkoda in decimalvärdena med punkt som dec-avgränsare. Då fungerar det helt perfekt i bägge webbläsarna. Det är när värden kommer från föregående sida det sk****r sig i MSIE som visar 4.44 som 444. Decimalpunkten bara försvinner.

ALLTSÅ: Jag vill behålla punkten som decimalavgränsare för att jscript-subben skall fungera. Den skriker högt då den får decimalvärden med kommatecken som avgränsare.

Redigerad av Roger W

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Har testat ovanstående kod fast med att ta emot värden från formulär från en annan sida och det fungerar lika bra då...

Utan att se mer av din kod är det omöjligt att säga vad som går fel :(

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Postad (redigerade)

Har testat ovanstående kod fast med att ta emot värden från formulär från en annan sida och det fungerar lika bra då...

Utan att se mer av din kod är det omöjligt att säga vad som går fel :(

 

You asked for it ;):

Avsändande formulär:

<%@language=vbscript%>

<% Dim ServerPath
ServerPath =Server.MapPath(".") %>

<% Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open "Tromandata"
SQLQuery = "SELECT Distinct NämndStyrelse from TabNämndStyrelse"
Set Nlist = OBJdbConnection.Execute(SQLQuery)
%>

<!--- Hämta in etikettmarginaler och storlekar --->
<%
' TEXT-kopplet
Set cn1 = Server.CreateObject("ADODB.Connection")
cn1.Open "Driver={Microsoft Text Driver (*.txt;" _
& " *.csv)};dbq="&ServerPath&";Extensions=asc,csv,tab,txt;"
'Textfrågan
startqry= "Select * From label_settings_DO_NOT_EDIT.txt"
Set fran_textfilen=cn1.Execute(startqry) %>


<%Session.LCID=2057%>
<%=GetLocale%>

<!--- SLUT Hämta in etikettmarginaler och storlekar --->
<% Do While Not fran_textfilen.EOF
if fran_textfilen("opt") = "LeftMargin" then
LeftMargin=fran_textfilen("value")
end if
if fran_textfilen("opt") = "TopMargin" then
TopMargin=fran_textfilen("value")
end if
if fran_textfilen("opt") = "LabelWidth" then
LabelWidth=fran_textfilen("value")
end if
if fran_textfilen("opt") = "LabelHeight" then
LabelHeight=fran_textfilen("value")
end if
fran_textfilen.MoveNext
loop%>

<form action="printlabels.asp" method="POST" enctype="application/x-www-form-urlencoded">
LeftMargin=<INPUT Type="Text" Name="LeftMargin" Value="<%=LeftMargin%>"><br>
TopMargin=<INPUT Type="Text" Name="TopMargin" Value="<%=TopMargin%>"><br>
LabelWidth= <INPUT Type="Text" Name="LabelWidth" Value="<%=LabelWidth%>">
LabelHeight= <INPUT Type="Text" Name="LabelHeight" Value="<%=LabelHeight%>"><br><br>
Nämnd:
<select name="valjnamnd">
<% Do While NOT Nlist.EOF %>
<Option value="<%= Nlist("NämndStyrelse") %>"><%= Nlist("NämndStyrelse") %></option>
<%Nlist.MoveNext
loop%>
</select<br>
<INPUT Type="Submit" Name="Printlabelok" Value="Jepp">
</FORM>

 

Mottagande formulär:

<%@language = vbscript%>
<%
'qsnamnd="Activa"
%>

<!--#include file="fpdf.asp"-->
<%
Session.LCID=2057
%>
<%
qsnamnd=request.form("valjnamnd")
Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open "Tromandata"
SQLQuery = "SELECT Datum, Lokal, MöteFromTom as Tid From tabMöte Where NämndStyrelse = '" & qsNamnd & "' And Offentligt= -1 AND Datum > "& "#" & now &"#"& " Order by Datum ASC"
Set MeetStyrelse = OBJdbConnection.Execute(SQLQuery)
SQLQuery = "Select tabPerson.Internetadress,tabPerson.InternetTel,tabperson.EjInternetHistorik, tabPerson.email,tabPerson.Adressbost,tabPerson.Telbost,tabPerson.titel,tabPerson.valkrets,tabPerson.PostNrBost,tabPerson.URLFoto,tabPerson.Passiv,tabPerson.Inr as p_inr, tabPerson.Efternamn, tabPerson.förnamn as fornamn, tabPerson.parti,tabUppdrag.Inr as uppdr_inr,tabUppdrag.Uppdragstyp, tabUppdrag.Ordningsnr,TabNämndStyrelse.NämndStyrelse As NamndStyrelse,TabNämndStyrelse.EmailNS As EmailNS,TabNämndStyrelse.NamnNämndStyrelse As NamnNamndStyrelse,tabPerson.PostortBost as postort,TabNämndStyrelse.Kommentar,TabNämndStyrelse.MandatPerFrom,TabNämndStyrelse.MandatPerTom, TabNämndStyrelse.UrlNS, tabPerson.URLPerson as URLperson "
SQLQuery = SQLQuery & "from tabPerson, tabUppdrag,TabNämndStyrelse Where Tabperson.EjInternet=0 And TabUppdrag.NämndStyrelse = TabNämndStyrelse.NämndStyrelse AND tabPerson.Inr = tabUppdrag.Inr AND TabNämndStyrelse.NämndStyrelse = " & "'"& qsNamnd & "' AND tabPerson.passiv = 0 Order by "
SQLQuery = SQLQuery & "tabPerson.Efternamn ASC"
Set DetailStyrelse = OBJdbConnection.Execute(SQLQuery)
%>

<%
'leftm = 5.4
'topm = 12.1
'widthl = 66.6
'heightl = 25.2

leftm = Cdbl(request.form("LeftMargin"))
topm = Cdbl(request.form("TopMargin"))
widthl = Cdbl(request.form("LabelWidth"))
heightl = Cdbl(request.form("LabelHeight"))
%>

<%=qsnamnd%><br>
<%=leftm%><br>
<%=topm%><br>
<%=widthl%><br>
<%=heightl%><br>

<%Set pdf = CreateJsObject("FPDF")
pdf.CreatePDF "P","mm","a4"
pdf.Open()
pdf.AddPage()
pdf.SetFont "Arial","B",10
pdf.SetMargins 0,0
pdf.SetAutoPageBreak(0)
x = 0
y = 0
' Skriv ut första etiketten med namn på vilken styrelse som skrivs ut
LabelText = "Ledamöter i" & laaa & chr(10) & qsnamnd
LeftMargin = leftm
TopMargin = topm 
LabelWidth = widthl
LabelHeight = heightl 
' Create Co-Ords of Upper left of the Label
AbsX = LeftMargin + ((LabelWidth + 4.22) * x)
AbsY = TopMargin + (LabelHeight * y)
pdf.SetXY AbsX+3,AbsY+3
pdf.MultiCell LabelWidth-8,4.5,LabelText,0,L
x = 1
' LOOP:a upp queryn
Do While NOT Detailstyrelse.EOF
' Make label text

LabelText = DetailStyrelse("fornamn")&" "& DetailStyrelse("Efternamn") & chr(10) & DetailStyrelse("adressbost") & chr(10) & Detailstyrelse("PostNrBost") &" " & Detailstyrelse("Postort")
LeftMargin = leftm
TopMargin = topm 
LabelWidth = widthl
LabelHeight = heightl 
' Create Co-Ords of Upper left of the Label
AbsX = LeftMargin + ((LabelWidth + 4.22) * x)
AbsY = TopMargin + (LabelHeight * y)
pdf.SetXY AbsX+3,AbsY+3
pdf.MultiCell LabelWidth-8,4.5,LabelText,0,L
x=x+1
if (x=3) then
	y=y+1
	x = 0
	if (y = 10) then
	x = 0
	y = 0
	pdf.AddPage()
	end if
end if
Detailstyrelse.MoveNext
Loop
pdf.Output()
Set pdf = Nothing
Session.LCID=1053
%> 

Redigerad av Cluster
Moderator har lagt till KOD-taggar

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Ok, ska kolla på det. Blir nog inte ikväll dock.

 

Se till att använda kod-taggar när du klistrar in kodstycken (jag har fixat det åt dig i dina två senaste inlägg).

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Ok, ska kolla på det. Blir nog inte ikväll dock.

 

Se till att använda kod-taggar när du klistrar in kodstycken (jag har fixat det åt dig i dina två senaste inlägg).

 

Jag markerade texten och klickade på [Fler stilar] och

. Kanske borde jag valt HTML-code.

Nåväl. Bussigt att du bryr dig. Har aldrig bökat med decimaler och sån't :)

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Var hittar man FPDF i JScript variant? Är det ett server side script?

 

När du säger att du har provat att hårdkoda värdena, har du då provat att lägga in dem i följande del av din kod, eller var har du lagt in dem? Kan du ge ett exempel på hur du gjort för att få det att funka hårdkodat?

 

leftm = Cdbl(request.form("LeftMargin"))
topm = Cdbl(request.form("TopMargin"))
widthl = Cdbl(request.form("LabelWidth"))
heightl = Cdbl(request.form("LabelHeight"))

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Var hittar man FPDF i JScript variant? Är det ett server side script?

 

När du säger att du har provat att hårdkoda värdena, har du då provat att lägga in dem i följande del av din kod, eller var har du lagt in dem? Kan du ge ett exempel på hur du gjort för att få det att funka hårdkodat?

 

leftm = Cdbl(request.form("LeftMargin"))
topm = Cdbl(request.form("TopMargin"))
widthl = Cdbl(request.form("LabelWidth"))
heightl = Cdbl(request.form("LabelHeight"))

 

 

Jo, FPDF är en server side script. Jag kör den (än så länge)på min W7 Pro med IIS 7.5. Tänkte skicka med includefilen (FPDF.ASP) som bilaga till denna posting, men det går inte..

 

Hårkoda:

 

Jag har gjort såhär:

<%
Session.LCID=2057
leftm = 5.4
topm = 12.1
widthl = 66.6
heightl = 25.2
%>


<%Set pdf = CreateJsObject("FPDF")
pdf.CreatePDF "P","mm","a4"
pdf.Open()
pdf.AddPage()
pdf.SetFont "Arial","B",10
pdf.SetMargins 0,0
pdf.SetAutoPageBreak(0)
x = 0
y = 0
' Skriv ut första etiketten med namn på vilken styrelse som skrivs ut
LabelText =  "Ledamöter i" & laaa & chr(10) & qsnamnd 
LeftMargin = leftm
TopMargin =  topm	
LabelWidth =  widthl 
LabelHeight =  heightl	

 

och då fungerar det alldeles utmärkt i både MSIE och Firefox.

 

Skickar jag in decimaltal med kommaseparator får jag felmeddelandet

Kompileringsfel i Microsoft VBScript error '800a0401'

 

Slut på programsats förväntas.

 

/printlabels.asp, line 51

 

LeftMargin = 5,1

--------------^

 

Tar jag hand om det som kom från FORM:en från föregående sida direkt:

leftm = Cdbl(request.form("LeftMargin"))
topm = Cdbl(request.form("TopMargin"))
widthl = Cdbl(request.form("LabelWidth"))
heightl = Cdbl(request.form("LabelHeight"))
%>
<%Set pdf = CreateJsObject("FPDF")
pdf.CreatePDF "P","mm","a4"
pdf.Open()
pdf.AddPage()
pdf.SetFont "Arial","B",10
pdf.SetMargins 0,0
pdf.SetAutoPageBreak(0)
x = 0
y = 0
' Skriv ut första etiketten med namn på vilken styrelse som skrivs ut
LabelText =  "Ledamöter i" & laaa & chr(10) & qsnamnd 
LeftMargin = leftm
TopMargin =  topm	
LabelWidth =  widthl 
LabelHeight =  heightl	
' Create Co-Ords of Upper left of the Label
AbsX = LeftMargin + ((LabelWidth + 4.22) * x)
AbsY = TopMargin + (LabelHeight * y)
pdf.SetXY AbsX+3,AbsY+3
pdf.MultiCell LabelWidth-8,4.5,LabelText,0,L
x = 1
' LOOP:a 

..fungerar det bara i Firefox.

 

Om jag tittar på variblerna ser jag att

leftm = Cdbl(request.form("LeftMargin"))
topm = Cdbl(request.form("TopMargin"))
widthl = Cdbl(request.form("LabelWidth"))
heightl = Cdbl(request.form("LabelHeight"))
%>

<%=qsnamnd%><br>
<%=leftm%><br>
<%=topm%><br>
<%=widthl%><br>
<%=heightl%><br>

 

...Firefox behåller punkten som decimalavgränsare medan MSIE 8 tar bort dem. 4.44 blir alltså 444 i MSIE.

 

Hoppas jag fått med allting nu..

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...