Avatar billede kdkho Nybegynder
23. februar 2001 - 15:48 Der er 5 kommentarer og
1 løsning

Recordsource i formular = recordset

I forbindelse med at hente data fra en sql server har jeg følgende problem. Datatypen på sql serveren er numeric og i forbindelse med sammenkædning af tabellen til Access bliver denne konverteret til datatypen tekst. Dette betyder, at tal ikke kan vises med tusind skilletegn i en tekstboks på formularen. Problemet kan løses ved at bruge funktionen cast i en sql forespørgsel til serveren. Uheldigvis er denne funktion skåret væk i Access sql sprog, men den findes på sql serveren. Løsningen er derfor at sende en videregivelsesforespørgsel til sql serveren ved hjælp af et recordset, men jeg kan ikke finde ud af, at sætte resultatet af recordsettet = formularens recordsource. Det er muligt det ikke kan lade sig gøre, jeg ved det ikke. Hvis det ikke er muligt har du måske en anden løsning. Jeg har også forsøgt at oprette en videregivelsesforespørgsel i Access\'s forespørgelsesgitter med henvisning til formularens tekstfelter, men jeg kan ikke ramme den rigtige syntaks.
Avatar billede sblar Nybegynder
25. februar 2001 - 16:41 #1
Hvis jeg forstår dig ret, burde du kunne gøre følgende:
I formularens VedÅbning hændelse oprettes videregivelsesforespørgslen og derefter sættes fomens recordsouce til denne.

    Dim qdf As QueryDef

    Set qdf = CurrentDb.CreateQueryDef(\"TempFrsp\")
    qdf.Connect = \"din ConnectString\"

    Me.Recordsource = qdf

Alternativt kan du oprette videregivelsesforespørgslen som en lagret forespøgsel, v.h.a. forespørgselsgitteret, og basere din formular på denne.
Avatar billede kdkho Nybegynder
26. februar 2001 - 10:31 #2
Tak for din besked. I forbindelse med din beskrivelse får jeg det samme problem som jeg hele tiden har fået, at Me.recordsource ikke kan forenes med f.eks. ovennævnte qdf. Fejlmeddelelsen er at: Typerne ikke passer sammen.
Som beksrevet tidligere har jeg forsøgt med forespørgelsesgitteret, men i og med jeg har variabler i formularen som skal udfyldes, har jeg ikke kunnet finde den rigtige syntaks i forespørgelsesgitteret med henvisning til tekstfelterne i formularen. Håber du kan hjælpe mig med ovennævnte, helst den del med oprettelse af Querydef.

På forhånd tak.
     
Avatar billede sblar Nybegynder
26. februar 2001 - 11:05 #3
Prøv lige at sende din forespørgsel, (med Cast?) så kigger jeg på den. Hvad er det for øvrigt for en sql-server. Det lyder da underligt at en felttype skulle ændre sig fra numerisk til tekst.
Avatar billede kdkho Nybegynder
26. februar 2001 - 11:17 #4
Den fejl jeg får vedrører ikke selve forespørgelsen, men alene at ME.Recordsource ikke kan forenes med en Querydef. Jeg har i første omgang bare forsøgt at sende forespørgelsen uden en Cast og så vil jeg tilføkje dette senere. Årsagen til at Numeric bliver konverteret til tekst er, at Numeric som datatype ikke findes i Access. Det fremgår af SQL serverens dokumentation hvilke datatyper der bliver konverteret til hvad. Jeg prøver at skrive min kode her, så kan du måske bedre gennemskue hvor min eventuelle fejl er:


Dim qdf As QueryDef
Dim strSQLFind As String

Set qdf = CurrentDb.CreateQueryDef(\"TempForesp\")

qdf.Connect = \"ODBC;DATABASE=Test;UID=xxx;PWD=;DSN=SQLSERVER\"

qdf.SQL = strSQLFind

qdf.ReturnsRecords = True

Me.RecordSource = qdf

strSQLFind = \"SELECT a2 FROM Tabel\"
Avatar billede sblar Nybegynder
26. februar 2001 - 11:53 #5
OK nu er jeg med. Recordsource kræver et navn på forespørgslen og ikke en reference. Samtidig skal du initialisere din sql-streng inden du bruger query\'en. Sådan her:

Dim qdf As QueryDef
Dim strSQLFind As String

Set qdf = CurrentDb.CreateQueryDef(\"TempForesp\")

qdf.Connect = \"ODBC;DATABASE=Test;UID=xxx;PWD=;DSN=SQLSERVER\"

strSQLFind = \"SELECT a2 FROM Tabel\"
qdf.SQL = strSQLFind

qdf.ReturnsRecords = True

Me.RecordSource = \"TempForesp\"


Så skulle den være der!

Avatar billede kdkho Nybegynder
26. februar 2001 - 12:38 #6
Så er den hjemme. Tusind tak for din hjælp. Det var lige netop den del med at at initialisere min sql streng jeg ikke kunne gennemskue. Nu virer det også når jeg sender min cast til sql serveren. Jeg modtager nu et tal som jeg netop kan formatere som et tal og ikke som tekst.
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