Avatar billede deducer Nybegynder
13. september 2004 - 09:38 Der er 15 kommentarer og
1 løsning

Give Combo box nye data

Jeg har brug for at kunne give en Combo box nye data.
Den er placeret på en underformular, der kun vises som dataark.
Hver gang en række får fokus i dette dataark, skal combo boxen indeholde data, der hentes frem udfra øvrige data i den aktuelle række.
Jeg har data i et Recordset og hvis de kan bruges direkte
er det jo fedt.
I Hjælp-filen har jeg ikke kunnet finde hjælp...
13. september 2004 - 09:45 #1
Du kan ikke umiddelbart knytte et recordset til en rækkekilde på en komboboks.

Enten skal data over i en tabel eller du skal bygge en tekststreng op, som indeholder værdierne adskildt med semikolon. F.eks. således:
værdi1;værdi2;værdi3 osv

For at bruge den sidste model, skal du huske at sætte Rækkekildetypen = værdiliste.

Du skal dog være opmærksom på, at hvis din komboboks skal indeholde en skjult kolonne (f.eks. et ID) som bundet kolonne, vil det ikke virke korrekt på en fortløbende formular, da du vil opleve at komboboksen bliver blank på andre rækker, når du skifter post. Dette skyldes, at når du skifter rækkekilden for én post, skiftes den også for alle de andre.

Så kan du fortælle lidt mere om hvordan dine data ser ud?

mvh
Thomas
Avatar billede deducer Nybegynder
13. september 2004 - 09:54 #2
Kombo boxen skal indeholde navne...
Underdataarket viser bookinger og der skal knyttes en guide til hver
booking.
Det er ikke alle guider der kan guide alle arrangementer og derfor
skal jeg finde dem frem alt efter hvilket arrangement der er i den aktive række, og forøvrigt også pille de guider fra der er "brugt" i det konkrete tidsrum
Så mon ikke tekststrengen med semikolon virker .. jeg prøver lige
Avatar billede deducer Nybegynder
13. september 2004 - 10:20 #3
Thomas
Jeg ved ikke om jeg har fulgt forskrifterne helt, men det virker næsten.
Jeg får nu kun een række i kombo boxen, hvor min tekststreng står fint med semikoloner.
13. september 2004 - 10:24 #4
hmm, måske husker jeg forkert: prøv at sætte komma'er i stedet for semikolon.
Access er lidt inkonsekvent på det område; når man arbejder med VBA, skal man som regel bruge komme - undtagen i visse situationer. Jeg troede at dette var én af undtagelserne. Men det lyder som om det skal være komma.

Hvis du tastede dem manuelt i egenskaben, skal det være semikolon. Bare for at gøre forvirringen lidt større ;o)
Avatar billede deducer Nybegynder
13. september 2004 - 10:42 #5
Komma gjorde ikke den store forskel.
Måske er der noget andet galt....
Jeg har sat Rækkekildetypen til værdiliste.
Kontrolelementkilden er stadig Guide (felt fra tabel)
Ved fokus (på Guide feltet) kalder jeg en metode, der returnerer strengen med navne og sætter Guide = denne returnering
13. september 2004 - 10:43 #6
Prøv at taste værdierne ind manuelt i rækkekilde-egenskaben (med semikolon).

Giver det det ønskede resultat?
13. september 2004 - 10:44 #7
Du bør også bruge VedAktuel på formularen i stedet for VedFokus
Avatar billede deducer Nybegynder
13. september 2004 - 10:54 #8
Umiddelbart giver indtastning af navnene (med semikolon) i rækkekilde
slet ikke data i komboboxen.
Jeg kan godt se at Ved Aktuel (på formularen) er bedre end Ved Fokus(på feltet),
jeg er ikke så velbevandret i VBA.
Avatar billede deducer Nybegynder
13. september 2004 - 10:58 #9
Sorry
Der skulle vist lige gemmes.
Indtastning af navnen gav det ønskede resultat.
jeg har nu de navne i kb der er indtastet i rækkekilde
13. september 2004 - 11:00 #10
men koden virker stadig ikke?
Prøv om det jælper at opdatere efter at du har ændret rækkekilden:

Me![Din komboboks].requery
Avatar billede deducer Nybegynder
13. september 2004 - 11:04 #11
Koden virker vist godt nok.
Den henter i hvertfald de ønskede navne, men komboboxen viser kun een række
hvor navnene står med semikoloner
Altså : jeg har nu slettet den manuelle indtasninng og lader koden finde navnene
13. september 2004 - 11:21 #12
hvormange kolonner har du angivet, at der skal være? Antal kolonner bør være lig 1.


Hvordan ser koden ud, som sætter egenskaben?
Avatar billede deducer Nybegynder
13. september 2004 - 11:31 #13
Antal kolonner er 1
Koden der henter navnene ser sådan ud :

Function strGuider() As String
  Dim recSet As Recordset
  Dim arrID As Long
  arrID = DLookup("arrangementID", "tblArrangement", "Navn  = '" & Me.Arrangement & "'")
  Set recSet = CurrentDb.OpenRecordset("SELECT Navn FROM qryGuideKanArrangement WHERE refArrangementID = " & arrID)

  With recSet
    Do While Not .EOF
      strGuider = strGuider & .Fields(0) & "; "
   
      .MoveNext
    Loop
  End With
  strGuider = strGuider & "ÅÅge"
  recSet.Close
   
End Function

ÅÅge bliver sat på, fordi jeg ikke lige kan finde ud af at fjerne det sidste semikolon
Denne funktion kaldes fra Vedaktuel og Guide sættes = retuneringen
13. september 2004 - 11:37 #14
Ahh, du skal IKKE sætte Guide = strGuider.
Du skal skrive:

Me!Guide.Rowsource = strGuider

Der er et lille problem med din funktion, da du kan risikere at den løber ind i en uendelig løkke fordi du kalder funktionen inde fra sig sig.

Og hvis du vil åndgå den Ååge-ting, så skriv således:

Function strGuider() As String
  Dim recSet As DAO.Recordset
  Dim tmpGuider as String
  Dim arrID As Long
  arrID = DLookup("arrangementID", "tblArrangement", "Navn  = '" & Me.Arrangement & "'")
  Set recSet = CurrentDb.OpenRecordset("SELECT Navn FROM qryGuideKanArrangement WHERE refArrangementID = " & arrID)

  With recSet
    Do While Not .EOF
      tmpGuider = tmpGuider & .Fields(0) & "; "
   
      .MoveNext
    Loop
  End With
  tmpGuider = Left(tmpGuider, Len(tmpGuider)-2)
  recSet.Close
  strGuider = tmpGuider 
End Function
Avatar billede deducer Nybegynder
13. september 2004 - 11:44 #15
Tak Thomas
Det var fedt
13. september 2004 - 11:48 #16
Godt vi fik det til at virke :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