een record zoeken in een DAO recordset type tabel

Status
Niet open voor verdere reacties.

haybeu

Nieuwe gebruiker
Lid geworden
28 nov 2009
Berichten
4
Hallo,
ik wil in de dB HIAS, FrmB openen als de waarde "VIND" voorkomt in het veld VELDNAAM (sleutelveld) van tabel TABEL1; anders open FrmA

Ik heb code gevonden bij Access referenties voor ontwikkelaars en als onderstaand aangepast.Het werkt echter niet. Als ik de KnopNwe druk gebeurt er niks.
Bij voorbaat dank voor de hulp.

Hay Beurskens

Private Sub KnopNwe_Click()
On Error GoTo Err_KnopNwe_Click

Function GetHireDate(VELDNAAM As Long) As Variant
Dim dbsHIAS As DAO.Database
Dim rstTABEL1 As DAO.Recordset

On Error GoTo ErrorHandler
Set dbsHIAS = CurrentDb
Set rstTABEL1 = dbsHIAS.OpenRecordset("TABEL1")
'the index name for VELDNAAM.
rstTABEL1.Index = "PrimaryKey"
rstTABEL1.Seek "=", "VIND"
If rstTABEL1.NoMatch Then
GetHireDate = Null
Else
GetHireDate = rstTABEL1!HireDate
End If

If GetHireDate = Null Then
stDocName = "FrmA"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Else
stDocName = "FrmB"
DoCmd.OpenForm stDocName, , , stLinkCriteria

End If

rstTABEL1.Close
dbsHIAS.Close

Set rstTABEL1 = Nothing
Set dbsHIAS = Nothing

Exit Function

ErrorHandler:
MsgBox “Error”
End Function
 
Laatst bewerkt:
" Access referenties voor ontwikkelaars" op welke pagina heb je deze dan gevonden ?
 
Ik weet niet precies wat je allemaal gekopieerd hebt, maar de code onder de knop is in ieder geval niet goed:
Om hem enigszins te laten werken, moet hij er toch zeker zo uit zien:

Code:
Private Sub KnopNwe_Click()
Dim iFind as long

iFind=Me.Find
Call GetHireDate(iFind)

End Sub
 
Nee, inderdaad, volgens mij is de code niet volledig. (Daarom vroeg ik ook waar gevonden)

Code:
Private Sub KnopNwe_Click()
On Error GoTo Err_KnopNwe_Click

Function GetHireDate(VELDNAAM As Long) As Variant

Je start met Private Sub voor de knop en 2 regels verder open je de functie GetHireDate.
Volgens mij moet je daar reeds een foutmelding krijgen.
 
" Access referenties voor ontwikkelaars" op welke pagina heb je deze dan gevonden ?

In de ontwerpweergave van een formulier, onder knopnwe, gebeurtenis opbouwen, F1 help

Aan het einde van dit schrijven de originele tekst, die ik aangepast heb.
Maar misschien doe ik wel veel te moeilijk. Er moet een simpelere oplossing zijn want wat ik wil is helemaal niet zo apart.

In mijn FrmRel (gebaseerd op TblRel) is geen plek meer voor een Subformulier; Ik wil een nieuw frm openen buiten FrmRel, dat zich gedraagt als een Subfrm. Het nieuwe frm voegt producten toe aan deze relaties en heet FrmProd op basis TblProd. De oplossing die ik bedacht heb is 2 knoppen op FrmRel. Knop NweProd voegt de IdRel toe aan de TblProd en opent vervolgens FrmProd op basis van een qry met als filterkriteria forms!FrmRel!IdRel. De Knop AlleProd opent FrmProd met alle producten van deze relatie.
Ik wil nog maar één knop in FrmRel. Nu zou je zeggen, open met Knop AlleProd FrmProd en maak daar de knop NweProd. Het probleem daarbij is, als er nog geen records zijn aangemaakt verschijnt er een blanco frm waar de knop NweProd niet zichtbaar is.

Hoe kom ik nu terecht bij die moeilijke code? Ik heb gezocht naar een oplossing met slechts één knop in FrmRel; de code onder de knop zoekt in TblProd naar de IdRel en als die er niet is wordt IdRel toegevoegd en vervolgens wordt het FrmProd geopend. In het andere geval opent hij direct FrmProd.
Wat is de code om vanuit een willekeurig frm in een andere tabel te laten vaststellen of daar de Id van het geopende frm voorkomt?


En dan nu de code waarin ik gezocht heb en die vlg mij niet meer relevant is:

Access: referentie voor ontwikkelaars
Een record zoeken in een DAO-recordset van het type tabel

Met de methode Seek kunt u zoeken naar een record in een Recordset-object van het type tabel.

Wanneer u de methode Seek gebruikt om naar een record te zoeken, wordt in de database-engine van Microsoft Access de huidige index van de tabel gebruikt, zoals deze is gedefinieerd door de eigenschap Index.

Opmerking
Als u de methode Seek gebruikt in een Recordset-object van het type tabel zonder eerst de huidige index in te stellen, treedt er een runtime-fout op.

In het volgende voorbeeld wordt een Recordset-object van het type tabel met de naam Employees geopend en de methode Seek gebruikt om de record te vinden met een waarde lngEmpID in het veld EmployeeID. De aanstellingsdatum voor de opgegeven werknemer wordt als resultaat gegeven.

Function GetHireDate(lngEmpID As Long) As Variant

Dim dbsNorthwind As DAO.Database
Dim rstEmployees As DAO.Recordset

On Error GoTo ErrorHandler

Set dbsNorthwind = CurrentDB
Set rstEmployees = dbsNorthwind.OpenRecordset("Employees")

'The index name for Employee ID.
rstEmployees.Index = "PrimaryKey"
rstEmployees.Seek "=", lngEmpID

If rstEmployees.NoMatch Then
GetHireDate = Null
Else
GetHireDate = rstEmployees!HireDate
End If

rstEmployees.Close
dbsNorthwind.Close

Set rstEmployees = Nothing
Set dbsNorthwind = Nothing

Exit Function

ErrorHandler:
MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description
End Function
 
" Access referenties voor ontwikkelaars" op welke pagina heb je deze dan gevonden ?
In de ontwerpweergave van een formulier, onder knopnwe, gebeurtenis opbouwen, F1 help

Aan het einde van dit schrijven de originele tekst, die ik aangepast heb.
Maar misschien doe ik wel veel te moeilijk. Er moet een simpelere oplossing zijn want wat ik wil is helemaal niet zo apart.

In mijn FrmRel (gebaseerd op TblRel) is geen plek meer voor een Subformulier; Ik wil een nieuw frm openen buiten FrmRel, dat zich gedraagt als een Subfrm. Het nieuwe frm voegt producten toe aan deze relaties en heet FrmProd op basis TblProd. De oplossing die ik bedacht heb is 2 knoppen op FrmRel. Knop NweProd voegt de IdRel toe aan de TblProd en opent vervolgens FrmProd op basis van een qry met als filterkriteria forms!FrmRel!IdRel. De Knop AlleProd opent FrmProd met alle producten van deze relatie.
Ik wil nog maar één knop in FrmRel. Nu zou je zeggen, open met Knop AlleProd FrmProd en maak daar de knop NweProd. Het probleem daarbij is, als er nog geen records zijn aangemaakt verschijnt er een blanco frm waar de knop NweProd niet zichtbaar is.
 
Laatst bewerkt:
Als je produkten wilt toevoegen op basis van een relatiecode, en je gebruikt een Keuzelijst met invoervak voor de produken, dan is het (relatief) simpel om een gebeurtenis te laten gebeuren op basis van de eigenschap <Bij niet in lijst>. Deze actie gebruik je dan om de gewenste gegevens via VBA naar het formulier frmProd te kopiëren, waarbij het formulier in Toevoegmodus wordt gestart. Je hoeft kortom voor deze actie geen knop te maken.
De knop frmProd gebruik je dan om het volledige produkten formulier te bekijken.
 
Als je produkten wilt toevoegen op basis van een relatiecode, en je gebruikt een Keuzelijst met invoervak voor de produken, dan is het (relatief) simpel om een gebeurtenis te laten gebeuren op basis van de eigenschap <Bij niet in lijst>. Deze actie gebruik je dan om de gewenste gegevens via VBA naar het formulier frmProd te kopiëren, waarbij het formulier in Toevoegmodus wordt gestart. Je hoeft kortom voor deze actie geen knop te maken.
De knop frmProd gebruik je dan om het volledige produkten formulier te bekijken.

Dat zou mooi zijn. ik ga het uitproberen. zal wel even duren (ben 63 en dan gaat het allemaal niet zo snel meer!
Alvast bedankt en ik laat horen als het me gelukt is.

haybeu
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan