Hej på er, Hej. Sorry.. ;) Lite stressad.. ;) Problemet är inte uppenbart eftersom det inte genereras någon somhelst fel.. ;) Den loopar inte ut någonting.. Helt tomt.. Precis som om den inte ens kör loopen.. ;) >> Jag skulle nog arbetat med en tvådimensionell array i stället för tio-talet endimensionella. << LÖSNING:Ett skumt problem (innehåller mycket kod). [LÖST] ( SE SISTA
har ett skumt problem som jag verkligen inte har någon aning om vad som är felet, men som vanligt är det alldeles säkert något enkelt ;)
Tips på hur Stored Proceduren kan göras annorlunda är även välkommet.
Iallafall, här kommer kod (det blir mycket). Värdena finns i databasen, alla invärden existerar osv.
Stored Procedure:
<code>
CREATE PROCEDURE Sp_InkopInfo
@RowNo Int,
@AccountNo varChar(10)
AS
IF (@RowNo = '0')
BEGIN
SET NOCOUNT ON
SELECT ROWNUMBER, PURCHASENUMBER, ITEMNUMBER, DESCRIPTION, QTYORDERED, STOCKUNIT, DELIVERED, DELIVERYDATE,
LINENO_, PRODNUMBER, CONFIREDDEL
FROM dbo.EPURCHTRANS
WHERE (DATASET = 'TCC') AND (ACCEPT < '3') AND CREDITORACCOUNT = @AccountNo
ORDER BY PURCHASENUMBER
END
ELSE
BEGIN
SET NOCOUNT ON
SELECT ROWNUMBER, PURCHASENUMBER, ITEMNUMBER, DESCRIPTION, QTYORDERED, STOCKUNIT, DELIVERED, DELIVERYDATE,
LINENO_, PRODNUMBER, CONFIREDDEL
FROM dbo.EPURCHTRANS
WHERE (DATASET = 'TCC') AND (ACCEPT < '3') AND ROWNUMBER = @RowNo
ORDER BY PURCHASENUMBER
END
GO
</code>
Windows Scripting Component:
<code>
<?xml version="1.0" encoding="iso-8859-1"?>
<component id="Teracomc">
<?component error="true" debug="true"?>
<registration progid="Teracomc"/>
<public>
<method name="LoggaIn"/>
<method name="InkopInfo"/>
<property name="RowNr"/>
<property name="PurchaseNumber"/>
<property name="ItemNumber"/>
<property name="Description"/>
<property name="QtyOrdered"/>
<property name="StockUnit"/>
<property name="Delivered"/>
<property name="DeliveryDate"/>
<property name="LineNumber"/>
<property name="ProdNumber"/>
<property name="ConfirmedDel"/>
</public>
<implements type="ASP" id="ASP"/>
<script language="VBScript">
<![CDATA[
Option Explicit
On Error Resume Next
'Private Variables
Dim StockItemLength
Dim RowNr
Dim PurchaseNumber
Dim ItemNumber
Dim Description
Dim QtyOrdered
Dim StockUnit
Dim Delivered
Dim LineNumber
Dim ProdNumber
Dim ConfirmedDel
Function InkopInfo(RowNumber)
Dim DBConn
Dim objCmd, objRs
Dim StoredProc
StockItemLength = 1
'If DB connection exists?
If Session.Contents("Function").OpenDBConn(DBConn) Then
'Declare stored procedure
StoredProc = "Sp_InkopInfo"
'Cmd Exists?
If Session.Contents("Function").OpenCmd(DBConn, objCmd, StoredProc) Then
objCmd.Parameters.Append objCmd.CreateParameter("@RowNo", 3, 1, 4, RowNumber)
objCmd.Parameters.Append objCmd.CreateParameter("@AccountNo", 200, 1, 10, Session.Contents("AccountNumber"))
'Execute command
Set objRs = objCmd.Execute
Do While Not objRs.EOF
RowNr(StockItemLength) = objRs.Fields("ROWNUMBER")
PurchaseNumber(StockItemLength) = objRs.Fields("PURCHASENUMBER")
ItemNumber(StockItemLength) = objRs.Fields("ITEMNUMBER")
Description(StockItemLength) = objRs.Fields("DESCRIPTION")
QtyOrdered(StockItemLength) = objRs.Fields("QTYORDERED")
StockUnit(StockItemLength) = objRs.Fields("STOCKUNIT")
Delivered(StockItemLength) = objRs.Fields("DELIVERED")
DeliveryDate(StockItemLength) = objRs.Fields("DELIVERYDATE")
LineNumber(StockItemLength) = objRs.Fields("LINENO_")
ProdNumber(StockItemLength) = objRs.Fields("PRODNUMBER")
ConfirmedDel(StockItemLength) = objRs.Fields("CONFIREDDEL")
StockItemLength = StockItemLength + 1
objRs.MoveNext
Loop
StockItemLength = StockItemLength - 1
InkopInfo = StockItemLength
Call Session.Contents("Function").CloseCmd(objRs)
Else
InkopInfo = "0"
End If
Call Session.Contents("Function").CloseDBConn(DBConn)
Else
InkopInfo = "-1"
End If
End Function
]]>
</script>
</component>
</code>
ASP SIDAN:
<code>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<!-- #INCLUDE FILE="CheckLogin.inc" -->
<%
Dim bColor
bColor = True 'Color on row
Set PMComp = Server.CreateObject("Teracomc")
Items = PMComp.InkopInfo(0)
RowNo = PMComp.RowNr
PurchaseNo = PMComp.PurchaseNumber
ItemNo = PMComp.ItemNumber
Description = PMComp.Description
QtyOrdered = PMComp.QtyOrdered
StockUnit = PMComp.StockUnit
Delivered = PMComp.Delivered
DeliveryDate = PMComp.DeliveryDate
LineNo = PMComp.LineNumber
ProdNo = PMComp.ProdNumber
ConfirmDel = PMComp.ConfirmedDel
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Teracom Components AB - Inköpshanteraren (Purchase Manager)</title>
</head>
<body bgcolor="#ffffff" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0">
<table cellpadding="0" cellspacing="0" border="0">
<%
For i = 1 To Items
If ConfirmDel(i) = "1900-01-01" Then
ConfirmDelivery = ""
Else
ConfirmDelivery = ConfirmDel(i)
End If
If bColor Then
%>
<tr id="<%= RowNo(i)%>" bgcolor="#dddddd" class="rowStyle">
<td><%= PurchaseNo(i)%></td>
<td><%= ItemNo(i)%></td>
<td><%= QtyOrdered(i)%></td>
<td><%= StockUnit(i)%></td>
<td><%= Delivered(i)%></td>
<td><%= DeliveryDate(i)%></td>
<td><%= ConfirmDelivery%></td>
</tr>
<%
bColor = False
Else
%>
<tr id="<%= RowNo(i)%>" bgcolor="#ffffff" class="rowStyle">
<td><%= PurchaseNo(i)%></td>
<td><%= ItemNo(i)%></td>
<td><%= QtyOrdered(i)%></td>
<td><%= StockUnit(i)%></td>
<td><%= Delivered(i)%></td>
<td><%= DeliveryDate(i)%></td>
<td><%= ConfirmDelivery%></td>
</tr>
<%
bColor = True
End If
Next
%>
</table>
</body>
</html>
</code>
Om det är något annat ni undra så är det bara till att maila mig (inte iMail utan till jobbet, står i visitkortet).Sv: Ett skumt problem (innehåller mycket kod).
Jag undrar bara vad det var för problem. Vad får du för felmeddelande...
//fredda
EDIT: Henkoz hann före.
Borde du inte kunna skriva SET NOCOUNT ON en (1) gång innan IF-satsen i sp:n.Sv: Ett skumt problem (innehåller mycket kod).
tommie.severinsson@teracom-c.comSv: Ett skumt problem (innehåller mycket kod).
Hej igen.
Svårt det där. Det borde fungera....
Men några tips kan jag alltid ge dig.
Jag skulle nog arbetat med en tvådimensionell array i stället för tio-talet endimensionella. Eller varför inte ha en egenskap som heter ADORS eller något för att returnera ett ADODB.Recordset.
Som det ser ut nu är det lite rörigt tycker jag.
Option explicit på asp-sidan kan också vara bra i detta läge.
//freddaSv: Ett skumt problem (innehåller mycket kod).
Skulle jag kunna göra men prestandavinsten är minimal.
>> Eller varför inte ha en egenskap som heter ADORS eller något för att returnera ett ADODB.Recordset. <<
Ej nödvändigt när det jobbas med Command objectet. Får ett "fejkat" recordset genom att köra Set oRs = oCmd.Execute.. får tillgång till alla metoder osv som det finns i ett recordset objekt.
;)
Nää.. visst skall det fungera... såhär ser det ut på sidan..
<code>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Teracom Components AB - Inköpshanteraren (Purchase Manager)</title>
</head>
<body bgcolor="#ffffff" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0">
<table cellpadding="0" cellspacing="0" border="0">
</table>
</body>
</html>
</code>Sv: Ett skumt problem (innehåller mycket kod).
Hej igen.
Det är möljigt att du inte vinner så mycket prestanda. Vinsten ligger i strukturen...
Vidare har jag inte jobbat med WS Komponenter. Jag antar att de (kan) skall reggas som vanliga com. Är det gjort?
Det här ser lite lurigt ut:
Set PMComp = Server.CreateObject("Teracomc")
Tillhör den inget bibliotek?
//freddaSv: Ett skumt problem (innehåller mycket kod).
Hej.
Här hittade jag en länk som kan vara värd att titta på...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/letckerror.asp
//freddaSv: Ett skumt problem (innehåller mycket kod). [LÖST]
ReDim sträng(255)
Ingen snygg lösning... men det funkar..
Tack för hjälpen..
En WSC reggas precis som ett COM (dll), skillnaden är att du kan jobba i realtid i en WSC utan att behöva rekompilera den hela tiden (plus att IIS låser dll när man använt den vilket innebär att jag måste stänga av IIS, avregga DLL osv) Drygt när jag utvecklar.. ;)
Prestandavinsten med ett riktigt comobjekt är ju betydlig. Anledningen till att ett wsc används här är just för att det kodas om mycket hela tiden, när applikationen är 100% kan vi lätt göra om det till ett riktigt comojekt.
Inget klurigt alls, precis som med riktiga comobjekt.. Måste ju skapa en referens till objektet ( i detta fallet Teracomc ) för att få tillgång till alla mina egenskaper och metoder. ;)
<?xml version="1.0" encoding="iso-8859-1"?>
<component id="Teracomc">
<?component error="true" debug="true"?>
<registration progid="Teracomc"/>
Tycker att min struktur på kod är grym! ;) lätt genomskådlig.. ;) Kanske lite för lite kommentarer.. ;)
Men tillbaka till problemet...... vad kan det vara... skumma bananer.. säg till om ni kommer på något... testar vidare här...