Avatar billede arno Nybegynder
10. november 2000 - 14:55 Der er 6 kommentarer og
1 løsning

ASP og SQL - sp kald

Hej...

Jeg har et mega problem... som jeg håber der en nogen der kan hjælpe mig med... Jeg laver et SP kald til min sql server (mssql6.5) der skal hente et resultset til mig.. RS dannes af sp kaldet på min sql server og er styret af en curser... men når der anvendes curser en et rs giver mit rs mig kun en record af gangen... hvordan undgår jeg det i asp ? uden at jeg behøves at kalde min sp igen og igen ???

/arno
Avatar billede erikjacobsen Ekspert
10. november 2000 - 15:02 #1
Hvordan ser din SQLsætning ud?
Avatar billede arno Nybegynder
10. november 2000 - 15:08 #2
*** du får den i ucencureret udgave..

CREATE PROCEDURE Vis_Efterlysninger_row
@statusid int,
@behandler int,
@pakkenummer varchar(30),
@kundenummer varchar(30),
@afsendelsesdatofra datetime,

@afsendelsesdatotil datetime,
@datofra datetime,
@fromrow int,
@torow int

AS

IF @pakkenummer = \'%\' and @kundenummer = \'%\' and @afsendelsesdatofra = NULL and @afsendelsesdatotil = NULL and @datofra = NULL
BEGIN
  IF (@statusid = NULL) AND (@behandler = NULL)
  BEGIN
    declare find_saa_de_data cursor for
    SELECT sagsid, sagsstatusid,sagsbehandlerid, pakkenummer, afsendelsesdato, kundenummer, sag_startdato, modtager_navn
    FROM sagsmappe
    ORDER BY sag_startdato DESC
  END

  IF (@statusid <> NULL) AND (@behandler = NULL)
  BEGIN
    declare find_saa_de_data cursor for
    SELECT sagsid, sagsstatusid,sagsbehandlerid, pakkenummer, afsendelsesdato, kundenummer, sag_startdato, modtager_navn
    FROM sagsmappe
    WHERE sagsstatusid = @statusid
    ORDER BY sag_startdato DESC
  END

  IF (@statusid = NULL) AND (@behandler <> NULL)
  BEGIN
    declare find_saa_de_data cursor for
    SELECT sagsid, sagsstatusid,sagsbehandlerid, pakkenummer, afsendelsesdato, kundenummer, sag_startdato, modtager_navn

    FROM sagsmappe (INDEX = sagsmappe_startdato_idx)
    WHERE sagsbehandlerid = @behandler
    ORDER BY sag_startdato DESC
  END

  IF (@statusid <> NULL) AND (@behandler <> NULL)
  BEGIN
    declare find_saa_de_data cursor for
    SELECT sagsid, sagsstatusid,sagsbehandlerid, pakkenummer, afsendelsesdato, kundenummer, sag_startdato, modtager_navn
    FROM sagsmappe (INDEX = sagsmappe_startdato_idx) 
    WHERE sagsbehandlerid = @behandler and
          sagsstatusid = @statusid
    ORDER BY sag_startdato DESC
  END
END


ELSE
BEGIN

  declare @status2_start int
  declare @status2_stop int
  declare @behandler2_start int
  declare @behandler2_stop int
  declare @afsendelsesdatofra_start datetime
  declare @afsendelsesdatofra_stop datetime


  declare @afsendelsesdatotil_start datetime
  declare @afsendelsesdatotil_stop datetime
  declare @datofra2 datetime

  IF (@afsendelsesdatofra = NULL)
  BEGIN
    SELECT @afsendelsesdatofra_start = \'01-01-1900\' 
    SELECT @afsendelsesdatofra_stop = \'12-31-9999\'
  END
  ELSE
  BEGIN

    SELECT @afsendelsesdatofra_start = @afsendelsesdatofra 
    SELECT @afsendelsesdatofra_stop = \'12-31-9999\'
  END

  IF (@afsendelsesdatotil = NULL)
  BEGIN
    SELECT @afsendelsesdatotil_start = \'01-01-1900\' 

    SELECT @afsendelsesdatotil_stop = \'12-31-9999\'
  END
  ELSE
  BEGIN
    SELECT @afsendelsesdatotil_start = \'01-01-1900\' 
    SELECT @afsendelsesdatotil_stop = @afsendelsesdatotil
  END



  IF (@datofra = NULL)
  BEGIN
    SELECT @datofra2 = \'01-01-1900\'
  END
  ELSE
  BEGIN
    SELECT @datofra2 = @datofra
  END

  declare find_saa_de_data cursor for
  SELECT sagsid, sagsstatusid, sagsbehandlerid, pakkenummer, afsendelsesdato, kundenummer, sag_startdato
  FROM sagsmappe (INDEX = sagsmappe_startdato_idx)
  WHERE ((sagsbehandlerid >= @behandler2_start)
  and (sagsbehandlerid <= @behandler2_stop))
  AND ((sagsstatusid >= @status2_start)

  and (sagsstatusid <= @status2_stop))
  AND (kundenummer like @kundenummer)
  AND (pakkenummer like @pakkenummer)
  AND ((afsendelsesdato >= @afsendelsesdatofra_start)
  and (afsendelsesdato <= @afsendelsesdatofra_stop))

  AND ((afsendelsesdato >= @afsendelsesdatotil_start)
  and (afsendelsesdato <= @afsendelsesdatotil_stop))

  AND (sag_startdato >= @datofra2)
  ORDER BY sag_startdato DESC

END


declare @rownum int
SELECT @rownum = 0


open find_saa_de_data

while @rownum < @torow + 1
begin
  declare @xsagsid int
  declare @xsagsstatusid int
  declare @xsagsbehandlerid int
  declare @xpakkenummer varchar (30)
  declare @xafsendelsesdato datetime
  declare @xkundenummer varchar (30)
  declare @xsag_startdato datetime
  declare @xsag_slutdato datetime
  declare @xafsender_navn varchar (255)
  declare @xafsender_adresse varchar (255)


  declare @xafsender_adresse2 varchar (255)
  declare @xafsender_postnummerid varchar (50)
  declare @xafsender_postby varchar (255)
  declare @xafsender_landekodeid int
  declare @xmodtager_navn varchar (255)
  declare @xmodtager_adresse varchar (255)

  declare @xmodtager_adresse2 varchar (255)
  declare @xmodtager_postnummerid varchar (50)
  declare @xmodtager_postby varchar (255)

  declare @xmodtager_landekodeid int
  declare @xkontakt_person varchar (255)
  declare @xkontakt_persontlf varchar (255)
  declare @xkontakt_personemail varchar (255)
--  declare @xsupplerende_oplysninger text
--  declare @xkonklusion text
  declare @xResponse_afhenterregions_id int
  declare @xResponse_udbringerregions_id int

  declare @xResponse_Alle int

  declare @xPakke_Indhold varchar (255)
  declare @xPakke_Vaegt varchar (255)

  declare @xPakke_Vaerdipakke varchar (255)
  declare @xPakke_Efterkrav varchar (255)

--fetch next from find_saa_de_data into @xsagsid, @xsagsstatusid,@xsagsbehandlerid, @xpakkenummer, @xafsendelsesdato, @xkundenummer, @xsag_startdato, @xsag_slutdato, @xafsender_navn, @xafsender_adresse, @xafsender_adresse2, @xafsender_postnummerid, @xafsender_postby, @xafsender_landekodeid, @xmodtager_navn, @xmodtager_adresse, @xmodtager_adresse2, @xmodtager_postnummerid, @xmodtager_postby, @xmodtager_landekodeid, @xkontakt_person, @xkontakt_persontlf, @xkontakt_personemail, @xResponse_afhenterregions_id, @xResponse_udbringerregions_id, @xResponse_Alle, @xPakke_Indhold, @xPakke_Vaegt, @xPakke_Vaerdipakke, @xPakke_Efterkrav
  fetch next from find_saa_de_data into @xsagsid, @xsagsstatusid,@xsagsbehandlerid, @xpakkenummer, @xafsendelsesdato, @xkundenummer, @xsag_startdato, @xmodtager_navn

  IF @rownum > @fromrow - 1

  BEGIN
--  select @xsagsid, @xsagsstatusid,@xsagsbehandlerid, @xpakkenummer, @xafsendelsesdato, @xkundenummer, @xsag_startdato, @xafsender_navn, @xafsender_adresse
    select @xsagsid as sagsid, @xsagsstatusid as sagsstatusid,@xsagsbehandlerid as sagsbehandlerid, @xpakkenummer as pakkenummer, @xafsendelsesdato as afsendelsesdato, @xkundenummer as kundenummer, @xsag_startdato as sag_startdato, @xmodtager_navn as modtager_navn, \'X\', \'X\', \'X\', \'X\', \'X\', \'X\', \'X\', \'X\', \'X\', \'X\', \'X\', \'X\', \'X\', \'X\', \'X\', \'X\', \'X\', \'X\', \'X\', \'X\', \'X\', \'X\', \'X\', \'X\'
  END


  if @@fetch_status <> 0
    break


  select @rownum = @rownum + 1

end

close find_saa_de_data

deallocate find_saa_de_data
GO

Avatar billede erikjacobsen Ekspert
10. november 2000 - 19:18 #3
Blot til oplysning: jeg opgiver. Det er bestemt ikke min stærke side.
Avatar billede arno Nybegynder
13. november 2000 - 09:03 #4
- Ok - men tak for forsøget....

/arno
Avatar billede arno Nybegynder
08. oktober 2001 - 11:22 #5
Jeg lukker denne...
--> ingen løsning

/arno
Avatar billede stoffer Nybegynder
06. november 2001 - 10:35 #6
Hejsa,
Jeg har ikke set dit spg. før nu. (ved ikke om du stadig har gang i det ;)

Det er rimeligt nemt at gøre det du siger, man laver en temp tabel (et eks.):

CREATE TABLE #TempAktivitetstype ([id] INT PRIMARY KEY,stamp smalldatetime DEFAULT getdate(),[aktivtype] varchar(55),procent decimal(18,4))

herefter indsætter du oplysningerne i din temp tabel:

insert into #TempAktivitetstype([id]) VALUES(@intPortID)

herefter selecter du alt fra tabellen (i slutningen af din SP):
select * from #TempAktivitetstype

bagefter sletter du temptabellen så den ryger væk fra hukommelsen (det ville den gøre alligevel, men kun efter et par minutter).

drop TABLE #TempAktivitetstype



/Håber det gav lidt inspiration, husk der er aldrig \"ingen løsning\" ;)


Avatar billede stoffer Nybegynder
06. november 2001 - 10:36 #7
du kan også lave det via ASP med recordset, der er en funktion i ADO\'en til at move fra et recordset til et andet...
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