Avatar billede stener Nybegynder
13. december 2002 - 11:43 Der er 15 kommentarer og
2 løsninger

cursortype

Hvis man laver en stored procedure kan man sættte en cursor type hvordan gør man det?.
Avatar billede ocp Nybegynder
13. december 2002 - 11:46 #1
declare crsName cursor fast_forward
for select * from tblMyTable
Avatar billede ocp Nybegynder
13. december 2002 - 11:46 #2
Hvor fast_forward er cursortypen.
Avatar billede janus_007 Nybegynder
13. december 2002 - 11:55 #3
Der findes mange forskellige typer cursors (readonly, update, keyset mv.)! - For at finde den rigtige til dit brug, kan du så ikke oplyse hvad den cursor skal bruges til (update, insert osv..)
Avatar billede stener Nybegynder
13. december 2002 - 13:30 #4
jeg har det problem lige nu at jeg sætter min cursor type til 3 i min asp kode
(rs.open sql,conn,3,1,1)
Kan bruge
Const adOpenKeyset = 1
Const adOpenStatic = 3
Hvilken er bedst?

Men min stored procedure overskriver det jeg sætter i min asp kode og laver min cursor type om til 1 adopenforwardonly...

Og den cursortype kan jeg ikke bruge da jeg har index tal og pile til at gå frem og tilbage i recordsettet med.

Så skal i min stored procedure have sat en cursor type

Const adOpenKeyset = 1

eller

Const adOpenStatic = 3
Avatar billede janus_007 Nybegynder
13. december 2002 - 13:58 #5
Hør lige her... Den type cursors der findes i SP og i ADO er altså 2 vidt forskellige slags! - Lidt ligesom at sammenligne pærer med bananer. Hvis du bare har spurgt lidt mere præcist fra starten af såh... ;O)

Åben dit RS med:
objRS.Open strSP, objConn, adOpenDynamic, adLockReadOnly



Check evt. performance her:
http://www.4guysfromrolla.com/webtech/062799-3.report.shtml
Avatar billede stener Nybegynder
13. december 2002 - 14:35 #6
Hvis jeg åbner med adOpenDynamic altså 2 så får jeg fejlen

ADODB.Recordset (0x800A0CB3)
Current Recordset does not support bookmarks. This may be a limitation of the provider or of the selected cursortype.

Hvis jeg bruger 1 eller 3 går det fint men hvis jeg Declare en variable i min stored procedure og udskriver min cursortype i min asp kode skriver den at cursortype er 1 altså adopenforwardonly selvom jeg har sat den til 3. Hvis jeg ikke declare en variable i min stored procedure køre det hele som det skal.
Avatar billede stener Nybegynder
13. december 2002 - 14:37 #7
Hvis du kan forkalre mig hvorfor den gør det vil jeg meget gerne give dig flere points..
Avatar billede ocp Nybegynder
13. december 2002 - 14:44 #8
Du kan ikke opdatere data fra en stored procedure via ADO. Du kan opdatere i views og selects.

Problemet er at data fra en stored procdure kan være dannet på alle mulige måder - og ADO har ikke en chance for at finde ud af hvordan.
Avatar billede ocp Nybegynder
13. december 2002 - 14:45 #9
Du skal i stedet skrive en ny stored procedure der indeholder de relevante update-statements og så kalde den når dine data skal ændres.
Avatar billede janus_007 Nybegynder
13. december 2002 - 15:02 #10
stener: som jeg læser det er du int. i noget select af en art. Kunne du ikke poste den de indledende manøvre førend du åbner dit rs ? , så skal jeg nok lige tage et kig :O)



ocp: det passer ikke... Du kan updatere, inserte, selecte osv. med en sp igennem ADO! Data fra en SP.. hmmm heller ikke korrekt! Det kommer igen an på hvordan din sp er udformet.
Avatar billede ocp Nybegynder
13. december 2002 - 15:09 #11
Ja, præcis som jeg også beskrev, MEN: Man kan ikke opdatere på resultatet FRA en stored procedure på den måde som man kan med data fra f.eks. et select, altså dynamisk. Man SKAL oprette en SP der kan opdatere data på baggrund af f.eks. et id.
Avatar billede janus_007 Nybegynder
13. december 2002 - 15:15 #12
hej ocp.
Jeg må nok indrømme at jeg ikke er helt med lige nu! Det kommer jo ganske an på hvad den SP returnerer og hvordan. Du kan da eks.vis snildt have nestede SP's hvorigennem updates/ insert finder sted på baggrund af de records fra SP.

Men forklar lige lidt nærmere, måske vi misforstår hinanden :O)
Avatar billede ocp Nybegynder
13. december 2002 - 15:26 #13
Det, jeg snakker om, minder mest om databinding, dvs. at du knytter en datakilde til f.eks. et grid som således kan styre opdateringer dynamisk, baseret på en cursor (som er opdaterbar).
Avatar billede janus_007 Nybegynder
13. december 2002 - 15:31 #14
Aha på den måde... Nej det er mere eller mindre klart iogmed der jo eksisterer en binding (eller rettere ingen binding) imellem grid og sp :O)
Vi skulle bare lige ha begreberne på plads åbenbart. Men lad os høre hvad 'stener' har af kommentarer til scenariet.
Avatar billede stener Nybegynder
13. december 2002 - 16:18 #15
Det jeg bruger min sp til er at selecte fra 3 forskellige tabeller. Som så giver mig et recordset som jeg kan skrive ud. Her kommer min sp:

CREATE PROCEDURE Usp_S_Findmc
(
@Brand        varchar(2),
@Model              varchar(50),
@Type          varchar(50),
@Aargang1        int,
@Aargang2        int,
@Ccm1          int,
@Ccm2          int,
@Pris1          money,
@Pris2          money,
@Afgift          tinyint
)

AS

select 
    Annoncer.A_id,
    Annoncer.A_Brand,           
    Annoncer.A_Model,
    Annoncer.A_Aargang,
    Annoncer.A_Pris,   
    Annoncer.A_Thumpic,
    Annoncer.A_Upload,
    Brands.B_navn
From
    Annoncer, modul, Brands
Where
    M_Startdato < Getdate()
    AND
    M_Slutdato  > Getdate()
    AND
    M_id = A_Modulid
    AND
    A_Brand LIKE @brand
        AND
        A_Model LIKE '%' + @Model + '%'
    AND
    A_Type LIKE '%' + @Type + '%'
    AND
    A_Aargang BETWEEN @Aargang1 AND @Aargang2
    AND
    A_Ccm BETWEEN @Ccm1 AND @Ccm2
    AND
    A_Pris BETWEEN @Pris1 AND @Pris2
    AND   
    A_Afgift = 1
        AND
    Brands.B_id = Annoncer.A_Brand
    ORDER BY
    Brands.B_navn
GO

Hvis jeg bruger denne sp og bruger cursortype 3 til at åbne mit recordset med virker det fint.

Men hvis jeg declare en variable i min sp så bliver min cursortype lige pludeselig 1 altså adforwardonly også får jeg fejlen:

Current Recordset does not support bookmarks. This may be a limitation of the provider or of the selected cursortype.

Og det er jo klart nok da mit recordset nu kun kan køre fremad men hvorfor faen laver sp'en min cursor type om hvis jeg prøver at at declare en variable det fatter jeg ikke.

Hvis i også vil se kald til sp kommer den her:

sql = "Usp_S_Findmc'" & Brand & "','" & model & "','" & MC_Type & "'," & Aargang1 & "," & Aargang2 &_
    "," & Ccm1 & "," & Ccm2 & "," & pris1 & "," & pris2 & "," & afgift '  &  ",'" & Sortering & "'"
    rs.open sql,conn,3,1,1
Avatar billede janus_007 Nybegynder
13. december 2002 - 17:07 #16
Så langt så godt.... Så mangler du bare lige at poste måden hvormed du åbner dit rs!! connection, command osv....
Avatar billede janus_007 Nybegynder
15. december 2002 - 18:49 #17
Hmmm, så at du direkte på dit RS bruger connection! - Lav et commend object og brug connection på det, og på det command bruger du så dit rs!. Så funker det højst tænkeligt!
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
Computerworld tilbyder specialiserede kurser i database-management

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