13. september 2004 - 09:38Der 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...
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
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?
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
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.
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)
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
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.
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
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
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
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.