Query op Query?

Status
Niet open voor verdere reacties.

Tamara27

Gebruiker
Lid geworden
1 mrt 2010
Berichten
224
Situatieschets:
Formulier gebaseerd op een query die bepaalde gegevens uit 1 tabel haalt (databank zelf bestaat uit meerdere tabellen)
Formulier geeft dus meerdere waarden als uitkomst van de query. Aan die waarde zitten meerdere gegevens gekoppeld, in verschillende tabellen.

Nu zou ik graag het volgende bereiken:
Als ik dubbelklik op de waarde die de query geeft, opent hij een nieuw formulier met alle gegevens die aan die waarde gekoppeld zijn.

Voorbeeld:
Peeters - Piet - man - 50 jr
Janssens - Jan - man - 40 jr
Smeets - Miet - vrouw - 50 jr
Leenen - Marie - vrouw - 40 jr

Mijn query neemt bijv alle mannen (afhankelijk van het zoekcriterium) en toont dus
Peeters Piet - man
Janssens Jan - man

Nu zou ik graag kunnen dubbelklikken op peeters piet en een volledig overzicht krijgen van deze persoon. Zodat ik ook bijv zijn leeftijd, adresgegevens enz krijg.

Hoe kan ik dit doen?

Thanx!
 
Hallo Tamara,

Zet het volgende neer in je DoubleClick_event, dubbel klikken gebeurtenis van het hoofdformulier:

Code:
DoCmd.RunCommand acCmdSelectRecord

Dim stDocName As String
Dim stLinkCriteria As String

   stDocName = "JouwTeOpenenForm"
   
   stLinkCriteria = "[PersoonID]=" & Me![PersoonID]
   DoCmd.OpenForm stDocName, , , stLinkCriteria, , acDialog


Hierbij wordt op basis van de PersoonID van bijv. Janssen een nieuw formulier geopend "JouwTeOpenenForm" op basis van JanssenID.

Succes:thumb:
 
Laatst bewerkt door een moderator:
Tamara27,

Is dit nog gelukt? Zet dan je status op opgelost svp :)
 
Beste

Dit lukt ookt niet meteen, hij geeft een syntaxisfout (operator ontbreekt) in query-expressie (mijn formulier is gebaseerd op een query)

Wat ik ook geprobeerd heb:
Code:
 Docmd.Open Form "Formulier" , , , "[UniekeCode]=' " & Me![UniekeCode] & " ' "
Hiermee krijg ik mooi mijn gefilterd formulier, maar hij vraagt wel de 4 parameters (terwijl in mijn query staat: like "... " & "*")

HOe kan ik dit nog oplossen?
 
Laatst bewerkt:
Je code is gebaseerd op een tekststring. Klopt dat, of is je sleutel numeriek?
 
Dan klopt de filterstring.... Gaan we nu kijken naar de query die er onder ligt. Waarom heb je daar nog parameters in hangen? En welke zijn dat?
 
Een hoofdscherm laat de gebruiker toe op verschillende manieren info op te vragen, ofwel krijgt hij een overzicht per pati�nt, ofwel per behandeling/ziekte. Wat het overzicht per ziekte betreft, hier krijgt hij een lijst met namen. Het is de bedoeling dat als er op de naam geklikt wordt, het overzichtsformulier van de pati�nt opent. Daarom een dubbelklik event.

Het overzichtsformulier is opgebouwd op basis van de query die er alsvolgt uitziet:

- naam: Like [forms]![F_Zoeken].[zoekNaam] & "*"
- voornaam: Like [forms]![F_Zoeken].[zoekVoornaam] & "*"
- Unieke Code: Like [forms]![F_Zoeken].[Unieke Code] & "*"
- geboortedatum: Like [forms]![F_Zoeken].[zoekGeboortedatum] & "*"
- geslacht
- opleidingsniveau
- roker
- NaamTot: [Achternaam] & " " & [Voornaam] & " (�" & [Geboortedatum] & ") " & IIf([Geslacht]="Vrouw";"(V)";"(M)")

Als de gebruiker ervoor kiest om een overzicht van de pati�nt te krijgen, is er geen probleem. Dan worden die veldjes perfect ingevuld (een lege combobox = "") en als de combobox wel ingevuld is, komt de like in actie.

Ik dacht dus dat als ik in het overzicht per behandeling zat, ik gewoon de unieke code kon instellen voor het formulier per pati�nt. (dit haal ik dan uit het formulier van de behandeling/ziekte).

Mis poes :)
 
Zijn de zoekvelden Keuzelijsten, of tekstvelden?
 
Dat zijn combolijsten (zodanig dat ze enkel maar iets kunnen kiezen wat effectief in een tabel zit, om het een beetje gemakkelijk te maken)
 
Dat vermoedde ik al; in dat geval snap ik eigenlijk je zoekcriteria niet, want die doen dan volgens mij niks:
naam: Like [forms]![F_Zoeken].[zoekNaam] & "*"
is dan hetzelfde als:
naam: [forms]![F_Zoeken].[zoekNaam]
Je zou, om te kunnen blijven zoeken met een lege keuzelijst, deze aanpassing kunnen maken:
in het veld: (nog wel de naam van de tabel aanpassen...)
Code:
Naam:IIf(IsNull([Forms]![F_Zoeken].[zoekNaam]);Waar;[[B]Tabel[/B]].[Achternaam]=[Forms]![F_Zoeken].[zoekNaam])
Als criterium:
Code:
<>Onwaar
En dat doe je ook voor de overige zoekvelden.
 
Hmm :-)

Ik denk dat ik ergens iets fout gedaan heb :)

De "code" schrijf ik toch bij de veldnaam hé?
Want als ik dit overal doe, dan vindt hij niks... Dan opent mijn formulier, leeg :)
 
Da's wel de bedoeling natuurlijk ;) Overigens snap ik je oorspronkelijk insteek met Like wel, want je wilt daarmee een wildcard in de query zetten voor het geval de keuzelijst leeg is. Maar de code zou moeten werken. Kun je de hele SQL posten?
 
Hierbij de sql van de query

Code:
SELECT GegevensPatienten.Geslacht, GegevensPatienten.Opleidingsniveau, GegevensPatienten.Roker, [Achternaam] & " " & [Voornaam] & "    (°" & [Geboortedatum] & ")    " & IIf([Geslacht]="Vrouw","(V)","(M)") AS NaamTot
FROM GegevensPatienten
WHERE (((IIf(IsNull([Forms]![F_Zoeken].[zoekNaam]),True,[GegevensPatienten].[Achternaam]=[Forms]![F_Zoeken].[zoekNaam]))<>"Onwaar") AND ((IIf(IsNull([Forms]![F_Zoeken].[zoekVoornaam]),True,[GegevensPatienten].[Voornaam]=[Forms]![F_Zoeken].[zoekVoornaam]))<>"Onwaar") AND ((IIf(IsNull([Forms]![F_Zoeken].[zoekGeboortedatum]),True,[GegevensPatienten].[Geboortedatum]=[Forms]![F_Zoeken].[zoekGeboortedatum]))<>"Onwaar") AND ((IIf(IsNull([Forms]![F_Zoeken].[Unieke Code]),True,[GegevensPatienten].[Unieke Code]=[Forms]![F_Zoeken].[Unieke Code]))<>"Onwaar"))
GROUP BY GegevensPatienten.Geslacht, GegevensPatienten.Opleidingsniveau, GegevensPatienten.Roker, [Achternaam] & " " & [Voornaam] & "    (°" & [Geboortedatum] & ")    " & IIf([Geslacht]="Vrouw","(V)","(M)");

Als ik nu mijn formulier open via het zoekformulier, geeft hij hetvolgende:
2501 actie geannuleerd: openForm
open ik het formulier afzonderlijk, vraagt hij uiteraard de 4 parameters en zegt dan hetvolgende:

Deze expressie is niet correct getypt of te complex voor evaluatie
 
Ik ben een beetje verbaasd door de <>"Onwaar" stukken in de sql. Volgens mij moet het meer zo zijn:
Code:
SELECT GegevensPatienten.Geslacht, GegevensPatienten.Opleidingsniveau, GegevensPatienten.Roker, [Achternaam] & " " & [Voornaam] & "    (°" & [Geboortedatum] & ")    " & IIf([Geslacht]="Vrouw","(V)","(M)") AS NaamTot
FROM GegevensPatienten
WHERE (((IIf(IsNull([Forms]![F_Zoeken].[zoekNaam]),True,[GegevensPatienten].[Achternaam]=[Forms]![F_Zoeken].[zoekNaam]))[B][COLOR=blue]<>False[/COLOR][/B]) AND ((IIf(IsNull([Forms]![F_Zoeken].[zoekVoornaam]),True,[GegevensPatienten].[Voornaam]=[Forms]![F_Zoeken].[zoekVoornaam]))[B][COLOR=blue]<>False[/COLOR][/B]) AND ((IIf(IsNull([Forms]![F_Zoeken].[zoekGeboortedatum]),True,[GegevensPatienten].[Geboortedatum]=[Forms]![F_Zoeken].[zoekGeboortedatum]))[B][COLOR=blue]<>False[/COLOR][/B]) AND ((IIf(IsNull([Forms]![F_Zoeken].[Unieke Code]),True,[GegevensPatienten].[Unieke Code]=[Forms]![F_Zoeken].[Unieke Code]))[B][COLOR=blue]<>False[/COLOR][/B]))
GROUP BY GegevensPatienten.Geslacht, GegevensPatienten.Opleidingsniveau, GegevensPatienten.Roker, [Achternaam] & " " & [Voornaam] & "    (°" & [Geboortedatum] & ")    " & IIf([Geslacht]="Vrouw","(V)","(M)");
Probeer 'm nog eens zo?
 
OK. nu krijg ik mijn formulier wel open vanuit het overzichtsscherm met alle tabellen, formulieren etc. Dan geeft hij mooi de gegevens
MAAR
als ik nu via het zoekformulier ga, en het vandaaruit oproep, geeft hij een witte pagina :(
 
Ik heb de nodige aanpassingen gedaan aan mn query en formulier, maar krijg nog een paar foutmeldingen:

dit is de sql van de query:

Code:
SELECT GegevensPatienten.Geslacht, GegevensPatienten.Opleidingsniveau, GegevensPatienten.Roker, [Achternaam] & " " & [Voornaam] & "    (°" & [Geboortedatum] & ")    " & IIf([Geslacht]="Vrouw","(V)","(M)") AS NaamTot, GegevensPatienten.[Unieke Code], IIf(nz([Forms]![F_Zoeken].[FilterUniekeCode],"")="",True,[Unieke Code]=[Forms]![F_Zoeken].[FilterUniekeCode]) AS Expr1
FROM GegevensPatienten
WHERE (((IIf(nz([Forms]![F_Zoeken].[FilterUniekeCode],"")="",True,[Unieke Code]=[Forms]![F_Zoeken].[FilterUniekeCode]))<>False))
ORDER BY [Achternaam] & " " & [Voornaam] & "    (°" & [Geboortedatum] & ")    " & IIf([Geslacht]="Vrouw","(V)","(M)");

als ik dubbelklik op mijn record in het eerste formulier, krijg ik volgende fout:
Syntaxixfout (operator ontbreekt in query-expressie)

ik heb het met de bovenstaande codetjes geprobeerd, dat lukt niet echt.

iemand nog een ander idee?
 
Ik heb jouw code even uitgeprobeerd in een aparte query en mijn eigen formulier en hij werkt op zich prima. Ik moest alleen de formulierverwijzing aanpassen, omdat mijn tekstvak anders heet. Dus wat doe je precies?
 
Ik heb in een formulier de volgende opstelling:
patient (= visisble) - unieke code (not visible, hebben de gebruikers niets aan)
ik heb volgende code geplaatst bij dubbelklik van patient geplaatst

Code:
Private Sub Patiënt_DblClick(Cancel As Integer)

DoCmd.RunCommand acCmdSelectRecord

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "F_TonenGegevensPatientAlles"

stLinkCriteria = "[FilterUniekeCode]=" & Me![Unieke code]
DoCmd.OpenForm stDocName, , , stLinkCriteria, , acDialog

End Sub

hierbij is die filtercode (die ik aan jou te danken heb, thnx!) gelijk aan de <txtFilterString> die jij erbij had gezet op het zoekformulier en in de query

hij opent het formulier niet, hij geeft daar een syntaxisfout (operator ontbreekt) MAAR geeft wel [FilterUniekeCode]= en dan de juiste code!
 
Laatst bewerkt:
Het veld [Unieke code] is een tekstveld; het kan zijn dat je dat in de filterstring moet zetten:

Code:
stLinkCriteria = "[FilterUniekeCode]='" & Me![Unieke code] & "'"
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan