Hej! Jag tror följande svar räcker: Hmm... Det funkar nog i VBA-kod men jag lyckas inte få det att funka i min rapport. Har du några tankar/idéer om hur uttrycket i textrutans kontrollkälla skulle se ut? Jag kan nog iofs lösa problemet genom att innan jag öppnar rapporten sätta rätt värde till en dold kontroll i mitt formulär, men eftersom jag behöver referera till ett antal såna här fält vid olika tillfällen känns det smidigare att kunna referera direkt. Det skall även fungera i kontrollkällan på kontroller i rapporter. Du skriver då på följande sätt: Funkade nästan, men när jag läste andra delen av ditt svar så såg jag att du refererade till Column istället för Columns. Utan genitivändelse funkar det mycket bättre :) Tack för hjälpen! Får ursäkta slarvfelet. Men sånt som händer om man skriver "ur huvudet" så att säga.Referera till kolumner i en kombinationsruta
Har en kombinationsruta i Access som visar tre kolumner: id (dold), strShortName och strName. Hur refererar jag till ett annat värde än ID-fältet? I en rapport har jag ett fält som länkas till [Forms]![frmCustom]![cmbProjectID] och som returnerar ID. Jag vill kunna referera till strShortName resp strName.
// JohanSv: Referera till kolumner i en kombinationsruta
<code>
id = Forms("frmCustom").cmbProjectID.Columns(0)
strShortName = Forms("frmCustom").cmbProjectID.Columns(1)
strName = Forms("frmCustom").cmbProjectID.Columns(2)
</code>Sv: Referera till kolumner i en kombinationsruta
Sv: Referera till kolumner i en kombinationsruta
=Forms("frmCustom").cmbProjectID.Columns(1)
Det är viktigt att du skriver ett likamedtecken(=) framför uttrycket.
Du kan istället gå ifrån databundna kontroller och istället använda en Label och sätta dess värde i Report_Open händelsen:
<code>
Public Property Get MyEttiket() As Label
Set MyEttiket = Me.Etikett0
End Property
Private Sub Report_Open(Cancel As Integer)
Dim frmForm As Form
Dim MyCustomForm As Form_frmCustom
For Each frmForm In Forms
If TypeOf frmForm Is Form_frmCustom Then
Set MyCustomForm = frmForm
MyEttiket.Caption = "" & MyCustomForm.cmbProjectID.Column(1)
Exit For
End If
Next
End Sub
</code>
Förklaring:
* Property MyEttiket - Ger dig intelisens för kontrollen
* For Each frmForm In Forms... Next - Går igenom alla öppna formulär. Om formuläret skulle vara stängt slipper vi felmeddelande
* TypeOf frmForm Is Form_frmCustom - Identifierar vårt formulär. Skulle kunna ersättas med frmForm.Name = "frmCustom" men snyggare/effektivare jämförelse
* MyEttiket.Caption = "" & MyCustomForm.cmbProjectID.Column(1) - Utför det du vill göra
För att koden skall fungera krävs att formuläret frmCustom har en modul. Du kommer annars få ett felmeddelande där Form_frmCustom är deklarerard.Sv: Referera till kolumner i en kombinationsruta
// JohanSv: Referera till kolumner i en kombinationsruta