16. november 2000 - 12:29Der 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.
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.
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\"
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
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:
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
Synes godt om
Ny brugerNybegynder
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.