Avatar billede dansd Nybegynder
16. november 2000 - 12:29 Der er 6 kommentarer og
1 løsning

Parametre fra Access til MSSQL

Vi vil bruge Access som frontend til MSSQL og i den forbindelse, er det nødvendigt at sende aktuelle parametre til de oprettede stored procedures i MSSQL. Man kan selvfølgeligt skrive dem direkte i en videregivelsesforespørgsel (f.eks. \"execute SP_Analyse 40\"), men dette er ikke hensigtsmæssigt som brugerflade. Det skal være muligt at klikke på en knap og dermed overføre data fra et felt i Access til MSSQL-serverens stored procedure.
Hvordan gør jeg det? Jeg gå ud fra, at der skal skrives noget VB-kode, og et eksempel ville være dejligt.

DanSD
Avatar billede brian_d Nybegynder
16. november 2000 - 12:33 #1
Du skriver

\"Exec INV_06_Minimum @MinAmount = \" & Me.Minimum

Hvor @MinAmount er navnet på variablen der bruges på MSSQL

Brian_d :o)
Avatar billede brian_d Nybegynder
16. november 2000 - 13:04 #2
Er der nogen grund til at du afviser svaret?????
Avatar billede dansd Nybegynder
16. november 2000 - 13:06 #3
Hej Brian_d
Jeg er nok mere uøvet end du regner med, så der skal vel connect\'es til databasen inden jeg kan lave dette kald med parametre? Hvordan det? Jeg går udfra at det er Access-VB du bruger.
Avatar billede brian_d Nybegynder
16. november 2000 - 13:32 #4
Her er et lille eks.
Opret en videregivelsesforespørgsel med navnet \"PTQuery\" den behøver ikke at indeholde andet end select sætningen.

Her er vba koden

Dim db as database, qdf as querydef

Set Db = CurrentDb
Set qdf = Db.QueryDefs(\"PTQuery\")
qdf.Connect  \"ODBC;DSN=DATASQL;Description=DATASQL;SERVER=<ServerNavn>;APP=Microsoft® Access;DATABASE=<DatabaseNavn>;LANGUAGE=Dansk;Logintimeout=0\"

qdf.SQL = \"Exec INV_06_Minimum @MinAmount = \" & Me.<Feltnavn>
qdf.Execute

db.close

Dette skulle klare dine problemer.

Brian_d :o)
Avatar billede dansd Nybegynder
17. november 2000 - 12:08 #5
Jeg har fundet en anden løsning fra MS Dev. network som virker, men jeg vil meget gerne have dette til at virke også, da det ser lidt simplere ud. Nedenstående eksempel vil ikke udføre linien : qdf.execute.
Det er underordnet hvad der står som efterfølgende parametre. Har du en ide omhvorfor?


Dim db As Database, qdf As QueryDef
  Set db = CurrentDb
  Set qdf = db.QueryDefs(\"FS_param\")
  qdf.Connect = \"ODBC;DSN=fremavl;server=201.1.3.122;UID=fremavl;PWD=fremavl;
    DATABASE=fremavl; LANGUAGE=Dansk;Logintimeout=0\"
  qdf.SQL = \"Execute FS_analyse 40\"
  qdf.Execute
  db.Close

DanSD
Avatar billede brian_d Nybegynder
17. november 2000 - 12:26 #6
Når du exekverer: qdf.SQL = \"Execute FS_analyse 40\"
vil du få en fejl da SQL serveren ikke ved hvad \"40\" er for en parameter.
Hvis den stored procedure ser sådan her ud:

CREATE PROCEDURE FS_analyse @MinAmount int AS

    Truncate Table Temp_InvoiceMinimum
osv.

skal du skrive:


qdf.SQL = \"Exec FS_analyse @MinAmount = 40\"

Dette ksuller løse problemet

Brian_d :o)


Avatar billede dansd Nybegynder
21. november 2000 - 13:44 #7
Hej Brian_d
Tak for hjælpen, men fejlen lå i at man ikke kan bruge qdf.execute på en stored procedure. Følgende står i Access hjælpen :
Du har forsøgt at benytte metoden Execute sammen med en udvælgelsesforespørgsel. Metoden Execute er kun gyldig sammen med handlingsforespørgsler. I modsætning til handlingsforespørgsler indeholder udvælgelsesforespørgsler en SELECT-sætning og kan returnere poster.
Jeg har lavet et script der opretter en stored procedure og kører den i samme arbejdsgang og dermed er problemet omgået.
Med venlig hilsen
DanSD
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