Avatar billede tknudsen Nybegynder
14. august 2001 - 13:46 Der er 15 kommentarer og
1 løsning

link til ms sql 7.0 sp

Kan det lade sig goere at lave et link fra access (97) til en stored procedure p[ en ms sql server 7.0 ?
14. august 2001 - 16:08 #1
Ikke direkte, men du skal lave en videregivelsesforespørgsel (PassThrough-query) hvorfra du kalder en Stored Procedure således:

Exec sp_Min_Stored_Procedure

/Thomas
Avatar billede tknudsen Nybegynder
14. august 2001 - 16:17 #2
skal jeg lave det i access ?

der kan jeg da ikke bruge exec kommandoen !?!
14. august 2001 - 16:26 #3
Du laver en ny forespørgsel (ligegyldigt hvad der står i den)

I design, går du i menuen Forespørgsel->SQL-Specifikt->Videregivelsesforespørgsel

Herefter ændres din forespørgsel til kun at kunne indeholde ren SQL.
Her skal så stå:
Exec NavnPåDinSP

I egenskaberne for denne forespørgsel, finder du egenskaben \"ODBCtilslutningsstreng\". Når du klikker på kanppen med de 3 prikker til højre får du \"Vælg Datakilde\"-dialogboksen frem, hvorefter du vælger din DNS (eller opretter en, hvis du ikke har en)

Herefter har du en videregivelsesforespørgesel.
Dette er den optimale måde at lave forespørgsler, når man arbejder med en databaseserver som SQL server eller oracle. Herved sendes kun SQL strengen til serveren, som så kun returnere de ønskede poster.

ODBC klarer nu dette langt hen ad vejen, men især handlingsforespørgsler kan virkelig optimeres på denne måde.

/Thomas
Avatar billede tknudsen Nybegynder
14. august 2001 - 16:59 #4
det er sgu da skide smart :-)

godt nok har jeg lidt problemer med at sende div parametre fra en form over til den stored procedure !?!

feks vil jeg gerne ha vaerdien fra feltet [Forms]![main].[pUserId].[value] med ?!



14. august 2001 - 17:49 #5
sorry: no can do

I så fald er du nødt til at ændre SQL\'en inden du kalder den.

currentdb.querydefs(\"qry\").sql = \"Exec NavnPåDinSP \" & Forms!main.pUserId
Avatar billede tknudsen Nybegynder
15. august 2001 - 12:17 #6
hvor foregår det ?

og vil det så i mit tilfælde være:

currentdb.querydefs(\"QGetEvents\").sql = \"exec sp_GetEvents \" & Forms!main.pUserId

når min access query hedder \"QGetEvents\" ?
Avatar billede tknudsen Nybegynder
15. august 2001 - 12:31 #7
desuden skal jeg vaelge dsn hver gang QGetEvents bliver afviklet - kan jeg undgaa dette - evt via noget trusted connection el. lign. ?
15. august 2001 - 22:05 #8
currentdb.querydefs(\"QGetEvents\").sql = \"exec sp_GetEvents \" & Forms!main.pUserId

er korrekt.

Mht dsn, så skal du stille dig i forespørgsels-design - vælge egenskaber og angive ODBCtilslutningsstreng (og sikre dig, at den gemmer hele strengen i egenskaben. I dsn\'en kan du angive om den skal huske password eller ej.

Det er ikke meningen, at den skal prompte for dsn hver gang.

/Thomas
22. august 2001 - 10:39 #9
Er du kommet videre med denne?

/Thomas
Avatar billede tknudsen Nybegynder
22. august 2001 - 10:54 #10
jeg er lige ved at teste den...

jeg har et problem med at aendre i sql\'en iden jeg kalder queryen. Det er vel ligemeget hvad der staar i queryen inden jeg aendrer den - er det ikke ?
22. august 2001 - 10:56 #11
jo
Avatar billede tknudsen Nybegynder
22. august 2001 - 10:56 #12
paa onClick eventen paa en knap goer jeg foelgende:

CurrentDb.QueryDefs(\"QEvents\").SQL = \"exec sp_GetEvents \'\" & Forms!main.pUserId & \"\',\'\" & Forms!main.pItemId & \"\',\'\" & Forms!main.pEventStart & \"\',\'\" & Forms!main.pEventFinish & \"\'\"

DoCmd.OpenReport \"REventLog\", acPreview


men jeg faar en fejl - access kender ikke exec kommandoen !? skal det vaere i access queryen eller i den likede query jeg aendrer sql\'en ?
Avatar billede tknudsen Nybegynder
22. august 2001 - 10:57 #13
linkede query
22. august 2001 - 11:05 #14
Har du ikke kun en videregivelsesforespørgsel?

Det er i hvert fald den, du skal ændre SQL\'en på.

Exec er en lovlig kommando i Transact SQL, men prøv evt med Execute i stedet.
Avatar billede tknudsen Nybegynder
22. august 2001 - 11:17 #15
jo - jeg har bare forvirret mig selv her...

Den stored procedure paa sql serveren hedder (nu)sp_GetUserEvents. Den tager en parameter - pUserId.

I access har jeg en linket query - den hedder QGetEvents. I den har jeg som default exec sp_GetUserEvents \'%\'. Naar jeg afvikler den i access gaar det godt - jeg faar det oenskede resultatseat. Rapporten der bruger resultatet fra QGetEvents funger ogsaa - baade med den default sql og den som jeg aendrer runtime - saa det virker faktisk.

Det \"fede\" er at jeg skulle skrive dette for at faa det til at virke...

;-)

tak
22. august 2001 - 11:29 #16
Selv tak :o)
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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