Uitleg codering?

Status
Niet open voor verdere reacties.
Ik zal eens een poging wagen ;)

Ad 1: je bent niet de eerste, en zult zeker niet de laatste zijn. Schrale troost vermoedelijk...
Ad 4: waarschijnlijk doe je iets verkeerd :)
Ad 5: die snap ik ook niet.... Misschien een gevolg van punt 4?
Ad 6: blond is geen kleur, maar een State Of Mind ;)

Laten we het eens over puntje 3 hebben. En daar dan de code voor gebruiken die ik voor Criteriumvakje 1 heb gemaakt.

[/CODE]Private Sub txtCriteria1_Change()
1 strName = Screen.ActiveControl.Name
2 strTag = Screen.ActiveControl.Tag
3 strValue = Me.txtCriteria1.Text
4 CheckFilter strName, strValue
5 Me.txtCriteria1.SetFocus
6 Me.txtCriteria1 = strValue
7 Me.txtCriteria1.SelStart = Me.txtCriteria1.SelLength
End Sub[/CODE]

In regel 1, regel 2 en regel 3 worden respectievelijk de Naam van het tekstvak, de Info eigenschap van dat tekstveld en de ingetypte Tekst van dat tekstveld uitgelezen en in een variabele gezet.
Vervolgens wordt in regel 4 de procedure CheckFilter aangeroepen. Deze functie staat apart, en hij stelt de feitenlijke filtering samen. Die kan ik eventueel later nog wel uitleggen. Maar die is, zoals je al wel gezien zal hebben, een tikkeltje gecompliceerd...
Als de functie CheckFilter klaar is, gaat de procedure verder met regel 5: de focus terugzetten op het tekstvak. Want het maken van het filter heeft de focus verplaatst naar de andere tekstvakken.
Voor de zekerheid wordt het criterium veld gevuld met de tekst die al is ingetypt. Die was in regel 3 uitgelezen, en in een variabele gezet voor dit doel.
Als een tekstvak de focus heeft, is de tekst daarvan meestal geselecteerd. Dat schiet niet erg op als je wilt filteren op een aantal letters. Vandaar dat in regel 7 de cursor aan het eind van de tekstregel wordt gezet. En dat doe je dus met SelStart en Sellength: SelStart bepaalt de positie van de tekstcursor, en SelLength rekent uit hoeveel tekens er in het tekstvak staan. Typ je één letter, dan SelLength =1, en SelStart is dan ook 1. Heb je twee letters, dan verandert Sellength naar 2, en de startpositie dus ook. Met SelStart=SelLength zorg je er dus voor dat de cursor altijd achter de ingetypte tekst staat, zodat je kunt doortypen.
Laat je deze regel weg, dan moet je steeds op de juiste plek klikken voordat je verder kunt typen.
Hopelijk is het weer wat duidelijker?
 
Ja een stuk duidelijk maar lost mijn probleem niet op. Met andere woorden ik snap wat de code doet maar hoe ik de problemen die ik met de database ondervindt nog niet.

Wat ik met mijn ad.4 bedoelde is dat als ik in het zoekveld ziscode invul 1234567 dan zoekt die niet naar een overeenkomstige ziscode maar naar een vergelijkbare patientID

bv ik toets bij ziscode 123 in dan vindt JDM0123 met ziscode 8-59-02-89

Wat ik met ad.5 bedoeld is dat als ik bv bij het zoekveld ziscode 1234 wil intoetsen dan geeft die een foutmelding (2185) en geeft die aan dat er zit in de code
Code:
Me.txtCriteria1.SelStart = Me.txtCriteria1.SelLength

Er wordt dan aangegeven dat sellenght = 4 (zie ook bijlage naamloos)

naamloos.jpg
Bekijk bijlage Patientendatabase zoekformulier.part1.rar
Bekijk bijlage Patientendatabase zoekformulier.part2.rar
 
Laatst bewerkt:
Ik moet bekennen dat ik de procedure niet helemaal tot het gaatje heb getest; hij werkt maar gedeeltelijk, om precies te zijn: hij maakt maar één record aan in de matrix variabele. En leest vervolgens ook nog eens het verkeerde veld in.... Ik heb de matrix variabele vervangen door drie aparte, en nu werkt hij prima.
 

Bijlagen

  • Patientendatabase zoekformulier.part01.rar
    100 KB · Weergaven: 15
  • Patientendatabase zoekformulier.part02.rar
    32,5 KB · Weergaven: 20
Is het probleem al opgelost? Zo ja, mag je de vraag op Opgelost zetten. Zo Nee: wat is nu het probleem?
 
Bedoel je daarmee dat mijn voorbeeldje niet werkt?
 
Da's vreemd, want bij mij doetie het tadelloos.... wat doet hij volgens jou niet goed?
 
Oke ik heb in de database even een makkelijk terug te zoeken voorbeeld gezet;

PatientID: TIKI0001
ZIS Code: 1234567
Study: TIKI

Als je nu zoekt met PatientID en je tikt in TIKI0001 zoekt die goed, zoek je nu op ZIS Code en je toetst 1234567 in .... dan krijg je te zien PatientID JDM0123

Plus hij geeft foutmeldingen en weer de melding dat de SelLenght is 3.

Groetjes,

Simone
 
Ik constateer inderdaad wel een fout op het moment dat er een foutieve code wordt ingetypt, waardoor er geen records over blijven. Het formulier kan dan niet filteren, blijft daar op hangen en staat dan op het verkeerde object, zodat de Selstart functie niet werkt. En dat veroorzaakt jouw probleem. Doordat ik alleen heb getest op correcte filters, had ik dat probleem niet. (ik ga natuurlijk ook niet vrijwillig fouten maken ;) )
Met een check op het aantal records is dat wel te ondervangen... Ik heb 'm nog niet helemaal foutloos, dat komt vanavond wel.
 
Is het iets wat ik verkeerd heb gedaan? Staat het in het formulier fout of in de codering? :shocked:
 
De fout ligt niet bij jou, maar (gedeeltelijk) in de code. Ik heb namelijk geen foutcheck ingebouwd op het intypen van een fout filter. Eigenlijk zou dat wel moeten, want medewerkers maken wel eens een foutje. Ik uiteraard niet :cool:
 
Ik zal vanavond een versie voor Dummies posten....
 
Wil niet opdringerig zijn maar ben wel heel nieuwsgierig of het lukt en waar dan de fout in zat.

Groetjes,

Simone
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan