Avatar billede centauri Nybegynder
26. november 2004 - 08:56 Der er 16 kommentarer og
1 løsning

Problem med ASP og SQL med flere kald i SQL Streng

Jeg har en problem med dette

SET RS5 = Server.CreateObject("ADODB.Recordset")' Define the recordset object
SQL5 = "INSERT INTO [Data] Kunde,Nummer,DDI,Navn,pType,Model,Port,LSA,X,Placering,CDD,Status,RefID) VALUES ('464', '58', '3', 'Test 3', '3', '13', '', '', '', '', '', '2', '8') SELECT @@IDENTITY AS 'ID'"
Response.Write SQL5
RS5.Open SQL5 , CONN, 2, 2
NewID= RS5("ID")

Får følgende fejl

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

/kunde/kundedata.asp, line 16

Og linje 16 er

NewID= RS5("ID")

Men tager jeg hele SQL strengen og kopiere den ind i SQL Query Analyzer virker den uden problemer, den opretter fint nok den nye record og giver mig det ID på den nye record den netop har oprettet.
Men virker åbenbart ikke i ASP.

Nogen der har oplevet lignende og evt ved hvordan det kan løses?

for skal bruge det ID på recorden i mit videre forløb, og kan ikke bare bruge en søgefunktion og finde den ved at søge på kriterierne, da der nemt kan forekomme ens records.
Avatar billede skwat Praktikant
26. november 2004 - 09:03 #1
du skal måske lave en rs.nextrecordset inden
Avatar billede skwat Praktikant
26. november 2004 - 09:04 #2
RS5.NextRecordset
NewID= RS5("ID")
Avatar billede centauri Nybegynder
26. november 2004 - 09:07 #3
Virker desværre ikke
Microsoft OLE DB Provider for SQL Server error '80040e21'

Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.

/kunde/kundedata.asp, line 17

Hvor Linje 17 er RS5.NextRecordset
Avatar billede fennec Nybegynder
26. november 2004 - 09:11 #4
Du skal ikke have ' omkring ID. Også er det en god ide at "afslutte" de enkelte linjer i SQL.

SQL5 = "INSERT INTO [Data] Kunde,Nummer,DDI,Navn,pType,Model,Port,LSA,X,Placering,CDD,Status,RefID) VALUES ('464', '58', '3', 'Test 3', '3', '13', '', '', '', '', '', '2', '8'); SELECT @@IDENTITY AS ThisID"
RS5.Open SQL5 , CONN, 2, 2
NewID= RS5("ThisID")
Avatar billede centauri Nybegynder
26. november 2004 - 10:16 #5
Det hjalp desværre heller ikke, får stadig fejlen
Item cannot be found in the collection corresponding to the requested name or ordinal.
ved :
NewID= RS5("ThisID")
Avatar billede fennec Nybegynder
26. november 2004 - 13:54 #6
Du mangler også en parentes:

SQL5 = "INSERT INTO [Data] (Kunde,Nummer,DDI,Navn,pType,Model,Port,LSA,X,Placering,CDD,Status,RefID) VALUES ('464', '58', '3', 'Test 3', '3', '13', '', '', '', '', '', '2', '8'); SELECT @@IDENTITY AS ThisID"
RS5.Open SQL5 , CONN, 2, 2
NewID= RS5("ThisID")
Avatar billede skwat Praktikant
26. november 2004 - 17:06 #7
prøv lige at se om du er kommet til .eof
Avatar billede centauri Nybegynder
29. november 2004 - 08:08 #8
Den er ikke ved .eof

Så nu begynder det hele at irritere mig grusomt.

Og det med paranteserne de er med. Ved bare ikke lige hvorfor det ikke lige kom med da jeg udskrev min SQL streng.

Men er der ellers nogen der ved hvordan det kan løses ?
Avatar billede fennec Nybegynder
29. november 2004 - 08:13 #9
Prøv lige at udskifte:
RS5.Open SQL5 , CONN, 2, 2

med
set RS5 = CONN.Execute(SQL5)
Avatar billede centauri Nybegynder
29. november 2004 - 08:41 #10
Så får jeg følgende fejl ud for det du der mente skulle ændres
Object required: 'provider=SQLOLEDB;dr'
Avatar billede fennec Nybegynder
29. november 2004 - 08:47 #11
Troede du havde oprettet CONN som en connection. Så skal du lige have et par linjer til:

Set MyConn = Server.CreateObject("ADODB.Connection")
MyConn.open CONN
set RS5 = MyConn.Execute(SQL5)
Avatar billede centauri Nybegynder
29. november 2004 - 09:09 #12
Nå ja ok er så ikke lige den måde jeg normalt åbner databaser på.

Men den opretter så også stadig nok den nye record rigtig nok men kommer så med fejlen
Item cannot be found in the collection corresponding to the requested name or ordinal.

Når jeg vil udskrive ThisID
Avatar billede fennec Nybegynder
29. november 2004 - 09:43 #13
Bare for at være sikker, hvordan ser din kode så ud nu??
Avatar billede centauri Nybegynder
29. november 2004 - 10:28 #14
SQL5 = "INSERT INTO [Data] (Kunde,Nummer,DDI,Navn,pType,Model,Port,LSA,X,Placering,CDD,Status,RefID) VALUES ('" & RS("Kunde") & "', '" & Request("Lokal") & "', '" & Request("DDI") & "', '" & Request("Navn") & "', '" & Request("Type") & "', '" & Request("Ttype") & "', '" & RS("Port") & "', '" & RS("LSA") & "', '" & RS("X") & "', '" & RS("Placering") & "', '" & RS("CDD") & "', '2', '" & Request("ID") & "'); SELECT @@IDENTITY AS thisID"

Set MyConn = Server.CreateObject("ADODB.Connection")
MyConn.open CONN
set RS5 = MyConn.Execute(SQL5)

NewID= RS5("thisID")
Avatar billede fennec Nybegynder
29. november 2004 - 10:38 #15
Ja, det ser jo ok ud.
Det eneste jeg ellers kan komme på er at du skal have sat NoCount til ON.

SQL5 = "SET NoCount ON; INSERT INTO [Data] (Kunde,Nummer,DDI,Navn,pType,Model,Port,LSA,X,Placering,CDD,Status,RefID) VALUES ('" & RS("Kunde") & "', '" & Request("Lokal") & "', '" & Request("DDI") & "', '" & Request("Navn") & "', '" & Request("Type") & "', '" & Request("Ttype") & "', '" & RS("Port") & "', '" & RS("LSA") & "', '" & RS("X") & "', '" & RS("Placering") & "', '" & RS("CDD") & "', '2', '" & Request("ID") & "'); SELECT @@IDENTITY AS thisID;"
Avatar billede centauri Nybegynder
29. november 2004 - 10:47 #16
Det var åbenbart det der skulle til.

Så siger 1000 tak. Det har ihverfald lige redet mig for et kæmpe problem med vores intregration af lagerstyring og kundedatabase.
Bare underligt nok når det hele virker fint nok i MS SQL Query Analyzer og den der fint nok giver mig det rette ID tilbage. Men hovedsagen er jo at det virker nu.

Men kan så ikke lige smide et svar så du kan få pointene.
Avatar billede fennec Nybegynder
29. november 2004 - 10:59 #17
.o) <-- One Eyed Jack
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