Avatar billede mini-me Nybegynder
14. august 2008 - 09:56 Der er 6 kommentarer og
1 løsning

Stored Procedure

Hej,

Jeg har et maerkeligt problem - Jeg benytter mig af en stored-procedure som i princippet skulle oprette en ny ordre i finansprogrammet. Det lader til at den opretter recorden, men jeg kan ikke se den i finansprogrammet og hellere ikke via Access (ADP-forbindelse). Men laver jeg en select from i asp og vælger det ID den returnerede til mig får jeg det output...

Hvis jeg via Access kører den stored-procedure og indtaster de 3 nødvendige parameter så opretter den fint ordren?!?!


<%
Dim objConn
Dim objCmd

Const adCmdStoredProc    = 4
Const adInteger          = 3
Const adCurrency        = 6
Const adParamInput      = 1
Const adParamOutput      = 2
Const adExecuteNoRecords = 128
Const adDBDate = 133
Const adLongVarChar = 201
Const adBSTR = 8

'Instantiate objects
Set objconn        = Server.CreateObject("ADODB.Connection")
set objCmd        = Server.CreateObject("ADODB.Command")

connect = " provider=sqloledb;server=xxx;database=x;uid=yx;pwd=yx"
objconn.open = connect

strSQL = "SELECT * from orders where OrderNo='5214'"
set rs = objConn.execute(strSQL)


do until rs.EOF
  for each x in rs.Fields
    Response.Write(x.name)
    Response.Write(" = ")
    Response.Write(x.value & "<br />")
  next
  Response.Write("<br />")
  response.Flush()
  rs.MoveNext
loop   
   
strSQL = "SELECT MAX (convert(bigInt,OrderNo)) as MaxOrder from Orders"
set rs = objConn.execute(strSQL)
strMaxOrder = CDbl(rs("MaxOrder")) + 1

With objCmd
    .ActiveConnection = connect
    .CommandText = "kompas_orders_addnew"
    .CommandType = adCmdStoredProc 'Requires the adovbs.inc file or typelib meta tag
   
    'Add Input Parameters
    .Parameters.Append .CreateParameter("@OrderID", adInteger, adParamInput, ,strMaxOrder)
    .Parameters.Append .CreateParameter("@Customer", adInteger, adParamInput, , 21472231)
    .Parameters.Append .CreateParameter("@UserID", adInteger, adParamInput, , 0)
   
    'Execute the function
    'If not returning a recordset, use the adExecuteNoRecords parameter option
    .Execute, , adExecuteNoRecords
    orderID = .Parameters("@orderID")
End With

response.write orderID

%>
Avatar billede sherlock Nybegynder
14. august 2008 - 10:06 #1
Prøv med objConn.Close til sidst.

Det skal du for øvrigt altid gøre på alle connections.
Avatar billede mini-me Nybegynder
14. august 2008 - 10:22 #2
Det giver ikke rigtig noget.
Avatar billede sherlock Nybegynder
14. august 2008 - 10:49 #3
orderID = .Parameters("@orderID")
    .Close   
End With

Måske.?!

objConn har jo slet ikke noget med kaldet at gøre :) Men skal lukkes alligevel.
Avatar billede mini-me Nybegynder
14. august 2008 - 11:25 #4
Tjaa men scriptet virker jo, der kommer ingen fejl.
Avatar billede sherlock Nybegynder
14. august 2008 - 12:34 #5
Næ. Det virker ikke :)
Enten er det fordi din ændring ikke bliver committed, hvilket måske kan ske med en Close.

Eller, du har fat i en anden database ?!
Avatar billede mini-me Nybegynder
15. august 2008 - 09:58 #6
Sherlock: Smid svar, du har været hjælpsom ;-) så du skal have lidt point, jeg fandt dog også selv problemet. Der er åbnebart sat 1 ny server op med den nye database, så jeg har sat og smidt records ind i den gamle.
Avatar billede sherlock Nybegynder
15. august 2008 - 10:47 #7
:)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester