Avatar billede juggalo Nybegynder
26. juli 2001 - 17:14 Der er 14 kommentarer og
1 løsning

sende værdier til forespørgsler

Jeg har en rapport som er lavet på en forespørgsel.

Forespørgslen beder om et id, hvilket man skal indtaste i en dialogboks som popper op, og udvælger derefter posten som svarer til id\'et.

Mit spørgsmål er; kan man lave en knap, i en formular, som automatisk kan sende et id til forespørgslen (og dermed rapporten)??

Og hvad hvis man gerne vil sende mere end 1 værdi til en forespørgsel?

PFT
Avatar billede driis Nybegynder
26. juli 2001 - 17:25 #1
Hvis du har værdien id gemt i en variabel i Visual Basic, kan du bare lade kommandoknappen åbne rapporten. I forespørgslen, under kriterier for id, angiver du en Visual Basic funktion, f.eks. idFunc. Denne funktion skal blot returnere værdien af variablen, som indeholder dit id, denne kunne f.eks. hedde idVar - koden for funktionen ville så være, idet jeg går ud fra, at id er et tal:

Public Function idFunc As Long
  idFunc = idVar
End Function

Avatar billede driis Nybegynder
26. juli 2001 - 17:26 #2
Grunden til dette, er at du ikke kan referere til en variabel i forespørgslen, men du kan godt referere til en funktion.
Avatar billede juggalo Nybegynder
26. juli 2001 - 17:33 #3
Okay, lyder rimeligt nok, men hvordan (og hvor) laver jeg så variablen i VB?

Jeg kunne f.eks. godt tænke mig at den kunne udskrive den aktuelle post, altså på en eller anden måde hente id\'et fra et felt (som vises i formularen).
Avatar billede driis Nybegynder
26. juli 2001 - 17:44 #4
Hvis du f.eks. har en tekstboks på din formular, som hedder idText, og som indeholder id, kan du bruge flg. kode under kommandoknappen:

idVar = Val(idText.Text)
DoCmd.OpenReport \"RapportensNavn\"

Nu har du tildelt \'idVar\' værdien i dit tekstfelt. Derefter åbner du rapporten. Når rapporten åbnes, køres forespørgslen, som automatisk kører funktionen. Funktionen returnerer så værdien af idVar til forespørgslen.
Avatar billede juggalo Nybegynder
26. juli 2001 - 17:55 #5
Hvordan angiver jeg en VB-funktion i kriterie feltet? (går ud fra at det er i designvisning for forespørgslen og i feltet \"kriterier\" under Id)
Avatar billede terry Ekspert
26. juli 2001 - 21:01 #6
juggalo> You can place a buutin on a from and then add a buuton using the wizard. You can then add one or more text boxes or combos for entering the information you want the report to show. Then alter the code so that it looks like this, you will need to alter the field names as necessary and also the report name.

    Dim stDocName As String
    Dim sFilter As String

    sFilter = \"1 \"
   
    If Not fldIsEmpty(Me.cboBy) Then
        sFilter = sFilter & \" AND TownID = \" & Me.cboBy
    End If
       
    If Not fldIsEmpty(Me.txtYear) Then
        sFilter = sFilter & \" AND årstal = \" & Me.txtYear
       
    End If

   

    stDocName = \"rptYourReport\"
    DoCmd.OpenReport stDocName, acPreview, , sFilter

Then add this function, preferably in a module.
It just checks to see if you have enetred anything.

Function fldIsEmpty(fld As Variant)

    If IsNull(fld) Or fld = \"\" Or IsNull(Len(fld)) Then
        fldIsEmpty = True
    Else
        fldIsEmpty = False
    End If
   
End Function



Avatar billede terry Ekspert
26. juli 2001 - 21:04 #7
buutin  = button

In the example I have a text box and a combo box. I can enter information into any of the fields. When the button to print the report is pressed I check to see if data has been entered, if so I build a filter for the report.
Avatar billede terry Ekspert
27. juli 2001 - 08:33 #8
juggalo> In the answer that I gave you will need to remove the dialog box which opens for entering your ID, all this is done through the form now. The report now filteres out what you want. If you use the query in other forms and reports then you will need to make a copy of it.
Avatar billede terry Ekspert
27. juli 2001 - 11:47 #9
juggalo> send your dB to me and I will make an example for you! dkTeBrSa@Europe.lego.com
Avatar billede fdata Forsker
27. juli 2001 - 16:51 #10
Du kunne også bare skrive referencen direkte i kriterie feltet, altså:
=Forms!Formularnavn!Feltnavn
(f.eks. =Forms!Kundeform!ID)


Avatar billede terry Ekspert
28. juli 2001 - 09:04 #11
fdata> am I not right in saying that if he does that and doesnt eneter data IE Forms!Formularnavn!Feltnavn = \"\" then it sgoing to look for those that are \"\"?
Avatar billede fdata Forsker
28. juli 2001 - 13:39 #12
>Terry
You\'re right, but as he wrote: \"Jeg kunne f.eks. godt tænke mig at den kunne udskrive den aktuelle post, altså på en eller anden måde hente id\'et fra et felt (som vises i formularen)\" I assumed that the field was valid.

If that is not the case a simple
  If IsNull(Me.Feltnavn) then Exit Sub
in the buttons OnClick of course would do the job.
Avatar billede terry Ekspert
29. juli 2001 - 14:05 #13
\"Og hvad hvis man gerne vil sende mere end 1 værdi til en forespørgsel?\"
Avatar billede fdata Forsker
30. juli 2001 - 10:21 #14
Again assuming that all values are valid he just repeats the pattern in the query.

Yes, I know: \"How do we handle combinations of empty and non-empty fields?\" I don\'t think that this is the case for juggalo. Should I be proven wrong - then (you win again) a filter would be a neat solution.
Avatar billede terry Ekspert
31. juli 2001 - 10:13 #15
juggalo> hows it going?
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