Just nu i M3-nätverket
Gå till innehåll

Villkorsstyrd standardtext


MvS

Rekommendera Poster

Hej!

 

Finns det någon som kan svara på hur man gör för att en standardtext skall visa sig i en kontroll i ett formulär som är villkorsstyrt av förekomsten av text i ett fält i en tabell?

 

Jag har gjort en databas som är ett kundregister med ett formulär där informationen är översiktlig. Parallellt med detta har jag ett annat formulär med mer detaljer för varje enskild post i förekommande fall. Båda formulären använder samma tabell fast visar lite olika saker.

 

Jag vill alltså lägga in en kontroll (?) i det första formuläret som signalerar med en en standardtext typ "Se detaljer!" då det finns mer detaljerad beskrivning i det fält på tabellen som jag bara visar med det andra formuläret.

 

Tacksam för svar!

 

Länk till kommentar
Dela på andra webbplatser

Cege Anderson

Hej

 

Du lägger in villkoret i den del av formuläret där du vill ha det och egenskapen VidFormatering och skriver enl exemplet nedan

 

 

If Me.KontollensNamn= "XX" Then

Me.text = "detaljerad beskrivning ...."

Me.text.Visible = True

Else

Me.text.Visible = False

End If

 

Återkom om du fastnar

 

// Cege

 

[inlägget ändrat 2010-01-08 10:48:35 av Cege Anderson]

[inlägget ändrat 2010-01-08 10:49:14 av Cege Anderson]

Länk till kommentar
Dela på andra webbplatser

Hej CG och tack för snabbt svar!

 

Förstår jag dig rätt att jag skall använda utttrycksverktyget och skriva den text du bifogade samt att "Kontrollens namn" avser den kontroll jag vill se uppfyller villkoret, eller den kontroll som skall visa standardtexten?

 

Är inte supervass på SQL...

 

Tack på förhand!

 

Magnus

 

Länk till kommentar
Dela på andra webbplatser

Cege Anderson

Hej Magnus

 

Svarade snabbt men kanske lite väl snabbt ...

Du måste använda VBA för att lösa ditt problem, det går inte mha villkorsfylld formatering eller annat (tror jag) ...

 

Svårt att ange exakt hur du skall göra. Lite är beroende på hur du vill ha det men i princip så gör du så här.

 

Du går till formulärets designläge och för den kontroll som du vill utvärdera lägger du in i den kontrollens egenskap för FöreUppdatering

 

OBS! EJ VID FORMATERING som jag angav i förra svaret! Detta gäller för rapporter.

 

Du anger mha kodverktyget ditt villkor

 

t ex If Me.KontollensNamn= "XX" Then

Där KontrollensNamn är namnet på kontrollen och "XX" är vad du vill utvärdera

 

Sedan anger du vad som skall hända om detta är sant t ex att en viss kontroll skall vara synlig och vilken text som skall stå i den kontrollen

 

Me.text = "detaljerad beskrivning ...."

Me.text.Visible = True

Else

Me.text.Visible = False

End If

 

Hmmm ... Jag tror dessutom att du måste ange att kontrollen inte skall visas när formuläret öppnas. Får återkomma när jag kommer ihåg hur man gör om ingen annan hinner före.

 

// Cege

 

 

 

Länk till kommentar
Dela på andra webbplatser

Hej igen CeGe!

 

Tack för att du tar dig tid i alla fall!

 

Jag är ingen hejare på VBA heller om än jag varit inne och nosat på det tidigare, men jag kom att tänka lite på att det bör ju vara en referens till den tabell och det fält där texten jag vill kolla finns, eller?

 

I databasen har jag följande objekt:

 

1) Formulär "VD PC" textruta "KundkortFinnes" = där jag vill att den villkorade standardtexten skall stå om villkoret uppfylls.

2) Formulär "Kundkort" som har textruta "Progress_VD" med referens till:

3) Tabellen "VD" och fältet "Progress_VD" ==> där om det finns anteckningar skall utlösa standardtexten "Kundkort finnes" i kontrollen "KundkortFinnes" i formuläret "VD PC"

 

Tror du det hjälper dig förstå vad jag vill?

 

//Magnus

 

Länk till kommentar
Dela på andra webbplatser

Cege Anderson

Hej hej

 

Visst måste det finnas en koppling till tabellerna i den kontroll du skapar.

 

Jag blir lite osäker av det du beskriver:

 

Är det så att beroende på vad som finns i ett visst formulär så skall, beroende på vad som visas i en kontroll, något hända i ett annat formulär? Är det ena formuläret ett underformulär som visas i det andra formuläret eller?

 

Det går att hänvisa till underformulär men det är lite trixigt. Se nedanstående länk.

 

http://www.mvps.org/access/forms/frm0031.htm

 

I annat fall är det IMHO ingen bra lösning men det kanske kan funka ändå.

 

OM vi ändå antar att det är endast ett formulär det handlar om borde koden bli typ:

 

If Me.Progress_VD = "*" Then

Me.KundkortFinnes. Visible = True

Else

Me.KundkortFinnes.Visible = False

End If

 

där uttrycker Me hänvisar till det aktuella formuläret.

 

Om det inte är i samma formulär blir det väldigt mycket mer komplicerat:

 

If Forms!NamnetpåFormuläret!Progress_VD = "x" Then

 

typ

 

Men: Det andra formuläret måste vara öppet och frågan är också; hur vet du att det är rätt post i det formuläret

 

Vilken version av Access använder du?

Om du kan konvertera till Access 2003 och zippa filen så kan du skicka mig databasen så kan jag titta på det.

 

// Cege

 

Länk till kommentar
Dela på andra webbplatser

Hej igen och tack för svar!

 

Nej, det är inte ett underformulär som sådant. Tyvärr kan jag ej skicka dig databasen då den är konfidentiell.

 

Det rör sig däremot om en datbas med två formulär där huvudformuläret ("VD PC") dels visar företagsnamn + uppgifter i ett fält dels olika nyckelpersoner (8 st.) kopplade till företaget. Utöver detta har jag skapat ett detaljformulär jag kallat "Kundkort" där man i en kontroll skall kunna skriva mer detaljerad information som inte skall synas i huvudformuläret ("VD PC").

 

Det innebär att huvudformuläret är kopplat till 9 tabeller.

Varje tabell innehåller 14 fält med information. Till detta är två formulär kopplade ("VD PC" samt "Kundkort").

 

Om vi borteser från tidigare beskrivningar helt så vill jag enkelt uttryckt att en kontroll ("KundkortFinnes") i formuläret "VD PC" signalera om en post i en tabell innehåller text i ett av de 14 fälten ("Progress_VD) så att man skall kunna gå in i det andra formuläret "Kundkort" i förekommande fall och se den detaljerade informationen.

 

Hoppas det förklarar bättre vad jag är ute efter.

Ursäkta om jag krånglade till det i början av denna korrespondens...

 

//Magnus

 

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...