[Vraag] Probleem Zoek Formulier

  • Onderwerp starter Onderwerp starter lilx
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

lilx

Gebruiker
Lid geworden
21 aug 2007
Berichten
47
hallo,

ik heb een formulier gemaakt dat dient als een zoek functie voor een andere formulier. de formulier werkt prima en het is veel meer handiger dan de zoekfunctie van acces zelf. alleen zit ik nu met een probleem dit ik niet heb kunnen oplossen en hopelijk kan het andtwoord hier krijgen.

nou het werkt als volgt. alle gegevens van een query worden in het "Zoek Formulier" gezet in een list box. zodra je klikt op een van de gegevens wordt er de optie gegeven om die gegeven te bewerken zodra dat wordt in gedrukt kom dit van pas,

Code:
Private Sub cmdEdit_Click()
On Error GoTo err_cmdEdit_Click
'Toont geselecteerde record op detail-formulier

    'Opbouw WHERE-clausule
    Dim strWhere As String
    ' user right checken
    Dim User As String
        
    'WHERE-clausule: op te vragen record moet gelijk zijn aan geselecteerde record.
    'strWhere = Me.lstSelection
    strWhere = "[WerknemerID] = " & Me.lstSelection
    
    'MsgBox (strWhere)
    
    'Check User Rights
    User = Forms!frmUSL.txtUSL
    
    If User = 1 Then
    DoCmd.OpenForm "HoofdForm", acNormal, , strWhere, acFormEdit, acDialog,
    Else
    'DoCmd.OpenForm "HoofdForm", acNormal, , strWhere, acFormEdit, acDialog,
    End If
        
err_cmdEdit_Click:
    MsgBox Err.Description
    Exit Sub
    End Sub

deze code werkt opzich prima alleen is het niet wat ik wil, want nu wodt de hoofdform gefilterd geopend, terwijl ik juist wil dat die alleen naar de record gaat en dat ik de mogelijkheid heb om nog naar alle andere gegevens (zoals bij de standaart zoek optie in acces)

hopelijk heb ik mijn probleem duidelijk gemaakt en kunnen jullie me helpen met de oplossing.
 
Hoeveel resultaten

Dat zou je kunnen doen door het formulier te openen zonder de where-clause mee te geven. Je kunt dan met een verwijzing naar het zojuist geopende formulier een zoekactie uitvoeren. Ik vraag me hierbij echter af of je altijd kunt voorspellen hoeveel resultaten voldoen aan je zoekactie. Wat moet er nu gebeuen als je meer dan 1 of juist helemaal niets vindt?
 
Dat zou je kunnen doen door het formulier te openen zonder de where-clause mee te geven. Je kunt dan met een verwijzing naar het zojuist geopende formulier een zoekactie uitvoeren. Ik vraag me hierbij echter af of je altijd kunt voorspellen hoeveel resultaten voldoen aan je zoekactie. Wat moet er nu gebeuen als je meer dan 1 of juist helemaal niets vindt?

als je in de listbox iemand ze record aanklikt dan zorgt the where-cause ervoor dat die de idnummer pakt en bij het openen van de nieuwe formulier gaat hij naar de idnummer. maar de probleem is nu hij filterd de formulier inplaats van alleen gaan er naar.

en zoals jij denk ik wel zal begrijpen in een tabel is er nooit een dubbel idnummer.
 
Gebruik het OpenArgs argument van DoCmd.Openform, en zoek dan in het te openen formulier met die waarde van OpenArgs het betreffende record.
Dus:
Code:
DoCmd.OpenForm "HoofdForm", acNormal, , , acFormEdit, acDialog,Me!lstSelection
En dan bij 'on open' gebeurtenis van het formulier HoofdForm:
Code:
Private Sub Form_Open(Cancel As Integer)
    If Nz(Me.OpenArgs) > 0 Then
        With Me.Recordset
            .FindFirst "WerknemerID=" & Me.OpenArgs
            If .NoMatch Then
                MsgBox "Geen records in deze selectie"
                Cancel = True
            End If
        End With
    End If
End Sub
 
dank je wel voor je andtwoord harry46. het werkt inderdaad en dat is al een hele voortgaan.
maar daarbij zijn een paar dingen die ik anders zou willen. en hopelijk kan jij mij daar ok bij helpen.

de zoek formulier is dus eingelijk een los formulier die bedoelt is voor hoofdform en de hoofdform staat dus altijd open. en wat er moet gebeuren is dat wanneer je in het zoek formulier op bewerken drukt zet hij focus op hoofdform en gaat naar de huidige record. die door de zoek formulier wordt gegeven. hopelijk is dit mogelijk in access en graag zou ik willen weten hoe ik dit moet realiseren.
 
Verwijzing naar het formulier

Dat kan door het stukje code uit het formulier te lichten en in het aanroepende formulier aan te roepen. Je zult dan de verwijzingen naar het huidige formulier, Me, moeten vervangen door het andere formulier, Forms!Hoofdform:

Code:
        With Forms!Hoofdform.Recordset
            .FindFirst "WerknemerID=" & Me!lstSelection
            If .NoMatch Then
                MsgBox "Geen records in deze selectie"
                Cancel = True
            End If
        End With
    End If
End Sub
 
Dat kan door het stukje code uit het formulier te lichten en in het aanroepende formulier aan te roepen. Je zult dan de verwijzingen naar het huidige formulier, Me, moeten vervangen door het andere formulier, Forms!Hoofdform:

Code:
        With Forms!Hoofdform.Recordset
            .FindFirst "WerknemerID=" & Me!lstSelection
            If .NoMatch Then
                MsgBox "Geen records in deze selectie"
                Cancel = True
            End If
        End With
    End If
End Sub

hallo,

dank je wel voor je andtwoord. maar ik begrijp niet helemaal wat je bedoelde want nu zie ik de code. maar waar moet ik het zetten. ik heb het in hoofdform geprobeert te plaatsen zowel als in de zoek formulier maar werkte niet. en bedacht me ook net ik heb nu in het huidige zoek formulier dit staan

Code:
 DoCmd.OpenForm "HoofdForm", acNormal, , strWhere, acFormEdit, acDialog,

nu dat hoofdform altijd open staat. moet ik natuurlijk geen openform gebruiken. ik hoop dat je het een beetje kan verduidelijk wat het process precies moet zijn want ik begin een beetje de kluts kwijt te raken, terwijl ik echt wil dat het werkt :(
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan