Toon posts:

[ACCESS] Zoek en listbox probleempjes

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo, voor school moet ik een database app maken. Maar ik zit met een aantal probleempjes waar ik niet uitkom. Ik heb al gezocht op inet en heel veel geprobeerd, maar ik kom er zelf niet uit denk ik. Ik zit dus met de volgende problemen:

Afbeeldingslocatie: http://members.chello.nl/j.siahaya/Formulier.jpg
_____________________________________

:? Probleem 1:
Ik wil dat je linksboven, in de textbox iets invult, bv SIA, en dat alle records die in de achternaam het stukje sia bevatten, in de listbox worden getoond.

Zoiets als dit werkt al
code:
1
2
3
4
Private Sub btnZoek_Click()
Me.lstMedewerkerSelecteren.RowSource = "SELECT Achternaam 
FROM tblMedewerker Where Stamnummer =" & Me.txtZoek.Value
End Sub
Ik snap dat ik Stamnummer moet veranderen in Achternaam ;) Maar ik laat dit stukje code even zien omdat deze wel goed werkt, maar zodra ik Achternaam ga gebruiken niet meer :(.


Hier zoekt hij op identificerend nummer van de medewerker, hoe zorg ik ervoor dat ik op stukjes van een achternaam kan zoeken? En als dat werkt, krijg ik dan een aantal hits, of de eerste de beste record die er op lijkt? Ik heb al een beetje met LIKE gekloot, maar krijg het niet aan de gang.
_____________________________________

:? Probleem 2 :
Ik krijg het niet voor elkaar om de listbox te vullen op deze manier:
code:
1
2
3
4
5
6
Private Sub btnZoek_Click()
Me.lstMedewerkerSelecteren.RowSource = "SELECT Stamnummer, 
Voorletters & IIf(Not IsNull(Voorvoegsels)," " & Voorvoegsels)
 & " " & Achternaam AS Medewerkernaam FROM tblMedewerker 
Where Stamnummer =" & Me.txtZoek.Value
End Sub

Wat is hier fout aan? De SQL code klopt wel, alleen in vb moet ik de code anders formuleren ofzo?
_____________________________________

:? Probleem 3:
Als ik de code bij probleem 1 achter de zoekknop gebruik om de listbox te vullen, krijg ik het niet voor elkaar om de subformulieren, die je in het plaatje aan de rechterkant ziet, te koppelen! Terwijl ik de instellingen van het subformulier wel goed het staan volgens mij:

Subvelden koppelen: Stamnummer
Hoofdvelden koppelen: lstMedewerkerSelecteren

Ziet iemand hier de fout?
_____________________________________

Ik hoop dat jullie mij iets verder kunnen helpen!!!


Trouwens, nog 1 vraagje waar ik mee zit :|. Met deze code:
code:
1
2
3
4
5
6
7
8
9
10
Option Compare Database
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Const SW_HIDE = 0
Private Const SW_SHOWNORMAL = 1
Private Const SW_MINIMIZE = 6

Private Sub Form_Load()
Call ShowWindow(Application.hWndAccessApp, SW_HIDE)
DoCmd.Maximize
End Sub

zorg ik ervoor dat het formulier fullscreen wordt geopend, zonder menubalken van Access erbij, dus echt alleen het formulier. Maar als ik nu het formulier wil sluiten, en dus op het kruisje druk, blijft de database op de een of andere manier toch actief, en moet ik de database in Windows taakbeheer => processen eerst afsluiten voordat ik m weer kan opstarten. Ik heb dit probleem voorheen altijd opgelost door de sluitknop van het formulier uit te schakelen, en zelf een knop te bouwen met daarachter vb code die vervolgens de database wél goed sluit. Maar is er geen manier om gebruik te blijven maken van de sluitknop op het formulier, en dat de database dan :/ wél goed afsluit? :?

[ Voor 36% gewijzigd door Verwijderd op 22-10-2004 11:18 . Reden: nog een vraagje toevoegen ]


  • Amras
  • Registratie: Januari 2003
  • Laatst online: 01-10-2025
Bij probleem 1 zul je idd met LIKE aan de gang moeten, maar als je op medewerkernaam wilt zoeken moet je in je query geen stamnummer gebruiken. Kijk eens hoe een LIKE werkt en gebruik deze voor het veld Medewerkernaam ipv. Stamnummer.

Bij je tweede probleem moet je vooral naar je quotes en & tekens kijken, die staan niet helemaal goed. ;)

Verwijderd

Topicstarter
Amras schreef op 22 oktober 2004 @ 11:12:
Bij probleem 1 zul je idd met LIKE aan de gang moeten, maar als je op medewerkernaam wilt zoeken moet je in je query geen stamnummer gebruiken. Kijk eens hoe een LIKE werkt en gebruik deze voor het veld Medewerkernaam ipv. Stamnummer.

Bij je tweede probleem moet je vooral naar je quotes en & tekens kijken, die staan niet helemaal goed. ;)
Sorry niet helemaal duidelijk aangegeven, ik wist wel dat ik stamnummer moest veranderen in achternaam. Deze code laat ik zien omdat dit wel werkt, maar zodra ik er achternaam neerzet niet meer.

Blijkbaar zit ik wel in de goede richting, maar ik loop ik te kloten met de quotes? Dat het daarom niet werkt? Ik heb nml al heel wat geprobeerd met de LIKE operator, maar helaas :(

  • Amras
  • Registratie: Januari 2003
  • Laatst online: 01-10-2025
Voor uitleg en voorbeelden van de LIKE operator kun je eens kijken op w3schools. Verder raad ik je aan om eens uit te zoeken hoe je strings moet concateneren in VB. Simpel voorbeeld:

Visual Basic .NET:
1
"foo" & "bar"

Bij jou zie ik de & operator binnen de quotes, wat dus niet kan. Succes! :)

[ Voor 6% gewijzigd door Amras op 22-10-2004 11:25 ]


  • Aspje
  • Registratie: November 2002
  • Laatst online: 05-11-2024

Aspje

Blaat

In visual basic kunnen strings ook met + worden geconcat.

code:
1
"foo"+"bar"


offtopic:
Ennuh amras, aan je werk jij! Nog veel Numeriek te doen ;)

Verwijderd

Topicstarter
Ik heb het voor elkaar gekregen! :) Thnx Amras!!

code:
1
2
3
4
5
6
Private Sub btnZoek1_Click()
Me.lstMedewerkerSelecteren.RowSource = "SELECT Achternaam 
& "","" & "" "" & Voorvoegsels & "" "" & Roepnaam AS Medewerkernaam,
 Stamnummer FROM tblMedewerker Where Achternaam LIKE '*" &
 Me.txtZoek1.Value & "*'"
End Sub

:D :D :D

Alle3 de problemen zijn opgelost :) Maare, het laatste probleem, het fullscreen probleem, weet iemand hier nog antwoord op, of heeft iemand tips? Zou heel fijn zijn :)

Verwijderd

Topicstarter
Nog 1 vraagje waar ik mee zit :|. Met deze code:
code:
1
2
3
4
5
6
7
8
9
10
Option Compare Database
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Const SW_HIDE = 0
Private Const SW_SHOWNORMAL = 1
Private Const SW_MINIMIZE = 6

Private Sub Form_Load()
Call ShowWindow(Application.hWndAccessApp, SW_HIDE)
DoCmd.Maximize
End Sub

zorg ik ervoor dat het formulier fullscreen wordt geopend, zonder menubalken van Access erbij, dus echt alleen het formulier. Maar als ik nu het formulier wil sluiten, en dus op het kruisje druk, blijft de database op de een of andere manier toch actief, en moet ik de database in Windows taakbeheer => processen eerst afsluiten voordat ik m weer kan opstarten. Ik heb dit probleem voorheen altijd opgelost door de sluitknop van het formulier uit te schakelen, en zelf een knop te bouwen met daarachter vb code die vervolgens de database wél goed sluit. Maar is er geen manier om gebruik te blijven maken van de sluitknop op het formulier, en dat de database dan :/ wél goed afsluit? :?

Verwijderd

Je zou het volgende kunnen proberen.

Achter de een knop (bijv genaamd Sluiten) zet je de code:

docmd.quit (deze sluit volgens mij Access af)

of docmd.close (deze sluit volgens mij het formulier af)

Je kan dan ook nog om het netter te maken een vraag stellen of de gebruiker echt wilt afsluiten.

dus

private sub knpAfsluiten()

msg = MsgBox("Test", vbYesNo, "Afsluiten")
If msg = vbYes Then
DoCmd.Quit
End If


Suc6 verder

Voor veel vragen kun je terecht op http://office.webforums.nl
Pagina: 1