Avatar billede sonos Nybegynder
16. juli 2004 - 07:35 Der er 84 kommentarer og
3 løsninger

Print resultat af søgning i formular

Hejsa,

Jeg har en formular med nogle søge felter og et felt til at vise resultaterne når man har trukket på søg knappen. Jeg vil nu gerne oprette en knap som udskriver resultatet af søgningen og kun det. Den eneste måde jeg har kunne finde, er at trykke på print knappen i menu linien, men den udskriver alt i formularen også designet,søgefelter osv. men jeg skal kun udskrive resultatet af søgningen. Det er også et problem hvis der er rigtig mange poster, så udskriver den jo kun det der er på skærmen. er der nogen der kan hjælpe med det her.

Mvh  Sonos
Avatar billede jensen363 Forsker
16. juli 2004 - 07:46 #1
Opret en rapport som benytter de samme kriterier som formularen, her kan du nemmere styre hvad output er.

Alternativt : DoCmd.RunCommand acCmdPrintPreview

Du kan på felternes egenskaber angive om de skal medtages på udskrift eller ej (egenskaben Vises)
Avatar billede jensen363 Forsker
16. juli 2004 - 07:56 #2
Eventuelt læs svarene i 

http://www.eksperten.dk/spm/519852
Avatar billede sonos Nybegynder
16. juli 2004 - 08:05 #3
Hej Jensen363,

det med "Du kan på felternes egenskaber angive om de skal medtages på udskrift eller ej (egenskaben Vises)" er rigtig godt men kan man få den til at udskrive alle posterne den finde ved søgningen, jeg har prøvet nu og den tager kun dem der vises i vinduet, altså ikke dem der ligger under, som man kan se ved at køre ned med scrollbaren. kan man lavet det så den udskriver det hele??
Avatar billede jensen363 Forsker
16. juli 2004 - 08:14 #4
Desværre ikke med DoCmd.RunCommand acCmdPrintPreview ... det er kun aktuel visning som udskrives med denne funktion. Bedste løsning er oprettelse af en rapport på baggrund af dine søgekriterier.
Avatar billede terry Ekspert
16. juli 2004 - 08:18 #5
Question was ".....Jeg vil nu gerne oprette en knap som udskriver resultatet af søgningen ..."

It all depends on how you are "filtering" your result. If you are using the forms filter then you can carry this over to the report.

Docmd.OpenReport "ReportName", acViewNormal,,Me.filter
Avatar billede sonos Nybegynder
16. juli 2004 - 08:19 #6
Kan man godt lave en rapport ud fra en formular, da det jo er der søgekriterierne bliver tastet ind?
Avatar billede terry Ekspert
16. juli 2004 - 08:19 #7
If you are using the forms record source then you will need to use the "WHERE ..." part of the SQL but without "WHERE"
Avatar billede terry Ekspert
16. juli 2004 - 08:22 #8
In the on click eenetIn the code which opens the report you need to add me.filter to the WhereCondition paramater of the OpenReport
Avatar billede jensen363 Forsker
16. juli 2004 - 08:23 #9
Morning Terry c",)

sonos > resultatet i din formular bygger vel på en forespørgsel, med de pågøldende filter-kriterier ... du kan så bygge rapporten på selvsamme forespørgsel
Avatar billede sonos Nybegynder
16. juli 2004 - 08:23 #10
Hej Terry,

Nu bliver det lidt for indviklet for mig, men hvis du kan skrive det på dansk så kan det være det hjælper
Avatar billede sonos Nybegynder
16. juli 2004 - 08:26 #11
Hej jensen,

søgekriterierne bliver tastet ind i formularen
Avatar billede terry Ekspert
16. juli 2004 - 08:28 #12
I koden hvor du åbner rapporten, skal du tilføj

me.filter

som min eksempel viser

Hvordan filtrer du resultatet af søgningen?
Avatar billede sonos Nybegynder
16. juli 2004 - 08:32 #13
Nu er det ikke mig der har lavet formularen, jeg skulle "bare finde ud af hvordan man kunne printe.

koden til søgeknappen ser sådan ud:

Private Sub valgknap_Click()
               
        Dim tmp1 As String
       
        If valgst <> " " Then
        tmp1 = "SELECT sted.stat, almen.cirknr, tidnr.fradato, tidnr.tildato, tidnr.frakl, tidnr.tilkl,sted.rfc "
        tmp1 = tmp1 & "FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN tidnr ON almen.cirknr = tidnr.cirknr "
        tmp1 = tmp1 & "WHERE ((dato between tidnr.fradato AND tidnr.tildato) AND ((sted.stfork)=valgst)) "
        tmp1 = tmp1 & "ORDER BY sted.stat; "
        ElseIf valgfckmp <> " " Then
        tmp1 = "SELECT sted.stat, almen.cirknr, tidnr.fradato, tidnr.tildato, tidnr.frakl, tidnr.tilkl,sted.rfc "
        tmp1 = tmp1 & "FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN tidnr ON almen.cirknr = tidnr.cirknr "
        tmp1 = tmp1 & "WHERE ((dato between tidnr.fradato AND tidnr.tildato) AND ((sted.fc)=valgfckmp OR (sted.kmp)=valgfckmp)) "
        tmp1 = tmp1 & "ORDER BY sted.stat; "
        ElseIf valgrfc <> "RFC" Then
        tmp1 = "SELECT sted.stat, almen.cirknr, tidnr.fradato, tidnr.tildato, tidnr.frakl, tidnr.tilkl, sted.rfc, sted.fc,sted.kmp "
        tmp1 = tmp1 & "FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN tidnr ON almen.cirknr = tidnr.cirknr "
        tmp1 = tmp1 & "WHERE ((dato between tidnr.fradato AND tidnr.tildato) AND ((sted.rfc)=valgrfc)) "
        tmp1 = tmp1 & "ORDER BY sted.stat; "
        Else
        tmp1 = "SELECT sted.stat, almen.cirknr, opfoelg.fakfra, opfoelg.faktil, sted.rfc, sted.fc, sted.kmp "
        tmp1 = tmp1 & "FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN opfoelg ON almen.cirknr = opfoelg.cirknr "
        tmp1 = tmp1 & "WHERE ((dato between opfoelg.fakfra AND opfoelg.faktil) AND ((sted.rfc)= 'RFC Fa')) "
        tmp1 = tmp1 & "ORDER BY sted.stat; "
        End If
       
       
        Me![LstName].RowSource = tmp1
        Me![LstName].ColumnCount = 15
        Me![LstName].ColumnWidths = "3cm; 1,5cm; 2cm; 2,5cm; 2,5cm; 2cm"


End Sub

Kan i bruge det til noget
Avatar billede jensen363 Forsker
16. juli 2004 - 08:34 #14
I din forespørgsel henviser du til søgefeltet i formularen eksempelvis  :

  [Formularer]![frmSøgning]![cb_Result]

og så fremdeles
Avatar billede sonos Nybegynder
16. juli 2004 - 08:36 #15
Hej Jensen,

jeg har ikke noget forstand på VBA, så det er sort snak for mig. kan du forklare mig det på en anden måde :)
Avatar billede jensen363 Forsker
16. juli 2004 - 08:42 #16
Det er 4 forespørgsler ( alle startende med SELECT ) som giver resultatet af søgningerne, det er dem som skal isoleres til rapporten .... Terry >>> har du mere tid ... jeg skal på arbejdet c",)
Avatar billede terry Ekspert
16. juli 2004 - 08:44 #17
Prøv det here!

Du skal oprette en global variable med navn LastFilter
Global LastFilter as string



Derefter sakl du ændre lininen hvor du åbner rapporten

til noget i rettning af
Docmd.OpenReport "ReportName", acViewNormal,,LastFilter


Private Sub valgknap_Click()

Dim tmp1 As String
       
        If valgst <> " " Then
            tmp1 = "SELECT sted.stat, almen.cirknr, tidnr.fradato, tidnr.tildato, tidnr.frakl, tidnr.tilkl,sted.rfc "
            tmp1 = tmp1 & "FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN tidnr ON almen.cirknr = tidnr.cirknr "
            tmp1 = tmp1 & "WHERE "
        LastFilter = " ((dato between tidnr.fradato AND tidnr.tildato) AND ((sted.stfork)=valgst)) "
            'tmp1 = tmp1 & "ORDER BY sted.stat; "
        ElseIf valgfckmp <> " " Then
            tmp1 = "SELECT sted.stat, almen.cirknr, tidnr.fradato, tidnr.tildato, tidnr.frakl, tidnr.tilkl,sted.rfc "
            tmp1 = tmp1 & "FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN tidnr ON almen.cirknr = tidnr.cirknr "
            tmp1 = tmp1 & "WHERE "
        LastFilter = " ((dato between tidnr.fradato AND tidnr.tildato) AND ((sted.fc)=valgfckmp OR (sted.kmp)=valgfckmp)) "
            'tmp1 = tmp1 & "ORDER BY sted.stat; "
        ElseIf valgrfc <> "RFC" Then
            tmp1 = "SELECT sted.stat, almen.cirknr, tidnr.fradato, tidnr.tildato, tidnr.frakl, tidnr.tilkl, sted.rfc, sted.fc,sted.kmp "
            tmp1 = tmp1 & "FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN tidnr ON almen.cirknr = tidnr.cirknr "
            tmp1 = tmp1 & "WHERE "
        LastFilter = " ((dato between tidnr.fradato AND tidnr.tildato) AND ((sted.rfc)=valgrfc)) "
            'tmp1 = tmp1 & "ORDER BY sted.stat; "
        Else
            tmp1 = "SELECT sted.stat, almen.cirknr, opfoelg.fakfra, opfoelg.faktil, sted.rfc, sted.fc, sted.kmp "
            tmp1 = tmp1 & "FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN opfoelg ON almen.cirknr = opfoelg.cirknr "
            tmp1 = tmp1 & "WHERE "
        LastFilter = " ((dato between opfoelg.fakfra AND opfoelg.faktil) AND ((sted.rfc)= 'RFC Fa')) "
            'tmp1 = tmp1 & "ORDER BY sted.stat; "
        End If
       
       
        Me![LstName].RowSource = tmp1 & LastFilter
        Me![LstName].ColumnCount = 15
        Me![LstName].ColumnWidths = "3cm; 1,5cm; 2cm; 2,5cm; 2,5cm; 2cm"


End Sub
Avatar billede terry Ekspert
16. juli 2004 - 08:48 #18
oops!

De sidste tre linere

Me![LstName].RowSource = tmp1 & LastFilter & " ORDER BY sted.stat;"
Me![LstName].ColumnCount = 15
Me![LstName].ColumnWidths = "3cm; 1,5cm; 2cm; 2,5cm; 2,5cm; 2cm"
16. juli 2004 - 08:50 #19
Hvis du bare vil have resultatet af tmp1 (SQL'en) ud på en udskrift, kan du gøre det således:


Private Sub valgknap_Click()
               
        Dim tmp1 As String
        On Error Resume Next
        Dim db As Database
        Dim qdef As QueryDef
       
        If valgst <> " " Then
        tmp1 = "SELECT sted.stat, almen.cirknr, tidnr.fradato, tidnr.tildato, tidnr.frakl, tidnr.tilkl,sted.rfc "
        tmp1 = tmp1 & "FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN tidnr ON almen.cirknr = tidnr.cirknr "
        tmp1 = tmp1 & "WHERE ((dato between tidnr.fradato AND tidnr.tildato) AND ((sted.stfork)=valgst)) "
        tmp1 = tmp1 & "ORDER BY sted.stat; "
        ElseIf valgfckmp <> " " Then
        tmp1 = "SELECT sted.stat, almen.cirknr, tidnr.fradato, tidnr.tildato, tidnr.frakl, tidnr.tilkl,sted.rfc "
        tmp1 = tmp1 & "FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN tidnr ON almen.cirknr = tidnr.cirknr "
        tmp1 = tmp1 & "WHERE ((dato between tidnr.fradato AND tidnr.tildato) AND ((sted.fc)=valgfckmp OR (sted.kmp)=valgfckmp)) "
        tmp1 = tmp1 & "ORDER BY sted.stat; "
        ElseIf valgrfc <> "RFC" Then
        tmp1 = "SELECT sted.stat, almen.cirknr, tidnr.fradato, tidnr.tildato, tidnr.frakl, tidnr.tilkl, sted.rfc, sted.fc,sted.kmp "
        tmp1 = tmp1 & "FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN tidnr ON almen.cirknr = tidnr.cirknr "
        tmp1 = tmp1 & "WHERE ((dato between tidnr.fradato AND tidnr.tildato) AND ((sted.rfc)=valgrfc)) "
        tmp1 = tmp1 & "ORDER BY sted.stat; "
        Else
        tmp1 = "SELECT sted.stat, almen.cirknr, opfoelg.fakfra, opfoelg.faktil, sted.rfc, sted.fc, sted.kmp "
        tmp1 = tmp1 & "FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN opfoelg ON almen.cirknr = opfoelg.cirknr "
        tmp1 = tmp1 & "WHERE ((dato between opfoelg.fakfra AND opfoelg.faktil) AND ((sted.rfc)= 'RFC Fa')) "
        tmp1 = tmp1 & "ORDER BY sted.stat; "
        End If
       
       
        Me![LstName].RowSource = tmp1
        Me![LstName].ColumnCount = 15
        Me![LstName].ColumnWidths = "3cm; 1,5cm; 2cm; 2,5cm; 2,5cm; 2cm"

        Set db = CurrentDb
        DoCmd.DeleteObject acQuery, "tmp"
        Set qdef = db.CreateQueryDef("tmp", tmp1)
        DoCmd.OpenQuery "tmp", acViewPreview

End Sub


Metoden kræver en reference til "Microsoft DAO 3.x Object Library", som sættes fra VBA-editoren i menuen Tools->references

/Thomas
16. juli 2004 - 08:51 #20
Eller blot lave en ny knap, som har denne kode:

    On Error Resume Next
    Dim db As Database
    Dim qdef As QueryDef
    Set db = CurrentDb
    DoCmd.DeleteObject acQuery, "tmp"
    Set qdef = db.CreateQueryDef("tmp", Me![LstName].RowSource)
    DoCmd.OpenQuery "tmp", acViewPreview
Avatar billede sonos Nybegynder
16. juli 2004 - 08:54 #21
Hej terry,

øøhh, "Du skal oprette en global variable med navn LastFilter
Global LastFilter as string" der er jeg allerede stået af, jeg ved ikke hvad dette betyder :( så kan du skære det ud i "pap" så jeg måske kan forstå det
Avatar billede terry Ekspert
16. juli 2004 - 08:59 #22
OK, i toppen af formen hvor du viser resultatet af søgningen

skal du skriv

Dim LastFilter as String
Avatar billede terry Ekspert
16. juli 2004 - 09:10 #23
er det HELT sort?
Du kan send din database til mig

eksperten@NOSPAMsanthell.dk

% NOSPAM
Avatar billede sonos Nybegynder
16. juli 2004 - 09:54 #24
Hej Terry,

Jeg må ikke sende den til dig, ikke fordi den indeholder noget specielt vigtigt, men det er en firmapolitik. Men hvis du kan hjælpe med at få det foreslag jensen363 kom med, til at virke så er det det jeg skal bruge. det virker sådan at når jeg trykke på knappen så skal jeg indtaste søgekriteriet igen, så hvis man kan få den til at finde søgekriteriet i de felter som er der i forvejen, så er det helt perfekt, hans foreslag ser sådan ud :
Private Sub valgknap_Click()
               
        Dim tmp1 As String
        On Error Resume Next
        Dim db As Database
        Dim qdef As QueryDef
       
        If valgst <> " " Then
        tmp1 = "SELECT sted.stat, almen.cirknr, tidnr.fradato, tidnr.tildato, tidnr.frakl, tidnr.tilkl,sted.rfc "
        tmp1 = tmp1 & "FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN tidnr ON almen.cirknr = tidnr.cirknr "
        tmp1 = tmp1 & "WHERE ((dato between tidnr.fradato AND tidnr.tildato) AND ((sted.stfork)=valgst)) "
        tmp1 = tmp1 & "ORDER BY sted.stat; "
        ElseIf valgfckmp <> " " Then
        tmp1 = "SELECT sted.stat, almen.cirknr, tidnr.fradato, tidnr.tildato, tidnr.frakl, tidnr.tilkl,sted.rfc "
        tmp1 = tmp1 & "FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN tidnr ON almen.cirknr = tidnr.cirknr "
        tmp1 = tmp1 & "WHERE ((dato between tidnr.fradato AND tidnr.tildato) AND ((sted.fc)=valgfckmp OR (sted.kmp)=valgfckmp)) "
        tmp1 = tmp1 & "ORDER BY sted.stat; "
        ElseIf valgrfc <> "RFC" Then
        tmp1 = "SELECT sted.stat, almen.cirknr, tidnr.fradato, tidnr.tildato, tidnr.frakl, tidnr.tilkl, sted.rfc, sted.fc,sted.kmp "
        tmp1 = tmp1 & "FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN tidnr ON almen.cirknr = tidnr.cirknr "
        tmp1 = tmp1 & "WHERE ((dato between tidnr.fradato AND tidnr.tildato) AND ((sted.rfc)=valgrfc)) "
        tmp1 = tmp1 & "ORDER BY sted.stat; "
        Else
        tmp1 = "SELECT sted.stat, almen.cirknr, opfoelg.fakfra, opfoelg.faktil, sted.rfc, sted.fc, sted.kmp "
        tmp1 = tmp1 & "FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN opfoelg ON almen.cirknr = opfoelg.cirknr "
        tmp1 = tmp1 & "WHERE ((dato between opfoelg.fakfra AND opfoelg.faktil) AND ((sted.rfc)= 'RFC Fa')) "
        tmp1 = tmp1 & "ORDER BY sted.stat; "
        End If
       
       
        Me![LstName].RowSource = tmp1
        Me![LstName].ColumnCount = 15
        Me![LstName].ColumnWidths = "3cm; 1,5cm; 2cm; 2,5cm; 2,5cm; 2cm"

        Set db = CurrentDb
        DoCmd.DeleteObject acQuery, "tmp"
        Set qdef = db.CreateQueryDef("tmp", tmp1)
        DoCmd.OpenQuery "tmp", acViewPreview

End Sub
16. juli 2004 - 09:58 #25
Det var vist mig, som kom med det forslag, og ikke Jensen363 ;o)

