Avatar billede brianringsted Nybegynder
27. januar 2005 - 20:27 Der er 6 kommentarer

Søgeformular

Jeg har lavet en søgeformular med 2 kombinationsbokse den ene med årstal, og den anden med måned. jeg kan vælge kombineret søgning og måned/årstal. Men når jeg vælger årstal og trykker på min ok knap så kommer der en meddelse indtast årstal, når jeg så indtaster årstallet så åbner min underformular. Men hvis jeg ikke
taster årstallet så kommer der en fejlmeddelse .

Jeg vil bare have at når jeg vælger årstallet i kombinationsboksen ok trykker ok så kommer resultatet frem i min underformular. Hvordan undgår jeg at jeg skal indtaste perameter værdi før at jeg kan få resultatet når jeg trykker på ok knappen.
27. januar 2005 - 20:30 #1
jeg tror, at du må fortælle lidt mere om din metode. Kan du vise koden? Eller sker det hele i en forespørgsel?
Avatar billede madschristensen Nybegynder
28. januar 2005 - 08:31 #2
Jeg gir det lige et forsøg. Jeg har en lignende funktion der fungerer således:
Min forespørgsel har som kriterier bl.a. to functioner (placeret i et modul) der returnerer henholdsvist måned og år. I min formular har jeg så lavet to dropdown felter (Måned og år) og en kommandoknap. Hvis ikke feltet er udfyld (hvad enten der er måned eller år eller begge) udfyldes de med p.t. valgte dato. Til sidst laver jeg en requery. Nedenstående kode er kun fra formularen. Gir det mening?

If IsNull(Ch_måned) Then
    Ch_måned = Parametre.m_Måned
End If
If IsNull(ch_år) Then
    ch_år = Parametre.m_År
End If
Parametre.m_Måned = CLng(Ch_måned.Value)
Parametre.m_År = CLng(ch_år.Value)
Me.Requery
Me.Refresh
RunTrough_Colors
Avatar billede Slettet bruger
28. januar 2005 - 12:55 #3
Hvis din underformular er styret af en forespørgsel, hvor der indgår årstal, måned og din søgning. Så gør dine to kombinationsbokse i hovedformularen, ubundne. Kalder den ene årstal og den anden for måned. Så går du i egenskaber for underformularen og skriver ved underordnedefelter/overordnedefelter: årstal;måned
Avatar billede brianringsted Nybegynder
29. januar 2005 - 14:36 #4
på min ubundne kombinationsboks årstal er min rækkekildetype:værdiliste
og rækkekilden er:2000;2001;2002;2003;2004;2005;2006;2007;2008;2009;2010

ligeledes er rækkekilden:1;January;2;February;3;March;4;April;5;May;6;June;7;July;8;August;9;September;10;October;11;November;12;December; på den ubundne
kombinations måned.

Jeg har en ok knap, og en nulstil.

min søgeformular har en gruppeboks hvor jeg har mulighed for en kombineret søgning , og måned/år efter den største fisk.

Når jeg sætter et hak ved måned/år så kan jeg selfølig vælge et årstal, eller en måned for at få oplyst den største fisk fanget ud fra et af disse valg.

Det er ud fra forspørgelser at jeg får resultatet i min underformular.

her er thomas jeppesens kode som er ændret lidt så den også virker med måned og årstal.

Dim SQLStr As String
    Dim Ctrl As Control
   
    For Each Ctrl In Screen.ActiveForm
        Select Case Ctrl.Tag
            Case "Tekst"
                If Ctrl <> "" Then
                    SQLStr = SQLStr & "[" & Mid(Ctrl.Name, 4) & "] = '" & Ctrl & "' And "
                End If
            Case "Fritekst"
                If Ctrl <> "" Then
                    SQLStr = SQLStr & "[" & Mid(Ctrl.Name, 4) & "] Like '*" & Replace(Ctrl, "'", "?") & "*' And "
                End If
            Case "Tal"
                If Ctrl <> "" Or Not IsNull(Ctrl) Then
                    SQLStr = SQLStr & "[" & Mid(Ctrl.Name, 4) & "] = " & Ctrl & " And "
                End If
            Case "Dato"
                If Ctrl <> "" Or Not IsNull(Ctrl) Then
                    SQLStr = SQLStr & "[" & Mid(Ctrl.Name, 4) & "] = #" & Format(Ctrl, "yyyy-mm-dd") & "# And "
                End If
        End Select
    Next Ctrl
    If SQLStr <> "" Then
        SQLStr = Left(SQLStr, Len(SQLStr) - 5)
    End If
    GetFilter = SQLStr
End Function

Public Function AktiverFilter(F As Form)
'***********************************************************************************************
'  Denne kode er udviklet af Thomas Jepsen, 2000
'  Dele eller hele koden må frit benyttes i applikationer, så længe kildeangivelse er bevaret
'  Besøg www.makeiteasy.dk eller skriv til tj@makeiteasy.dk,
'  hvis der opstår fejl eller spørgsmål, eller du har brug for yderligere assistance
'***********************************************************************************************
       
    Dim SQLStr As String
    SQLStr = GetFilter
    If Len(SQLStr) = 0 Then
        F.FilterOn = False
    Else
        F.filter = SQLStr
       
        F.FilterOn = True
    End If
End Function


Her er koden ved klik på ok knappen.

Private Sub Kommandoknap3_Click()
Dim year As Variant, Month As Variant

    Select Case Me.fmSearchType
   
        Case 1
            Me.frmSøgningSub.Form.RecordSource = "FSP fangster"
       
        Case 2
            year = Me.cboÅr
            Month = Me.cboMåned
           
            Kommandoknap4_Click
           
            Me.cboÅr = year
            Me.cboMåned = Month
           
            Me.frmSøgningSub.Form.RecordSource = "FSP Largest Fish"
           
    End Select

    Me.frmSøgningSub.Visible = True
    AktiverFilter (Form!frmSøgningSub.Form)
   
    GetAntal
   
Nustil knappen.

Private Sub Kommandoknap4_Click()
Dim Ctrl As Control
For Each Ctrl In Me

    If Ctrl.Name = "txtTotal" Or Ctrl.Name = "txtAntal" Then
   
    'Do nothing
    Else
        If Ctrl.ControlType = acTextBox Then Ctrl = Null
        If Ctrl.ControlType = acComboBox Then Ctrl = Null
    End If
Next Ctrl

Me.frmSøgningSub.Visible = False

GetAntal
End Sub


Egenskaber i selve søgeformularen.

Private Sub Form_Open(Cancel As Integer)
Dim i As Integer

    'Me.frmSøgningSub.Form.RecordSource = "FSP fangster"
   
    Me.cboMåned.RowSource = ""
    For i = 1 To 12
       
        Me.cboMåned.RowSource = Me.cboMåned.RowSource & i & ";" & MonthName(i) & ";"
       
    Next i

End Sub
Avatar billede brianringsted Nybegynder
29. januar 2005 - 14:37 #5
men når jeg har valgt et årstal i den ubundne kombinationsboks og trykker ok, så kommer meddelsen indtast årstal.
01. marts 2005 - 11:02 #6
Brian,

Du skal sikre dig, at din komboboks hedder det rigtige:
Hvis feltet hedder "Årstal" i tabellen, skal din komboboks hedder "søgÅrstal" og have egenskaben Mærke sat til "Tal"

Det lyder som, at det er det, som er fejlen.
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