Records opzoeken

Status
Niet open voor verdere reacties.

Saalk

Gebruiker
Lid geworden
3 jan 2011
Berichten
85
Hoi,

Ik heb een database gemaakt om er cryptogrammen in op te slaan.
De tabel heet cryptogrammen. De velden zijn: Omschrijving en woord.
Om te kijken of de omschrijving al voorkomt in de database heb ik een Query gemaakt van de tabel cryptogrammen die gebruik ik dan in een keuzelijst met invoervak.
Maar ik heb inmiddels ongeveer 133000 omschrijvingen en geeft de lijst al minder weer dus zeg maar het liep van A tot Z maar nu loopt het nog maar van A tot H.
Bestaat er een mogelijkheid dat je wel van A tot Z de records kan zien.
Ik hoop dat ik het duidelijk heb uitgelegen.

Bvb Vriendelijke dank
Klaas
 
Laatst bewerkt:
Een keuzelijst kan maar een 'beperkt' aantal records laten zien, namelijk 65536. Jij zit daar dik (het dubbele namelijk) boven. Nog afgezien van het feit dat zo'n keuzelijst, als het al mogelijk zou zijn om hem te maken, volslagen onbruikbaar wordt in het gebruik, zou ik je toch een andere techniek aan willen bevelen. Bijvoorbeeld: een keuzelijst (zonder invoervak) dat je vult vanuit een tekstvak waarin je de te zoeken omschrijving typt. Daarbij mag je dan zelf bepalen of je die lijst wilt vullen vanaf de eerste letter (Letter(s) + *) of dat de zoektekst overal in de omschrijving mag staan (* + Letter(s) + *). Hoe meer je typt, hoe beter de lijst filtert, want hoe korter hij wordt.

Ik hoop dat ik het duidelijk heb uitgelecht.
Ik hoop trouwens dat 'uitgelecht' niet in je tabel staat :)
 
Bedank voor u snelle reactie.

Sorry stomme schrijffout was al laat zal maar zeggen.
Zou u mij een voorbeeld willen geven hoe ik dat moet doen.
Ik weet niet hoe je het tekstvak moet koppelen aan de keuze lijst.

Bvb Vriendelijke dank.
Klaas
 
Een voorbeeldje:
Code:
Private Sub fltrStraat_Change()
Dim sFltr As String
    sFltr = Me.fltrStraat.Text
    strSQL = "SELECT StraatID, Straat FROM Straat WHERE (Straat Like '*" & Me.fltrStraat.Text & "*');"
    strSQL = "SELECT StraatID, Straat FROM Straat WHERE (Straat Like '" & Me.fltrStraat.Text & "*');"
    With Me
        .lstStraat.RowSource = strSQL
        .lstStraat.Requery
    End With
    Me.fltrStraat.SelStart = Len(sFltr)
End Sub
Ik heb 2 varianten gemaakt van de SQL die je op de keuzelijst kunt zetten; daar kun je er uiteraard maar 1 van gebruiken.
Ik heb in het voorbeeld een tekstvak gemaakt (fltrStraat) waarin je de zoektekst typt. Op basis van de getypte tekst wordt de gebeurtenis <Bij wijzigen> actief. Deze bouwt de query op die onder de keuzelijst hangt. Het WHERE gedeelte is dus het stuk waar de filtering wordt bepaald.
Vervolgens wordt de query aan de keuzelijst gekoppeld en wordt de keuzelijst ververst. Als laatste wordt de cursor in het tekstvak achter het laatste teken gezet. Anders zou je de tekst selecteren in het zoekvak.
 
Ik heb het voorelkaar gekregen.
Het was flink zweten maar het werk.
Ik heb het zo gedaan.

Code:
Private Sub fltrCryptogrammen_Change()
Dim sFltr As String
    sFltr = Me.fltrCryptogrammen.Text
    strSQL = "SELECT Omschrijving FROM Omschrijving WHERE (Omschrijving Like '*" & Me.fltrCryptogrammen.Text & "*');"
    
    With Me
        .lstOmschrijving.RowSource = strSQL
        
    End With
    Me.fltrCryptogrammen.SelStart = Len(sFltr)
End Sub

Maar ik zie nu maar een veld uit de tabel en dat is Omschrijving ik zou ook graag het veld Woord en Aant Letters willen zien in de keuzelijst.
Ik heb de keuzelijst op 3 tabellen gezet is dit mogelijk?

Bvb Hartelijke dank.
Klaas
 
Laatst bewerkt door een moderator:
Je bent volgens mij een regel vergeten (de Requery op de keuzelijst) en die zou ik er zeker nog bij zetten. Meer velden is uiteraard simpel: kwestie van de gewenste velden erbij zetten, en het aantal kolommen (niet het aantal tabellen) aanpassen.
Code:
Private Sub fltrCryptogrammen_Change()
Dim sFltr As String
     sFltr = Me.fltrCryptogrammen.Text
     strSQL = "SELECT Omschrijving, Woord, Len((Woord]) AS Aantal_Letters FROM Omschrijving WHERE (Omschrijving Like '*" & Me.fltrCryptogrammen.Text & "*');"

     With Me
          .lstOmschrijving.RowSource = strSQL
          .Requery
     End With
     Me.fltrCryptogrammen.SelStart = Len(sFltr)
End Sub
 
Ik heb dit geprobeerd maar dat werkt niet ik weet niet waar ik de andere velden moet zetten. En waar je het aantal kolommen moet zetten.

Code:
Private Sub fltrCryptogrammen_Change()

Dim sFltr As String
    sFltr = Me.fltrCryptogrammen.Text
    strSQL = "SELECT Omschrijving FROM Omschrijving WHERE (Omschrijving Like '*" & Me.fltrCryptogrammen.Text & "*');"
    strSQL = "SELECT Woord FROM Woord WHERE (Woord Like '*" & Me.fltrCryptogrammen.Text & "*');"
    With Me
        .lstOmschrijving.RowSource = strSQL
        .lstOmschrijving.Requery
    End With
    Me.fltrCryptogrammen.SelStart = Len(sFltr)
End Sub

Bvb hartelijke dank
Klaas
 
Laatst bewerkt door een moderator:
Waarom neem je mijn code niet over? Wat jij er van gemaakt hebt kan natuurlijk nooit werken; je vult de variabele met het veld Omschrijving, en in de volgende regel vervang je die variabele door een identieke SQL met een ander veld. Alleen de laatste SQL wordt dan gebruikt. Is maar goed ook, want die 2 verschillende queries zijn zo niet te combineren. Daarvoor moet je echt mijn voorbeeldje gebruiken.
Het aantal kolommen stel je in op het eerste tabblad van de eigenschappen van de keuzelijst.
 
Hoi,

Ik heb het voorelkaar, ik heb er een dag niet naar gekeken en dan zie je het ineens wel.
Nog heel hartelijk dank voor u inzet en hulpvaardigheid.
Ik heb nog wel een vraagje is het mogelijk dat je in een tekstveld een verwijder kruisje kan maken (oproepen), en waarom kan je de tekst die in de keuzelijst is verschenen niet kopiëren?

Bvb Hartelijk dank.

Klaas
 
Ik heb nog wel een vraagje is het mogelijk dat je in een tekstveld een verwijder kruisje kan maken (oproepen)
Ik snap niet wat je hier mee bedoelt; mag je nog wat beter uitleggen.

waarom kan je de tekst die in de keuzelijst is verschenen niet kopiëren?
Dat kan wel. Gewoon <CtrL+<c> en je hebt de tekst gekopieerd.
 
Hoi,

Als je een tekstveld invult zit er aan de rechterzijde vaak een kruisje om ingetypte tekst te verwijder dus dan heb je weer een leeg invoerveld.
En het kopiëren van tekst gaat ook niet met Ctrl C het zijn 3 kolommen naast elkaar en de donkere balk loopt dus over alle drie de kolommen.

Bvb Hartelijke dank.

Klaas
 
Je kopieert de waarde die je in de keuzelijst ziet, dus de eerste zichtbare kolom. Maar je vroeg ook niet naar het kopiëren van een andere kolom, alleen naar het kopiëren van de tekst uit de keuzelijst. En dat is de eerste kolom in mijn optiek.

Als je een tekstveld invult zit er aan de rechterzijde vaak een kruisje om ingetypte tekst te verwijder dus dan heb je weer een leeg invoerveld.
Ik heb al heel wat databases gemaakt, maar nog nooit een kruisje gezien bij een tekstveld. Dat wil ik dan dus wel eens zien :).
 
Invoer Cryptogrammen.jpg

Ik heb een plaatje erbij gedaan, bij het kopiëren krijg ik alleen 17 van de kolom veld_aantal, en de eerste 2 velden niet.
Ik bedoel met het tekstvak als je ergens op internet je naam en adres moet invullen gebeurd het vaak dat je bij het intoetsen van de eerste letter er een kruisje te voorschijn komt en als je daar dan op drukt wordt de ingetoetste tekst verwijderd.
Maar ik misschien kan een tekstvak van access dat ook. vandaar mijn vraag.

Bvb Hartelijke dank.

Klaas
 
Laatst bewerkt:
Een tekstvak op een webpagina mag je natuurlijk niet vergelijken met een tekstvak in Access. Als je in Access iets intypt in een tekstvak kun je dat vak met <Esc> weer leeg maken. Daar hebben de meeste mensen meer dan genoeg aan, al was het maar omdat je bij het typen doorgaans je vingers gebruikt, en niet de muis.
Wat je met je plaatje wilt snap in nog niet helemaal; een keuzelijst is gekoppeld aan één kolom uit de lijst, en die waarde kun je dus opslaan of hergebruiken. Bij jou staat de optie <Afhankelijke kolom dan blijkbaar op kolom 3.
 
Ik heb het begrepen en heb de 3 veranderd in 2 en nu heb ik de juiste kolom die ik wil kopiëren.
Wat betreft het tekstvak was ook maar een vraagje of dat wel of niet mogelijk is.
Dan rest mij u nog heel hartelijk te bedanken voor uw inzet om mij te helpen bij voor mij toch moeilijke stof, maar leuk als het uiteindelijk werkt nogmaals dank hiervoor.

Groet Klaas
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan