StevePMedlem sedan mars 2003772 inlägg expects parameter '@Serial', which was not supplied.
Vilket jag kan förstå eftersom jag inte skickar med den i min "strSQL". Men i min SP så sätts @Serial såhär
SELECT @Serial = coalesce(max(Serial),0) + 1
Så spelar det nån roll vilket värde jag skickar med @Serial som ?
Eller kommer det värdet skrivas över genom SP'n som plockar ut det högsta värdet och plussar på "1" ?
Så det jag undrar är vilket värde jag ska ha på @Serial när jag skickar med det till SP'n
Dim ObjRs
Dim ObjConn
Dim strSQL
Set ObjConn = Server.CreateObject("ADODB.Connection")
Set ObjRs = Server.CreateObject("ADODB.RecordSet")
ObjConn.Open Connect_String()
strSQL = "SpPostListData_Insert " _
& VarContactID
ObjConn.Execute strSQL, , 128
ObjRs.Close
ObjConn.Close
Set ObjRs = Nothing
Set ObjConn = Nothing
CREATE PROCEDURE spPostListData_Insert
@ContactID INT,
@Serial INT
AS
BEGIN
BEGIN TRANSACTION
SELECT @Serial = coalesce(max(Serial),0) + 1
FROM tblPostList
WITH (holdlock)
WHERE ContactID = @ContactID
INSERT INTO tblPostList
(
ContactID,
Serial
)
VALUES
(
@ContactID,
@Serial
)
COMMIT
END
GO
@ndersMedlem sedan juni 200032 969 inlägg Jag förstår inte varför du har den med som parameter om du inte ska skicka in någonting i den? Så här hade jag gjort:
CREATE PROCEDURE spPostListData_Insert
@ContactID INT
AS
DECLARE
@Serial INT
-- ....................
Mvh
StevePMedlem sedan mars 2003772 inlägg Det va ju lite mer logiskt.
Tack
tonyhMedlem sedan okt. 2002107 inlägg Men om...
...du av någon orsak vill ha valmöjligheten att skicka med en parameter till din procedur så kan du ju sätta ett defautvärde på @serial variabeln...
Men om jag förstått det korrekt så vill du manipulera variabeln du får in
SELECT @Serial = coalesce(max(Serial),0) + 1
-- Kanske borde skrivas
SELECT @Serial = coalesce(max(@Serial),0) + 1
Vad är det du försöker göra...
StevePMedlem sedan mars 2003772 inlägg Nej det borde väl inte skrivas
SELECT @Serial = coalesce(max(@Serial),0) + 1
Eftersom (max(Serial)
är kollumnen man plockar.
StevePMedlem sedan mars 2003772 inlägg Som @nders visade var correct.
Det jag ville göra var att plockat ut det högsta värdet i "Serial" kolumnen och plussa på 1
Tack ändå tonyh
StevePMedlem sedan mars 2003772 inlägg Kan jag på nåt enkelt sett skickade användaren till den nya posten som precis lagts in ?
@ndersMedlem sedan juni 200032 969 inlägg Är det alltså @Serial som vi behöver veta då?
I så fall är det bara att avsluta proceduren med
SELECT @Serial
Se dock till att du också har SET NOCOUNT ON överst i proceduren, annars kan du få lite majs med recordsetet.
Då får du alltså inte exekvera med adExecuteNoRecords, utan gör på vanligt vis när du ställer en select-fråga.
Mvh
StevePMedlem sedan mars 2003772 inlägg Nej det är just det som är problemet.
Man navigerar sig igenom respektive Post genom paging. En i taget. IntPage hämtas genom Request.Querystring("Page")
Vissa personer har över 5000 poster. Problemet är då när dom kanske har bläddrat så dom är på post nummer 5 och sen trycker "New", då görs själva inserten men dom står fortfarande kvar på Page=5
Men den nya posten ligger kanske runt Page=5001
Då blir det ju lite jobbigt att klicka sig igenom alla 5000 records innan man kommer till det nya man skapat.
@ndersMedlem sedan juni 200032 969 inlägg Jag vet inte om jag förstår problemet. Om du avslutar din procedur genom att selecta @Serial, så får du ju ut en ensam post i ditt recordset. Sedan är det bara att använda det värdet i din asp-kod.
Om jag missuppfattar, förklara gärna mer ingående vad du menar.
Mvh
StevePMedlem sedan mars 2003772 inlägg Ja då får jag ut en ensam post i recordsettet. Men då slutar ju pagingen att fungera? Eftersom bara 1 recordset har lästs in.
Man pagar genom ett Recordset i taget med en "pil" åt respektive håll.
@ndersMedlem sedan juni 200032 969 inlägg Sätt active page eller vad det nu heter till värdet du hämtar från recordsetet?
Jag kan tyvärr nada om paging, men jag hoppas du förstår vad jag menar...
Mvh
StevePMedlem sedan mars 2003772 inlägg Du menar AbsolutePage ?
Får ta mig en titt på det.
@ndersMedlem sedan juni 200032 969 inlägg Jepp, apselutpage är det apselut jag menar.
Mvh
StevePMedlem sedan mars 2003772 inlägg Kanon @nders!
La bara till en liten snutt i Pagingscriptet.
if Request.Form("NewMain") <> "" then
Response.Redirect("PostListData.asp?ID=" & VarContactID & "&Page=" & IntTotalPages )
end if