Jeg ville bare lave en ny knap og lægge denne kode på:

    On Error Resume Next
    Dim db As Database
    Dim qdef As QueryDef
    Set db = CurrentDb
    DoCmd.DeleteObject acQuery, "tmp"
    Set qdef = db.CreateQueryDef("tmp", Me![LstName].RowSource)
    DoCmd.OpenQuery "tmp", acViewPreview

Derved kan du vælge at udskriv resultatet, hvis du vil.

/Thomas
Avatar billede sonos Nybegynder
16. juli 2004 - 09:59 #26
pis, jeg så bare slutningen på navnet "sen" undskyld
16. juli 2004 - 10:00 #27
hehem det betyder nu ikke det store...bare du får det til at virke :o)
Avatar billede sonos Nybegynder
16. juli 2004 - 10:00 #28
Hej thomas,

Hvor skal jeg sætte din kode ind??
16. juli 2004 - 10:02 #29
Lav en ny kommandoknap->højreklik på den og vælge "generer hændelsesprocedure" og derefter kodegenerator.

Nu er du i VBA-editoren og indsætter koden mellen de linier, som står der allerede.

Husk det med referencen: menuen Tools->references og find "Microsoft DAO 3.x object Library"
Avatar billede sonos Nybegynder
16. juli 2004 - 10:05 #30
OK, den kommer op med et vindue hvor jeg skal taste kriterie igen, kan man ikke undgå det?
Avatar billede terry Ekspert
16. juli 2004 - 10:09 #31
another method!

DoCmd.OpenReport "YourReport", acViewDesign
Reports("YourReport").RecordSource = Me![LstName].RowSource
DoCmd.Close acReport, "YourReport", acSaveYes
DoCmd.OpenReport "YourReport"
16. juli 2004 - 10:12 #32
Hmm, det gør den vel ikke, når du klikker på valgknap-knappen?

Ideen er, at den blot tager den SQL (forespørgsel) som du har lagt på din listboks og generere en ny forespørgsel, som så udskrives.
Så hvis din listboks virker, så burde den nye knap også virker.

Hvad spørger den helt præcist om?
Avatar billede sonos Nybegynder
16. juli 2004 - 10:13 #33
Hej Terry,

jeg har ikke noget rapport der bliver åbnet, jeg har kun formularen med søgeresultatet,
Avatar billede sonos Nybegynder
16. juli 2004 - 10:16 #34
der er 4 kriteriefelter, hvis jeg har noget i 2 af dem, så spørger den nye knap om de 2 igen og det samme hvis jeg kun har i 1 af dem så spørger den kun om den ene
Avatar billede terry Ekspert
16. juli 2004 - 10:21 #35
Docmd.openform "YourForm"

Forms!YourForm.recordsource = Me![LstName].RowSource
16. juli 2004 - 10:21 #36
hmm, prøv engang at indsætte 2 linier kode, således at koden nu ser således ud:

    debug.Print Me![LstName].RowSource
    Exit sub
    On Error Resume Next
    Dim db As Database
    Dim qdef As QueryDef
    Set db = CurrentDb
    DoCmd.DeleteObject acQuery, "tmp"
    Set qdef = db.CreateQueryDef("tmp", Me![LstName].RowSource)
    DoCmd.OpenQuery "tmp", acViewPreview

-Kør formularen
-klik først på valgknap'en og derefter på udskrift-knappen (bare én gang).
-Tryk Ctrl+G og aflæs SQL'en i Immidiate-vinduet (formentlig nederst i VBA-editoren)
-Copy/paste SQL'en her
Avatar billede terry Ekspert
16. juli 2004 - 10:25 #37
hvis du IKKE har en enden form eller rapport, så var det måske en ide at få en lavet!

Ellers kan du udskriv formen du er på.

Hvis di tilføje en knap til formen kan du bruge wizarden. Man kan vælge at udskriv formen men wizarden.
16. juli 2004 - 10:30 #38
terry-> resultatet af den genererede SQL ligger jo på en listboks, som ønskes udskrevet. Hvis listen er længere end der kan vises på skærmen, så duer det jo ikke at udskrive formen.
Det er derfor, jeg foreslog, at man blot genererede en ny forespørgsel ud fra SQL'en, som lå på listboksen, og udskrev den....
Avatar billede sonos Nybegynder
16. juli 2004 - 10:33 #39
den skriver:

SELECT sted.stat, almen.cirknr, tidnr.fradato, tidnr.tildato, tidnr.frakl, tidnr.tilkl, sted.rfc, sted.fc,sted.kmp, sted.landsdel FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN tidnr ON almen.cirknr = tidnr.cirknr WHERE ((dato between tidnr.fradato AND tidnr.tildato) AND ((sted.rfc)=valgrfc)) ORDER BY sted.stat;
16. juli 2004 - 10:39 #40
mystisk, jeg har lige afprøvet et lignende eks. på min egen maskine uden problemer.

Da du fik fejlen før (altså at den spurgte om krterier igen), så havde du trykket på valgknap'en først, ikke?

Hvordan ser listboksens egenskab "Rækkekilde" (rowsource) ud i designvisning?
Avatar billede sonos Nybegynder
16. juli 2004 - 10:50 #41
Ja jeg havde lave søgningen først, og der var de kriterier den ville have igen.

der står Tabel/forespørgsel
Avatar billede sonos Nybegynder
16. juli 2004 - 10:51 #42
ups,

den ser sådan ud:

SELECT sted.stat, almen.cirknr, opfoelg.fakfra, opfoelg.faktil, sted.rfc, sted.fc, sted.kmp FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN opfoelg ON almen.cirknr = opfoelg.cirknr WHERE ((dato between opfoelg.fakfra AND opfoelg.faktil) AND ((sted.rfc)= 'RFC Fa')) ORDER BY sted.stat;
16. juli 2004 - 11:03 #43
hmm...ok, så lad os gribe det lidt anderledes an.

Prøv at flytte linien
Dim tmp1 As String
op i toppen (lige under Option Compare Database og Option Explicit)


Herefter kan koden på udskrift-knappen ændres til:

On Error Resume Next
    Dim db As Database
    Dim qdef As QueryDef
    Set db = CurrentDb
    DoCmd.DeleteObject acQuery, "tmp"
    Set qdef = db.CreateQueryDef("tmp", tmp1)
    DoCmd.OpenQuery "tmp", acViewPreview
Avatar billede sonos Nybegynder
16. juli 2004 - 11:09 #44
Den kommer stadig med det samme, den vil have kriteriet igen
16. juli 2004 - 11:14 #45
Prøv at kopiere SQL'en ind i en ny forespørgsel:

SELECT sted.stat, almen.cirknr, opfoelg.fakfra, opfoelg.faktil, sted.rfc, sted.fc, sted.kmp FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN opfoelg ON almen.cirknr = opfoelg.cirknr WHERE ((dato between opfoelg.fakfra AND opfoelg.faktil) AND ((sted.rfc)= 'RFC Fa')) ORDER BY sted.stat;

Spørger den stadig om kriterier?
16. juli 2004 - 11:16 #46
Og har den lavet en forespørgsel, som hedder tmp?
Avatar billede sonos Nybegynder
16. juli 2004 - 11:18 #47
ja den har lavet en forsp. der hedder tmp. SQL:

SELECT sted.stat, almen.cirknr, tidnr.fradato, tidnr.tildato, tidnr.frakl, tidnr.tilkl, sted.rfc, sted.fc, sted.kmp, sted.landsdel
FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN tidnr ON almen.cirknr = tidnr.cirknr
WHERE (((sted.rfc)=[valgrfc]) AND (([dato]) Between [tidnr].[fradato] And [tidnr].[tildato]))
ORDER BY sted.stat;
16. juli 2004 - 11:22 #48
og hvis du kører den?

Er det valgrfc, som den spørger efter? Eller er der også andre?
Avatar billede sonos Nybegynder
16. juli 2004 - 11:23 #49
ja så spørger den om de kriterier jeg har tastet ind i søgningen
16. juli 2004 - 11:38 #50
Jeg har tidligere gået ud fra, at alle felter i SQL'en var felter i tabellen. Men fejlen ligger åbenbart i, at SQL'en er skrevt til at referere til formularens felter, hvorfor man entel skal ændre referencen eller indsætte værdien eksakt.

Prøv at udskifte koden på valgknappen med denne og se om vi kommer nærmere:

Private Sub valgknap_Click()
               
        Dim tmp1 As String
       
        If valgst <> " " Then
            tmp1 = "SELECT sted.stat, almen.cirknr, tidnr.fradato, tidnr.tildato, tidnr.frakl, tidnr.tilkl,sted.rfc "
            tmp1 = tmp1 & "FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN tidnr ON almen.cirknr = tidnr.cirknr "
            tmp1 = tmp1 & "WHERE ((dato between tidnr.fradato AND tidnr.tildato) AND ((sted.stfork)='" & valgst & "')) "
            tmp1 = tmp1 & "ORDER BY sted.stat; "
        ElseIf valgfckmp <> " " Then
            tmp1 = "SELECT sted.stat, almen.cirknr, tidnr.fradato, tidnr.tildato, tidnr.frakl, tidnr.tilkl,sted.rfc "
            tmp1 = tmp1 & "FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN tidnr ON almen.cirknr = tidnr.cirknr "
            tmp1 = tmp1 & "WHERE ((dato between tidnr.fradato AND tidnr.tildato) AND ((sted.fc)='" & valgfckmp & "' OR (sted.kmp)='" & valgfckmp & "')) "
            tmp1 = tmp1 & "ORDER BY sted.stat; "
        ElseIf valgrfc <> "RFC" Then
            tmp1 = "SELECT sted.stat, almen.cirknr, tidnr.fradato, tidnr.tildato, tidnr.frakl, tidnr.tilkl, sted.rfc, sted.fc,sted.kmp "
            tmp1 = tmp1 & "FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN tidnr ON almen.cirknr = tidnr.cirknr "
            tmp1 = tmp1 & "WHERE ((dato between tidnr.fradato AND tidnr.tildato) AND ((sted.rfc)='" & valgrfc & "')) "
            tmp1 = tmp1 & "ORDER BY sted.stat; "
        Else
            tmp1 = "SELECT sted.stat, almen.cirknr, opfoelg.fakfra, opfoelg.faktil, sted.rfc, sted.fc, sted.kmp "
            tmp1 = tmp1 & "FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN opfoelg ON almen.cirknr = opfoelg.cirknr "
            tmp1 = tmp1 & "WHERE ((dato between opfoelg.fakfra AND opfoelg.faktil) AND ((sted.rfc)= 'RFC Fa')) "
            tmp1 = tmp1 & "ORDER BY sted.stat; "
        End If
       
       
        Me![LstName].RowSource = tmp1
        Me![LstName].ColumnCount = 15
        Me![LstName].ColumnWidths = "3cm; 1,5cm; 2cm; 2,5cm; 2,5cm; 2cm"


End Sub
Avatar billede sonos Nybegynder
16. juli 2004 - 11:39 #51
Hvis jeg lave en forespørgsel med sql:

SELECT sted.stat, almen.cirknr, opfoelg.fakfra, opfoelg.faktil, sted.rfc, sted.fc, sted.kmp FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN opfoelg ON almen.cirknr = opfoelg.cirknr WHERE ((dato between opfoelg.fakfra AND opfoelg.faktil) AND ((sted.rfc)= 'RFC Fa')) ORDER BY sted.stat;

spørger den kun om datoen
16. juli 2004 - 11:41 #52
Der undre mig, at den så stadig spørger om dato. Er Dato, fakfra og faktil ikke alle felter i tabellerne Opfoelg, sted eller almen?
Avatar billede sonos Nybegynder
16. juli 2004 - 11:41 #53
hvad skal der være i print knappen?
Avatar billede sonos Nybegynder
16. juli 2004 - 11:42 #54
hvad skal der være i printknappen? (sql)
16. juli 2004 - 11:43 #55
stadig det sidste forslag:

On Error Resume Next
    Dim db As Database
    Dim qdef As QueryDef
    Set db = CurrentDb
    DoCmd.DeleteObject acQuery, "tmp"
    Set qdef = db.CreateQueryDef("tmp", tmp1)
    DoCmd.OpenQuery "tmp", acViewPreview

og Dim tmp1 as String i toppen af modulet
Avatar billede sonos Nybegynder
16. juli 2004 - 11:46 #56
ok, nu spørger den kun om dato
16. juli 2004 - 11:48 #57
ok, vi nærmer os :o)

Er det "dato", den spørger om, eller er det faktil og fakfra?
Hvilken tabel ligger feltet dato i?
Avatar billede sonos Nybegynder
16. juli 2004 - 11:55 #58
den spørger om "dato"

jeg ved ikke hvilken tabel den kommer fra, men i forsp. tmp er "dato@ lavet sådan her:
Between [tidnr].[fradato] And [tidnr].[tildato]

så det kommer vel fra tidnr
Avatar billede terry Ekspert
16. juli 2004 - 12:04 #59
hvis den spørger den om dato, så er det fordi dato eksistere ikke! Men det undre mig, at din søge virker!
Avatar billede terry Ekspert
16. juli 2004 - 12:06 #60
Hvis du laver en query med SQL'en kan du se en felt med navnet dato?
16. juli 2004 - 12:06 #61
ja, det er netop også det, som undre mig!
Avatar billede sonos Nybegynder
16. juli 2004 - 12:07 #62
Hvis du laver en query med SQL'en kan du se en felt med navnet dato?

Ja
Avatar billede jensen363 Forsker
16. juli 2004 - 12:07 #63
Hold da op, ... 2 spørgsmål omhandlende det samme på 2 dage, som hver udløser over 50 kommentarer c",)
Avatar billede sonos Nybegynder
16. juli 2004 - 12:11 #64
Ok, jeg kan også godt leve med at man taster kriteriet ind igen, der er jo ikke det store arbejde. og da det ikke er mig der har lavet basen fra bunden, så kan jeg jo ikke hjælpe jer så godt.

så vi kan godt stoppe her, er det ok?

så deler jeg point mellem jer
16. juli 2004 - 12:11 #65
Hvis du åbner en af de 4 tabeller (almen, sted, tidnr eller opfoelg) hvilken en af dem ligger feltet dato så i?
(åh, hvor ville det være nemt, hvis man kunne få lov at se databasen i stedet for at skulle famle i blinde - nå, men det er jo reglerne ;o)
Avatar billede terry Ekspert
16. juli 2004 - 12:14 #66
16/07-2004 12:07:44 Kan du køre queryen uden fejl?
Avatar billede sonos Nybegynder
16. juli 2004 - 12:15 #67
Nej den spørger stadig efter dato
Avatar billede terry Ekspert
16. juli 2004 - 12:19 #68
Er der mere end en felt med navn dato?
Avatar billede sonos Nybegynder
16. juli 2004 - 12:20 #69
nej der er kun et
Avatar billede terry Ekspert
16. juli 2004 - 12:21 #70
Jeg har MEGET svært at tro, at din søge funktion virker me det SQL du viser her!
Avatar billede sonos Nybegynder
16. juli 2004 - 12:24 #71
SQL i forspørgelsen "tmp" ser sådan her ud:

SELECT sted.stat, almen.cirknr, tidnr.fradato, tidnr.tildato, tidnr.frakl, tidnr.tilkl, sted.rfc, sted.fc, sted.kmp
FROM (sted INNER JOIN almen ON sted.stfork = almen.stfork) INNER JOIN tidnr ON almen.cirknr = tidnr.cirknr
WHERE (((sted.rfc)='RFC FA') AND (([dato]) Between [tidnr].[fradato] And [tidnr].[tildato]))
ORDER BY sted.stat;
Avatar billede terry Ekspert
16. juli 2004 - 12:26 #72
Hvis IKKE den SQL du får fra tmp virker, så kan JEG ikke se, hvordan din søge kan virk!
Men nu må desvære meld fra!
Avatar billede terry Ekspert
16. juli 2004 - 12:27 #73
må jeg...
Avatar billede terry Ekspert
16. juli 2004 - 12:28 #74
Og hvis vi skal løse gåden, så kan du (uden at sige noget til chefen :o) )

16/07-2004 09:10:12
Avatar billede sonos Nybegynder
16. juli 2004 - 12:33 #75
LOL ja det kunne jeg, og jeg tror heller ikke det ville blive opdaget, men når nu der er regler omkring det....

men mange tak for hjælpen!! rigtig god weekend til jer alle sammen

mvh.

Sonos
16. juli 2004 - 12:36 #76
du kan gøre én ting...du kan lave en ny database, importere formularen samt de 4 tabeller.

Så kan du sende den til os (tj@makeiteasy.dk) uden at have sende "hele" databasen ;o)
Avatar billede sonos Nybegynder
16. juli 2004 - 12:41 #77
ja, ok. det prøver jeg om jeg kan finde ud af på mandag. jeg skal til møde nu.

Tak for hjælpen.
16. juli 2004 - 13:58 #78
øv, nu smuttede den eneste aktive 'spørgsmål-stiller' :o(
Avatar billede jensen363 Forsker
16. juli 2004 - 14:40 #79
Det må være ferien som er sat ind c",)
Avatar billede sonos Nybegynder
16. juli 2004 - 15:00 #80
Jeg kommer igen på mandag  :)
Avatar billede sonos Nybegynder
19. juli 2004 - 06:04 #81
Så har jeg sendt noget til jer
19. juli 2004 - 10:31 #82
Sendt retur....problemet var en slags 'omvendt' kriterie, hvor parameteren Dato stod som ny kolonne, mens kriteriet var 2 værdier fra de eksisterende tabeller (lidt svært at forklare ;)
Avatar billede sonos Nybegynder
19. juli 2004 - 10:35 #83
Ja, det virker.

Mange tak for hjælpen, Jeg deler lige lidt point ud til jer alle 3

Mvh.

Sonos
Avatar billede jensen363 Forsker
19. juli 2004 - 10:36 #84
Thomas fortjener alle point c",)
Avatar billede sonos Nybegynder
19. juli 2004 - 10:39 #85
ok, det er helt fint med mig.
19. juli 2004 - 10:46 #86
jamen så takker jeg mange gange :o)

Jeg ville nu gerne have delt pointene med Jer andre...

IOU 1
Avatar billede jensen363 Forsker
19. juli 2004 - 10:50 #87
Terry er vist nok ret lige glad, og jeg selv stod af ret tidligt i forløbet ... så det er helt fortjent at du får alle point c",)
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