Avatar billede mr.handstand Novice
22. december 2003 - 10:19 Der er 16 kommentarer og
2 løsninger

Formular opdater 5 felters værdi i eet felt afhængigt af fokus

Hejsa,

Emne: "Publish/Subscripe mellem felter på form", helst uden at flytte fokus.

Jeg har 4 felter, hvor en bruger indtaster forskellig information. Enhver indtastning i ét af de fire felter vil jeg gerne have kopieret over i et samlet "søgefelt", hvorfra en søgning kan foregår, hvis brugeren klikker på "søg". Hvordan overfører jeg løbende ændringer a la "on change", men uden at flytte fokus fra feltet, hvor inddateringen foregår. Jeg prøver at arbejde med en public variabel på min form, som ændres "on change", men jeg vil gerne knytte et felt på min form op mod denne variable, uden fokus - kan man det?

Udfordringen er at jeg har klistret et sæt events på de forskellige felter, så jeg vil gerne kunne undgå at forlade et felt, fordi hvis jeg påny sætter fokus, så kører en række events.
Avatar billede hugopedersen Nybegynder
22. december 2003 - 12:31 #1
Hvis du på on change bruger noget i stil med  Me.txtSearch = Me.txtField1 & Me.txtField2 & Me.txtField3 & Me.txtField4 så burde det ikke flytte rundt på din focus.
Avatar billede terry Ekspert
22. december 2003 - 13:01 #2
me.handstand>Try looking at this problem from another point of view! IF the user presses the "søg" button THEN build your search criteria.

You dont say HOW you intend using the "søgefelt" so I will suggest you use something on the lines of what Hugo suggests in the buttons On click event.



Private Sub Command1_Click()

    Me.txtSearch = Me.txtField1 & Me.txtField2 & Me.txtField3 & Me.txtField4

End Sub


To make use of the forms filter property you can use something like this also.



Dim sFilter As String

    sFiler = "1 " 
   
    If Len(Me.txtField1) > 0 Then
        sFilter = sFilter & " AND [SomeField1] Like '%" & Me.txtField1 & "%'"
    End If
   
    If Len(Me.txtField2) > 0 Then
        sFilter = sFilter & " AND [SomeField2] Like '%" & Me.txtField2 & "%'"
    End If
   
    If Len(Me.txtField3) > 0 Then
        sFilter = sFilter & " AND [SomeField3] Like '%" & Me.txtField3 & "%'"
    End If

    If Len(Me.txtField4) > 0 Then
        sFilter = sFilter & " AND [SomeField4] Like '%" & Me.txtField4 & "%'"
    End If


    If sFilter = "1 " Then 'No fields contain data
      me.filterOn = False
    else
      me.filter = sFilter
      me.filterOn = True
    end if

NOTE: This is NOT tested!
Avatar billede terry Ekspert
23. december 2003 - 17:33 #3
hows it going mr. ...?
Avatar billede mr.handstand Novice
25. december 2003 - 16:42 #4
Sorry for not replying - accidently I did not notice that with the new layout of Hotmail (which is my eksperten account) I need to go to "mail", in case a message arrives from someone not on the contact list. So I thought nobody had answered...

I was thinking of having the "search" field like a shaded field, ready for searching for whatever was in this field - and it should not aggregate the sum of the 4 fields, but remove what was in the field previously and copy the value of the field I am currently focusing on: Like this.

1. I start typing customers phone number and as I type the digits 123, the searchfield shows 123, clicking the search will trigger that the value is from the phone-field, and do a "like" search in phone numbers.
NOT clicking the search, but instead finish the phone number and move on to next field (e.g. spare part name) I start typing a part of the spare part name like Nvidia, which is then shown in the searchfield. If I click search, it will do a search within spare parts. The reason I have added the extra field is to let the user see what is being searched in, but also to let the user modify the search criteria without interfiering with the input frame - so after seing "nVidia" in the search field on a grey background, he might focus on the search field (background = white) and add info to that field like "Geforce", so that the Search field will read nVidia Geforce. Now the search will split the words and search via SQL for all spare parts with "nVidia" AND "Geforce" in their name.

To sum up: Can I do a "publish/subscribe" service within VBA?

Terry - where do you place your sFilter code - on the form itself?

Hugo: I will try and see if the onChange is ready for this without interfering, but often I seem to get errors like: " this cannot be done without the property having focus" - kind of messages thrown at me...

I will get back after having tested your suggestions.
Have a merry (offline) christmas - I will try to spend time with my family myself :-)
Avatar billede terry Ekspert
02. januar 2004 - 12:18 #5
Here is an example which incorperates the method give above.
http://home1.stofanet.dk/santhel/Download/Search demo 97.zip
Avatar billede terry Ekspert
02. januar 2004 - 12:19 #6
demo 97.zip is part of the link :o)
Avatar billede terry Ekspert
07. januar 2004 - 16:41 #7
do we have a status here?
Avatar billede terry Ekspert
09. januar 2004 - 11:30 #8
mr.handstand its a long holiday your having :o)
Avatar billede terry Ekspert
12. januar 2004 - 19:48 #9
can we get this question closed now?
Avatar billede mr.handstand Novice
12. januar 2004 - 20:00 #10
Sorry for being slow. The demo can be modified to fit my needs. Thanks.
Avatar billede terry Ekspert
12. januar 2004 - 20:04 #11
selv tak
Avatar billede terry Ekspert
15. januar 2004 - 20:42 #12
selv tak !
Avatar billede mr.handstand Novice
15. januar 2004 - 21:50 #13
ups :-)
Avatar billede terry Ekspert
15. januar 2004 - 22:05 #14
I dnt know if you have tried accepting my anwer if you have can you drop acomment and I will try contacting admin as I have a feeling there is a problem!
Avatar billede mr.handstand Novice
16. januar 2004 - 07:50 #15
I have accepted several times... I will do it again... :-)
Avatar billede mr.handstand Novice
16. januar 2004 - 07:52 #16
Ahh.... My mistake. I didn't see it as a listbox, but simply as a name that was already selected. In XP with only one person answering, then the listbox layout is well hidden. So I didn't select you on the list, but simply pressed accept - so I have done 4 times now, but the last time, of course I checked that the answer was in fact accepted, which I didn't do in the first cases. But now it's done. A suggestion to Eksperten would be to automatically select the person, if only 1 has replied with answers?
Avatar billede terry Ekspert
16. januar 2004 - 17:56 #17
OK, now its accepted!
og menge tak!
Avatar billede terry Ekspert
16. januar 2004 - 17:56 #18
menge = mange :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester