Avatar billede Slettet bruger
09. maj 2007 - 14:49 Der er 8 kommentarer og
1 løsning

Subforms og flere combo bokse

Hej alle

Jeg har en form der indeholder en subform.

Hovedformen indeholder data baseret på en query og er linket til subformen (tabel) gennem 4 felter (Account_ID, User_ID, Year og Week)

Subformen skal vise data på baggrund af 2 combobokse i hovedformen. Den ene er cboAccount (Account_ID), den anden cboAgent (User_ID). Year og Week er et statisk felt i Hovedformen.

Når Account er valgt, kan Agent vælges (bestemte agents tilknyttet bestemte accounts).

Har i nogen tips til hvordan det kan komme til at fungere. Det jeg har indtil videre fungerer næsten, men ikke 100%, og koden føles lidt rodet. Den opdaterer ikke records ordentligt.


Kode:

Private Sub cboAgent_AfterUpdate()
    ' Find the record that matches the control.
    Dim rs As Object
   
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[User_ID] = " & Str(Nz(Me![cboAgent], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
   
    'Update subform
    Sub_TAG.Requery
End Sub
Private Sub cboAccount_AfterUpdate()
    ' Find the record that matches the control.
    Dim rs As Object
   
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[Account_ID] = " & Str(Nz(Me![cboAccount], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
   
    'Update subform and agents
    Sub_TAG.Requery
    cboAgent.Requery
   
End Sub
Avatar billede mugs Novice
09. maj 2007 - 15:07 #1
Ikke umiddelbart. Men prøv at se på Thomas Jepsen's hjemmeside makeiteasy. Der ligger en fremragende dynamisk søgefunktion med op til flere combo. Det er muligt du kan bruge den afhængig af, hvordan din egen db er skruet samen.

Den ligger oppe til højre under downloads og hedder noget i stil med "dynamisk søge- og filtreringsfumktion".
Avatar billede terry Ekspert
09. maj 2007 - 15:40 #2
To find a specific record in the main form shouldnt you include accound and agent when you findfirst?

And maybe you should only find first AFTER choosing agent because this is dependant on the account chosen.

So when you change accound, dont findfirst, only update agent combo and requery sub form (to empty it).
Then when you choose agent include accound and agent to findfirst then requery sub form
Avatar billede Slettet bruger
09. maj 2007 - 19:33 #3
terry, I found a solution myself by doing findfirst on agent only, that seemed to work fine. However, if I can siply my code and make it better, that would be great.

Can you give me some code samples on what you suggest? I'm a little rusty :-)
Avatar billede Slettet bruger
09. maj 2007 - 19:34 #4
siply = simplify
Avatar billede terry Ekspert
09. maj 2007 - 20:34 #5
Dont understand how only using agent in findfirst works. That would mean that an agent only has one account and I dont think that is right!

If you can send me your dB then I can maybe get it working for you.

ekspertenATsanthell.dk
change AT to @
Avatar billede Slettet bruger
09. maj 2007 - 22:45 #6
Du kan også lave 2 mere forespørgsler... en som har kriteriet med account og en som har begge kriterier. Du kan så lave flg. kode:

public sub SkiftQuery()
if isnull(me.cboAccount) then
sub_TAG.recordsource = "nuværende forespørgsel"
else
if isnull(me.cboAgent) then
sub_TAG.recordsource = "forespørgsel med Account"
else
sub_TAG.recordsource = "forespørgsel med begge kriterier"
end if
end if
sub_TAG.requery
end sub

Private Sub cboAccount_AfterUpdate()
me.cboAgent=null
me.cboAgent.Requery
skiftquery
end sub

Private Sub cboAgent_AfterUpdate()
skiftquery
end sub
Avatar billede terry Ekspert
10. maj 2007 - 12:12 #7
this works

Private Sub cboAgent_AfterUpdate()
    ' Find the record that matches the control.
    Dim rs As Object
   
    Set rs = Me.Recordset.Clone
   
    rs.FindFirst "[Account_ID] = " & Str(Nz(Me![cboAccount], 0)) & " AND " & "[User_ID] = " & Str(Nz(Me![cboAgent], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    rs.Close
   
    'Update subform
    Sub_TAG.Requery
   
End Sub

Private Sub cboAccount_AfterUpdate()
    'Update subform and agents
    cboAgent.Requery
    Sub_TAG.Requery
   
End Sub
Avatar billede Slettet bruger
10. maj 2007 - 14:06 #8
Terry, you're a lifesaver, thanks... It's so simple looking at it hehe.
While looking at the dB, did you notice any other clumsy code that I could improve on? I'd love to get better hehe.
Avatar billede terry Ekspert
10. maj 2007 - 18:01 #9
Thanks.
I only looked at the code relevant to the problem, but if I get a bit of free time I'll take a look, although it wont be easy as I dont know what the code should do.
If I have any questions I have your email.
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