Ik heb een form gemaakt waarmee ik een access 2000 database uitlees dmv een datacontrol. Nu heb ik op dat form ook een datacombobox gezet, waarmee ik de eerste kolom van de database uitlees. Als ik dus op het pijltje van de combobox klik zie ik dus in één keer alle records van die kolom. Nu wil ik het volgende: Als ik dan in die comboboxlijst een record aanklik dan moet de recordset naar dat aangeklikte record springen, zodat die automatisch uitgelezen kan worden in het form. En dat lukt me dus niet. Ik krijg dat niet gedeclareerd. Ik doe het volgende: De waarde in de combobox verandert met selecteren van een recordnaam dus zet ik de code in de Combobox_Change() procedure. Ik kan dan kiezen voor: Form1.Data1.Recordset.Move En dan moet ik aangeven waar hij heen moet moven. Dat is dus naar de record waarvan de waarde in de kolom overeen komt met de waarde in de combobox. Ik krijg het niet voor elkaar. Iemand? De primaire sleutel van de tabel zit op de autonummering kolom maar die wordt in het form niet uitgelezen omdat die gegevens niet relevant zijn. Moet dan een invisibele textboxje aangemaakt worden met dit nummer zodat hij daar heen kan springen of zo? Ik wacht op een reaktie.
Verwijderd
Meestal is het inderdaad wel slim om de PK te bewaren, zodat je een record kan terugzoeken... Anders weet je namelijk nooit zeker of je wel het goede record hebt gevonden.
Het zoeken in een (ADO-)recordset gaat vervolgens met het commando 'Find'.
Ennuh, verder een kleine opmerking. Net als in je code, gebruik wat lege regels om de tekst leesbaar te maken
Het zoeken in een (ADO-)recordset gaat vervolgens met het commando 'Find'.
Ennuh, verder een kleine opmerking. Net als in je code, gebruik wat lege regels om de tekst leesbaar te maken
Als eerste zou ik inderdaad de PK wel opnemen.Op maandag 22 april 2002 12:46 schreef EdWare het volgende:
Ik heb een form gemaakt waarmee ik een access 2000 database uitlees dmv een datacontrol. Nu heb ik op dat form ook een datacombobox gezet, waarmee ik de eerste kolom van de database uitlees. Als ik dus op het pijltje van de combobox klik zie ik dus in één keer alle records van die kolom. Nu wil ik het volgende: Als ik dan in die comboboxlijst een record aanklik dan moet de recordset naar dat aangeklikte record springen, zodat die automatisch uitgelezen kan worden in het form. En dat lukt me dus niet. Ik krijg dat niet gedeclareerd. Ik doe het volgende: De waarde in de combobox verandert met selecteren van een recordnaam dus zet ik de code in de Combobox_Change() procedure. Ik kan dan kiezen voor: Form1.Data1.Recordset.Move En dan moet ik aangeven waar hij heen moet moven. Dat is dus naar de record waarvan de waarde in de kolom overeen komt met de waarde in de combobox. Ik krijg het niet voor elkaar. Iemand? De primaire sleutel van de tabel zit op de autonummering kolom maar die wordt in het form niet uitgelezen omdat die gegevens niet relevant zijn. Moet dan een invisibele textboxje aangemaakt worden met dit nummer zodat hij daar heen kan springen of zo? Ik wacht op een reaktie.
Microsoft levert standaard het DBCombo-control uit (valt onder Data Bound List Controls). In dit control kun je een BoundColumn opgegeven. Daar laat je de PK in wegschrijven. Vervolgens wordt alleen je data getoond, maar het control houdt zelf bij wat de PK is van het record.
Vervolgens zou je mbv de PK moeten kunnen moven. Volgens mij is het wel zo dat je niet direct naar een record kan springen. Mogelijk dat je dan record voor record moet bekijken, maar dat weet ik niet zeker. Het is nl. al lang geleden dat ik hier mee gewerkt heb.
Zo niet, controleer dan eerst even of je event wel getriggerd wordt.
Overigens nog een heel gemeend advies: kijk eens naar ADO! Da's veel krachtiger.
Bedankt voor de goede adviezen.
Update: Ik was dat vergeten te zeggen maar de beide controls in het form, de datacontrol en de comboboxcontrol zijn al uit de ADO 6.0. collectie.
Die gebruik ik ook want ik heb de Enterprise editie van VB 6.0 en hierin kun je ze toevoegen aan de toolbox.
Heeft de ADO Datacombobox ook de beschikking over een Bountcolumn? De PK kolom heb ik inmiddels gekoppeld met het form...
Update: Ik was dat vergeten te zeggen maar de beide controls in het form, de datacontrol en de comboboxcontrol zijn al uit de ADO 6.0. collectie.
Die gebruik ik ook want ik heb de Enterprise editie van VB 6.0 en hierin kun je ze toevoegen aan de toolbox.
Heeft de ADO Datacombobox ook de beschikking over een Bountcolumn? De PK kolom heb ik inmiddels gekoppeld met het form...
Nou ik ben iets verder maar ik kom er niet uit. Een gewone combobox heeft inderdaad geen bountcolumn, dat heeft alleen de ADO Datacombobox.
Ik heb die bountcolumn nu gekoppeld aan de primary key column met de autonummering nummers. Verder zoals al gezegd de primary key column ook toegevoegd aan het form dmv een bound textcontrol.
Maar nu:
Nu weet ik nog niet hoe ik die recordset moet moven. Ik krijg dat gewoon niet voor elkaar. Ik heb het volgende geprobeerd:
Datacontrol.recordset.move (Txtautonummering)
Werkt niet, zorgt dat hij naar het nummer springt in de txt in volgende change.
Datacontrol.recordset.move (Datacombobox1.Boundcolumn)
Werkt niet, geeft een waarde terug: "Nummers" (zo heet die kolom maar hij ziet niet het nummer in die kolom)
Datacontrol.recordset.move (Datacombobox1.Boundtext)
Werkt niet, deze zou volgens mij de autonummering waarde terug moeten geven maar dan springt hij naar de sluitregel van de tabel (dus onder de laatste record)
zucht.
Kan iemand dit niet eens een beetje voordoen voor me, ik moet een zetje hebben in de goede richting..
Ik heb die bountcolumn nu gekoppeld aan de primary key column met de autonummering nummers. Verder zoals al gezegd de primary key column ook toegevoegd aan het form dmv een bound textcontrol.
Maar nu:
Nu weet ik nog niet hoe ik die recordset moet moven. Ik krijg dat gewoon niet voor elkaar. Ik heb het volgende geprobeerd:
Datacontrol.recordset.move (Txtautonummering)
Werkt niet, zorgt dat hij naar het nummer springt in de txt in volgende change.
Datacontrol.recordset.move (Datacombobox1.Boundcolumn)
Werkt niet, geeft een waarde terug: "Nummers" (zo heet die kolom maar hij ziet niet het nummer in die kolom)
Datacontrol.recordset.move (Datacombobox1.Boundtext)
Werkt niet, deze zou volgens mij de autonummering waarde terug moeten geven maar dan springt hij naar de sluitregel van de tabel (dus onder de laatste record)
zucht.
Kan iemand dit niet eens een beetje voordoen voor me, ik moet een zetje hebben in de goede richting..
Misschien niet geheel volgens de regels van het forum, maar ik zet een voorbeeld op de mail.
Het gaat te ver om dat hier helemaal uit te gaan leggen en ik wil zo gaan slapen
Het gaat te ver om dat hier helemaal uit te gaan leggen en ik wil zo gaan slapen
Peter,
Ik heb het bekeken maar bij mij werkt het voor geen meter.. Ik selecteer in de lijst van de Combobox bijvoorbeeld record 3 en dan springt hij naar 7. Selecteer ik dan record 5 dan springt hij naar record 14, enz. Hij doet random maar wat, tenminste ik kan er geen patroon in ontdekken, hij springt niet steeds één record te laag of zo..
Kijk ik dan met Acces in je database dan staan de titelnummers wel degelijk gewoon op volgorde.. Heb je dit getest?
Ik heb het inmiddels wel aan de gang gekregen met wat code, en wel op deze manier. Eerst heb ik de "Listfield" property van de Combobox gekoppeld aan de kolom "Achternaam", (want hier kan de gebruiker een record op selecteren). Ik heb de property "Boundcolumn" van de Combobox vervolgens gekoppeld aan de kolom "RecordNummer" (dit is de pk). Dan laat ik hem in de "Change procedure" het volgende doen:
Combobox1.Change()
If Combobox1 <> "" Then
Data1.Recordset.MoveFirst
Data1.Recordset.Find "RecordNummer = '" & Combobox1.BoundText & "'"
Combobox1 = ""
End If
Nadeel: De achternaam van de geselecteerde blijft tijdens het bekijken van de record niet in de Combobox staan.
Voordeel: Door de blanco control verandert hij iedere keer bij aanklikken van een naam uit de control waardoor je dus ook twee records kunt selecteren met dezelfde achternaam, anders zou hij daar dus niet op reageren...
FYI
Ik heb het bekeken maar bij mij werkt het voor geen meter.. Ik selecteer in de lijst van de Combobox bijvoorbeeld record 3 en dan springt hij naar 7. Selecteer ik dan record 5 dan springt hij naar record 14, enz. Hij doet random maar wat, tenminste ik kan er geen patroon in ontdekken, hij springt niet steeds één record te laag of zo..
Kijk ik dan met Acces in je database dan staan de titelnummers wel degelijk gewoon op volgorde.. Heb je dit getest?
Ik heb het inmiddels wel aan de gang gekregen met wat code, en wel op deze manier. Eerst heb ik de "Listfield" property van de Combobox gekoppeld aan de kolom "Achternaam", (want hier kan de gebruiker een record op selecteren). Ik heb de property "Boundcolumn" van de Combobox vervolgens gekoppeld aan de kolom "RecordNummer" (dit is de pk). Dan laat ik hem in de "Change procedure" het volgende doen:
Combobox1.Change()
If Combobox1 <> "" Then
Data1.Recordset.MoveFirst
Data1.Recordset.Find "RecordNummer = '" & Combobox1.BoundText & "'"
Combobox1 = ""
End If
Nadeel: De achternaam van de geselecteerde blijft tijdens het bekijken van de record niet in de Combobox staan.
Voordeel: Door de blanco control verandert hij iedere keer bij aanklikken van een naam uit de control waardoor je dus ook twee records kunt selecteren met dezelfde achternaam, anders zou hij daar dus niet op reageren...
FYI
Ik zou toch zweren dat het werkte, maar ja....het is al lang geleden dat ik het gebruikte.Op donderdag 25 april 2002 11:37 schreef EdWare het volgende:
Heb je dit getest?
Tegenwoordig is het ADO wat de klok slaat (of wat de toetsen tikken
Pagina: 1