10. januar 2005 - 13:13Der er
26 kommentarer og 4 løsninger
Sende variabler fra VBA som kriterier til forespørgsel
Hej!
Problem : Ønsker at kunne sende variabler defineret i VBA til "kriterie-felterne" i en forespørgsel. Jeg har forsøgt mig med driis's forslag fra spm.92484, men jeg kan ikke få funktionen "idFunc" til at returnere andet end '0', selvom variablem "idVar" godt nok bliver tildelt en værdi fra min Fromular. - What is wrong?
Denne funktion er oprettet (ifølge spm.92484): Public Function idFunc() As Integer idFunc = idVar End Function
Jeg har oprettet en Form der indeholder teksbokse og rammer, hvor brugerne indtaster kriterierne til forespørgslen. Herefter skal man kunne trykke på en knap - og kriterierne fra min form skal sendes til "kriterie-felterne" i forespørgslen "qryTest" :
Private Sub Knap_Click() idVar = Me.Ramme4.Value '(kan returnere værdier 1,2 eller 3) MsgBox "IdVar = " & idVar MsgBox "IdFunc = " & idFunc DoCmd.OpenQuery "qryTest", acViewNormal End Sub
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Funktionen ligger i et modul... Jeg har nu tilføjet "public IdVar as Integer" til modulet. Og jeg har prøvet at kalde Sub'en på min form for "Public Sub" det hjælper heller ikke... Har I andre bud?
Jeg har lige været lidt væk fra den igen - men jeg har ikke kunnet få noget af det til at fungere... Det nemmeste er at refere direkte til formen, men hvordan får jeg så værdien "3" til i forespørgslen at returnere "blank" (intet kriterie) - med iif() ??
SELECT T1.*, T1.Kode FROM T1 WHERE (((IIf(IsNull([Forms]![Form1]![Frame5]),[Forms]![Form1]![Frame5],CInt([Forms]![Form1]![Frame5]))) Is Null)) OR (((T1.Kode)=IIf(IsNull([Forms]![Form1]![Frame5]),[Forms]![Form1]![Frame5],CInt([Forms]![Form1]![Frame5]))) AND ((IIf(IsNull([Forms]![Form1]![Frame5]),[Forms]![Form1]![Frame5],CInt([Forms]![Form1]![Frame5]))) Is Not Null));
Thomas, has one of us misunderstood what fogh wants?
If NO value is select (NULL) then isnt it supposed to return ALL? and if I understand your query corectly it doesnt, but maybe I'm getting tired after a Looo...ng day at work.
Terry, jeg tror, at du har misforstået det. Hvordan vil du bære dg ad med at sætte rammen til Null, når først du har haft klikket én gang? Det er når værdien 3 er valgt, at alle poster skal returneres!
Fogh, inden du går kold i alle disse indlæg, så mener jeg stadig bare, at du skal indsætte denne SQL i din forespørgsel og så kører den:
SELECT * FROM Dintabel WHERE [Forms]![DinFormular]![Ramme4]=IIf([Forms]![DinFormular]![Ramme4]=3,[Forms]![DinFormular]![Ramme4],[ID])
Hej Gutter! Tak for jeres indsats: Jeg har fået Thomas' løsning til at fungere - og vil se nærmere på Terry's inden længe... Kan I vente med point-tildelingen lidt endnu? (Det irriterer mig dog stadig at det er nødvendigt at have en form åben for at sende værdierne til forespørgslen)
with the solution I gave you do NOT need to have a form open. BUT you have to open the query from code. But if you dont have a form open then where is your frame?
Fogh-> Det behøver ikke nødvendigvis at være en form, du refererer til. Det kan også være en funktion eller en parameterværdi. Jeg foreslog kun formular-løsningen fordi du selv skrev, at det var nemmere og fordi det hele tager udgangspunkt i din ramme på formularen.
Hvis du hellere il bruge din funtkion, så skal den bare se således ud:
SELECT * FROM Dintabel WHERE idFunc()=IIf(idFunc()=3,idFunc(),[ID])
Undskyld mit smøleri - I er begge altid hjælpsomme
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.