Vanuit een formulier een ander formulier openen met stlinkcriteria

Status
Niet open voor verdere reacties.

oosterbaan S S

Gebruiker
Lid geworden
13 mrt 2005
Berichten
128
Beste forumleden

Ik heb 2 formulieren: frm.'Belangstellenden' en frm. 'Klanten'

Met behulp van onderstaande code wil ik, als de postcode's van beide frm. overeenkomen, vanuit het frm. 'belangstellenden' het frm. 'klanten' openen en dan de betreffende record(s) uitfilteren. Als de postcode niet overeenkomt, moet er niets gebeuren.

Zoals de code nu is wordt ALTIJD het frm. klanten geopend, ook als er geen vergelijkbare postcode is. Dat is dus niet de bedoeling.
Overigens: als de postcode wel overeenkomt, wordt de betreffende record in het form. 'klanten' keurig gefilterd.

Concreet:
Hoe pas ik mijn code aan, zodat alleen bij een vergelijkbare postcode het frm. 'Klanten" wordt geopend

Dank voor jullie reacties:thumb:

Het vba:
Code:
Private Sub Postcode_AfterUpdate()
' Bericht weergeven als er de postcode overeenkomt met een postcode,
' die voorkomt in de tabel "Belangstellenden"

Dim stDocName As String
Dim stLinkCriteria As String
    stDocName = "belangstellenden"
    stLinkCriteria = "[postcode]= '" & Me.Postcode & "'"
    
If [Postcode] = Me.Postcode Then
msgbox "De postcode komt ook voor in de tabel 'Belangstellenden'" _
& vbCrLf & vbCrLf & "Controleer of de gegevens van de nieuwe 'klant' overeenkomen met de naw in 'Belangstellenden'" _
& vbCrLf & vbCrLf & "Indien positief, delete dan de record en sluit het formulier 'Belangstellenden weer' af", vbCritical, "bedrijf"
        DoCmd.OpenForm stDocName, acNormal, , stLinkCriteria, , acDialog
        Else
        DoCmd.CancelEvent
End If
End Sub
 
If [Postcode] = Me.Postcode

[postcode] wijst naar het veld Postcode in de recordset die op dit formulier (kalnten?) staat, Me.Postcode wijst daar ook naar. Dus de vergelijking [Postcode] = Me.Postcode levert altijd true op. Je zult dus moeten kijken naar het voorkomen van de postcode op het formulier klanten, maar omdat dit formulier niet geopend is gaat dat niet lukken. Je kunt het oplossen met een stukje VB - even uit m'n hoofd, dus er kan wel een typefoutje inzitten
Code:
dim rst as dao.recordset
dim strSQL as string
strSQL = "SELECT PostCode FROM TBL_Klanten WHERE PostCode='" & me.Postcode & "'"
set rst = currentdb.openrecordset(strsql)

if rst.recordcount <> 0 then     'dit is je nieuwe vergelijking
   'hier komt je code om het formulier te openen
end if

'en de variabelen even netjes opruimen
rst.close
set rst = nothing
 
Beste Rene,

Bedankt voor je reactie.
Met bijgaande code lukt het mij gedeeltelijk.
De code ziet nu wel vanuit het frm. 'klanten' dat er een vergelijkbare code in het frm. "belangstellenden" zit, en hij opent ook het frm. "Belangstellenden' alleen hij filtert nog niet de betreffende record uit.....

Ik hoop dat je me nog even verder kan helpen.
Bedankt:thumb:

code:

Code:
Private Sub Postcode_AfterUpdate()
 
Dim stDocName As String
Dim stLinkCriteria As String
Dim rst As DAO.Recordset
Dim strSQL As String
strSQL = "SELECT PostCode FROM belangstellenden WHERE PostCode='" & Me.Postcode & "'"
Set rst = CurrentDb.OpenRecordset(strSQL)
stDocName = "belangstellenden"


If rst.RecordCount <> 0 Then
    msgbox "De postcode komt ook voor in de tabel 'Belangstellenden'" _
    & vbCrLf & vbCrLf & "Controleer of de gegevens van de nieuwe 'klant' overeenkomen met de naw in 'Belangstellenden'" _
    & vbCrLf & vbCrLf & "Indien positief, delete dan de record en sluit het formulier 'Belangstellenden weer' af", vbCritical, "bedrijf"
         DoCmd.OpenForm stDocName, acNormal, , stLinkCriteria, , acDialog
Else
    DoCmd.CancelEvent
End If
rst.Close
Set rst = Nothing
End Sub
 
alleen hij filtert nog niet de betreffende record uit.....
Code:
DoCmd.OpenForm stDocName, acNormal, , stLinkCriteria, , acDialog

Voor jou allereerst de beste wensen voor 2008

Je moet nog wel even een waarde toekennen aan die stLinkCriteria, dit is nu namelijk een lege string. Het zal iets moeten zijn in de aard van
Code:
stLinkCriteria = "Postcode='" & me.Postcode & "'"

Als het formulier nu wordt geopend staat er in de linkcriteria bijvoorbeeld
Postcode='1000 AA' en dat wordt dan als filter gebruikt in het formulier.
 
Beste Rene
Een gelukkig nieuwjaar en dat we -hier op het forum- veel goede tips van jou (en anderen) mogen ontvangen.

Jouw raad opgevolgd en HET WERKT NU PERFECT:thumb::thumb:
Hartelijk dank>> ik kan weer verder

Hier nog even de juiste code
Code:
Private Sub Postcode_AfterUpdate()
 
Dim stDocName As String
Dim stLinkCriteria As String
Dim rst As DAO.Recordset
Dim strSQL As String
strSQL = "SELECT PostCode FROM belangstellenden WHERE PostCode='" & Me.Postcode & "'"
Set rst = CurrentDb.OpenRecordset(strSQL)
stDocName = "belangstellenden"
stLinkCriteria = "Postcode='" & Me.Postcode & "'"

If rst.RecordCount <> 0 Then
    msgbox "De postcode komt ook voor in de tabel 'Belangstellenden'" _
    & vbCrLf & vbCrLf & "Controleer of de gegevens van de nieuwe 'klant' overeenkomen met de naw in 'Belangstellenden'" _
    & vbCrLf & vbCrLf & "Indien positief, delete dan de record en sluit het formulier 'Belangstellenden weer' af", vbCritical, "bedrijf"
         DoCmd.OpenForm stDocName, acNormal, , stLinkCriteria, , acDialog
Else
    DoCmd.CancelEvent
End If
rst.Close
Set rst = Nothing
End Sub
 
Laatst bewerkt:
Beste forumleden

Ik loop - in het verlengde van deze opgeloste vraag - opnieuw tegen een probleempje aan.
Ik wil dezelfde procedure ook toepassen op een veld waarin de 'woonplaats' staat vermeld.

Als de tekst overeenkomt, wordt het formulier 'belangstellenden' geopend, met de uitgefilterde record(s) maar als de tekst niet overeenkomt, loopt het formulier 'klanten' vast.
Beide velden staan gewoon als gegevenstype 'tekst' gedefinieert.

Weet iemand de oplossing??
Bedankt

Hierbij nog even de code
Code:
Private Sub Postcode_AfterUpdate()
 
Dim stDocName As String
Dim stLinkCriteria As String
Dim rst As DAO.Recordset
Dim strSQL As String
strSQL = "SELECT PostCode FROM belangstellenden WHERE PostCode='" & Me.Postcode & "'"
Set rst = CurrentDb.OpenRecordset(strSQL)
stDocName = "belangstellenden"
stLinkCriteria = "Postcode='" & Me.Postcode & "'"

If rst.RecordCount <> 0 Then
    msgbox "De postcode komt ook voor in de tabel 'Belangstellenden'" _
    & vbCrLf & vbCrLf & "Controleer of de gegevens van de nieuwe 'klant' overeenkomen met de naw in 'Belangstellenden'" _
    & vbCrLf & vbCrLf & "Indien positief, delete dan de record en sluit het formulier 'Belangstellenden weer' af", vbCritical, "bedrijf"
         DoCmd.OpenForm stDocName, acNormal, , stLinkCriteria, , acDialog
Else
    DoCmd.CancelEvent
End If
rst.Close
Set rst = Nothing
End Sub
 
Zet eens met F9 een breakpoint op de routine en loop er dan met F8 stap voor stap doorheen, dan kun je zien waar het fout gaat.
 
Diepe schaamte

Ik schaam me diep:o:o

Ik had het event (waarbij het fout ging) 'before update' gezet ipv 'after update'. Voor het forum had ik een kopie code gemaakt van de bestaande code en deze aangepast.

Sorry voor deze laatste topic en Rene opnieuw bedankt voor je advies:thumb:

Mvg
:o
 
Glad I got to help you out! En als je zelf de fout ontdekt is de kans dat je 'm nogmaals maakt vele malen kleiner dan wanneer iemand anders het je verteld.
Succes en tot het volgende probleem :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan