Frågan#1
Hej!
Jag har följande script på en html-sida:
<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
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
' MsgBox "Artikeln '" & sArtNr & "' finns inte."
document.all.item("artname" & nIndex).innerHtml="<font color='#ff0000'>(felaktigt artikelnr)</font>"
else
document.all.item("artname" & nIndex).innerHtml=sArtName
document.all.item("unit" & nIndex).value=sUnit
end if
end sub
sub OnSave()
dim i
dim sArtNr, fAmount, sUnit, sPLNr, fPrice
dim s
sPLNr=document.all.item("supplier").value
s=""
for i=1 to 10
sArtNr=document.all.item("article" & i).value
fAmount=document.all.item("amount" & i).value
sUnit=document.all.item("unit" & i).value
if sArtNr<>"" 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 & "Lägg till " & fAmount & " " & sUnit & " av artikelnr " & sArtNr & ", pris " & fPrice & " kr" & Chr(13) & Chr(10)
end if
next
MsgBox s
end sub
</SCRIPT>
Den övriga koden på sidan ser ut så här:
<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:
<%
Dim objConn, objRS, sSQL
Set objConn = CreateObject( "ADODB.Connection" )
objConn.Open Application.sDbConnectionString
Set objRs = CreateObject( "ADODB.Recordset" )
sSQL = "SELECT * FROM tblPricelist ORDER BY [Name]"
Set objRS = objConn.Execute (sSQL)
Response.write "<select name=""supplier"">"
while not ObjRS.EOF
sName = objRS("Name")
sPriceListNr = objRS("Nr")
Response.write "<option value=" & sPriceListNr & ">" & sName & "</option>"
objRS.Movenext
wend
Response.write "</select>"
objRS.Close
Set objRS = Nothing
Response.write "</label>"
Response.write "<p>"
for i = 1 to 10
Response.write "<label>Artikelnummer: <input name=""article" & i & """ onblur='OnValidateArtNr(" & i & ")'></label>"
Response.write "<label>Antal: "
Response.Write "<select name=""amount" & i & """ id=""amount" & i & """>"
for i2 = 1 to 100
Response.Write "<option value=""" & i2 & """ "
Response.Write ">" & i2 & "</option>" & vbCrLf
next
Response.write "</select>"
Response.write "</label>"
Response.write "<label>Enhet: "
Response.write "<select name=""unit" & i & """>"
Response.write "<option value=""st"">styck</option>"
Response.write "<option value=""m"">meter</option>"
Response.write "</select>"
Response.Write " <label id='artname" & i & "'>(ingen artikel vald)</label>"
Response.write "<p>"
Next
%>
<input name="addArticles" type="submit" value="Lägg till">
</form>
<%
objConn.Close
Set objConn = Nothing
%>
</body>
Det fungerar som så att när man lämnar textfältet så slås artikeln upp i databasen. Se bifogad bild. Kan man göra så att sökningen börjar direkt när man börjar skriva?
Så när inget text skrivits står det "Ingen artikel vald"
När man skrivit ett felaktigt nummer visas "Felaktigt artikelnummer"
När man till slut kommer till ett nummer som finns i databasen visas benämningen. Det kan väl liknas AJAX...
Mvh
Henrik

