Avatar billede phi-del Nybegynder
07. marts 2005 - 15:09 Der er 44 kommentarer og
1 løsning

farver på knapper

Hej til alle.

Jeg har en form, som har en masse knapper som referre til andre forms. disse andre forms er koblet op til en tabel i min database.

Jeg skal lave noget ved alle disse tabeller så de får en anden farve hvis det er data i deres formular, som er koblet op til en underligende tabel. ?

er der nogen der har en ide om hvordan det kan lad sig gøre
07. marts 2005 - 15:13 #1
Du kan kun skifte forgrundfarve på knapper. det gøres f.eks. med denne sætning:

Me!cmdKnap.Forecolor = vbred

Så jeg forestiller mig noget i denne stil:

If Dcount("*", "Tabel1") > 0 then
    Me!cmdKnapTabel1.Forecolor = vbred
else
    Me!cmdKnapTabel1.Forecolor = vbblack
Endif

If Dcount("*", "Tabel2") > 0 then
    Me!cmdKnapTabel2.Forecolor = vbred
else
    Me!cmdKnapTabel2.Forecolor = vbblack
Endif
Avatar billede jensen363 Forsker
07. marts 2005 - 15:15 #2
Idé : lav en forespørgsel som tæller antal records i den aktuelle tabel og lad funktionsknappen have fed skrift ( font bold ) hvis antal er større end 0
Avatar billede phi-del Nybegynder
07. marts 2005 - 15:16 #3
hvor skal denne kode skrives ?
Avatar billede jensen363 Forsker
07. marts 2005 - 15:16 #4
Alternativt lade knappen være gennemsigtig, og styr farven i et underliggende kontrolelement
07. marts 2005 - 15:18 #5
Koden kan ligge på formularens vedIndlæsning. Eller på VedAktuel hvis udfaldet kan ændre sig når man bladre på formularen.
07. marts 2005 - 15:20 #6
Ideen med at gøre den gennemsigtig er meget god, Jensen. Det er en måde at snyde den på...
07. marts 2005 - 15:21 #7
I stedet for at skifte farve kan du også bruge:

Me!cmdKnap.enabled = false

hvorved knappen helt disables, når der ingen data er i tabellen (og man derfor ikke har grund til at åbne formularen)
Avatar billede jensen363 Forsker
07. marts 2005 - 15:22 #8
Benytter selv gennemsigtige funktionsknapper til menuer, bygget op omkring eksempelvis diagrammer m.v.
Avatar billede phi-del Nybegynder
08. marts 2005 - 08:41 #9
jeg kan ikke rigtige bruge det der med gennemsigtige knapper der folk skal kunne trykke på dem og udfylde noget i formularne, men de skal have andet farve for at visse at der allerede er noget i dem under visse betingelse
08. marts 2005 - 08:50 #10
Prøvede du så mit forslag?
Avatar billede phi-del Nybegynder
08. marts 2005 - 09:07 #11
på min main form er der noget der hedder stelnr, dette stelnr bruges til at bladre igennem min main tabel, men samtidiget findes den også i alle min tabeller.
du har skrevet >>  If Dcount("*", "Tabel1") > 0 then  >>  men her vil tabel1 altid være rød da den altid indholde data.
det skal være sådan at hvis bestemte data fra formen findes i Tabel1 så skal den ændre farve.

jeg tænkte noget i stil med  sætningen her, men hvordan definere jeg tabelen for rec
for det skal ind og bladre i 50 tabeller og se om Forms![Bil]![stelnr]= stelnr i tabellen, og i tilfælde skal den farve knappen

If Forms![bil]![stelnr] = rec.Fields![stelnr] Then
..................
................
...........
Avatar billede phi-del Nybegynder
08. marts 2005 - 09:47 #12
jeg har ikke kunne bruge dit forslag da jeg skal referre til et bestemt sted i min tabel og ikke hele tabellen.
har du nogle forslag =?
08. marts 2005 - 09:54 #13
Hmm, DCount kan jo medtage kriterier.

f.eks.:
If Dcount("*", "Tabel1", "Stelnr = " & Me!Stelnr) > 0 then
Avatar billede phi-del Nybegynder
08. marts 2005 - 10:07 #14
den lyser rødt selvom ordrenummeren i tabel1 ikke stemmer overens med ordrenummeren på formen =?
08. marts 2005 - 10:10 #15
hvordan ser din kode ud nu? Og hvor ligger den?
Avatar billede phi-del Nybegynder
08. marts 2005 - 10:13 #16
det er fordi dcount tæller antal poster som findes i tabellen se...
If Dcount("*", "Tabel1", "Stelnr = " & Me!Stelnr) > 0 then

Me!Stelnr  = retunere stelnr tekstboksen på formen , det er ok!
If Dcount("*", "Tabel1", "Stelnr = retunere antal felter af stelnr og der er ca 105felter men den går ikke ind og ser om feltet stelnr 231 findes
08. marts 2005 - 10:31 #17
Jeg er ikke helt med!?

Hvis ME!Stelnr = 231, så skulle nedenstående udtryk give antal poster, hvor stelnr = 231:

If Dcount("*", "Tabel1", "Stelnr = " & Me!Stelnr) > 0 then

Er det ikke tilfældet?

Hvor lægger du koden? På form_Current eller Form_Load?
Avatar billede phi-del Nybegynder
08. marts 2005 - 10:40 #18
jeg har lagt koden i formen ved aktuel .

midlertidiligt har jeg undersøgt og fundet noget der hedder DLookup

If DLookup("Stelnr", "Bil = " & Me.stelnr) Then
    Me!btn_reg.ForeColor = vbRed
Else
    Me!btn_reg.ForeColor = vbBlack
End If


men jeg kan hellere ikke få det her til at fungere ????  :( :(
Avatar billede phi-del Nybegynder
08. marts 2005 - 10:43 #19
det er på form_Current jeg har lagt koden
08. marts 2005 - 10:50 #20
Du mangler tabel-angivelse i din Dlookup (samme syntaks som Dcount)

Hvis Dlookup virker, så virker Dcount også. Og den er bare lidt nemmere at bruge.

Hvis stelnr (og Bil) er tekst, så skal koden se således ud:

If Dcount("*", "Bil = '" & Me!stelnr & "'") > 0 Then
    Me!btn_reg.ForeColor = vbRed
Else
    Me!btn_reg.ForeColor = vbBlack
End If
Avatar billede phi-del Nybegynder
08. marts 2005 - 13:06 #21
Dlookup virker ikke  , men det er ikke tekst det hele er tal
Avatar billede phi-del Nybegynder
08. marts 2005 - 13:09 #22
bil er tabel nr hvor definere du stelnr i tabellen bil ?

If Dcount("*", "Bil = '" & Me!stelnr & "'") > 0 Then
    Me!btn_reg.ForeColor = vbRed
Else
    Me!btn_reg.ForeColor = vbBlack
End If
08. marts 2005 - 13:12 #23
If Dcount("*", "Bil", "Stelnr = " & Me!stelnr) > 0 Then
    Me!btn_reg.ForeColor = vbRed
Else
    Me!btn_reg.ForeColor = vbBlack
End If

Prøv at stille markøren i første linie (den med IF) og tryk F9 for at indsætte et breakpoint.
Start formularen, hvorefter Access gerne skulle stille sig på den røde linie. Herefter kan du singlesteppe med F8 og samtidig aflæse de forskellige værdier (bl.a. Me!Stelnr) ved at holde musen hen over udtrykket. Du kan også markere hele Dcoount-funktionen og trykke Shift+F9 for at se værdien.
Avatar billede phi-del Nybegynder
08. marts 2005 - 13:20 #24
Me!stelnr = 1551
men den kan ikke finde tabellen eller forsp....bil= 1551
Avatar billede phi-del Nybegynder
08. marts 2005 - 13:22 #25
og jeg har en tabel der hedder bil og jeg har også en atributt som hedder stelnr .
Me!stelnr =1551 kommer fra formen
Avatar billede phi-del Nybegynder
08. marts 2005 - 13:24 #26
Run-time error '3078'

Microsoft Jet-databasemotoren kan ikke finde inputtabellen eller forsp....
"Bil = '1551'". kontroller, at den findes, og at navnet er stavet korrekt.
08. marts 2005 - 13:26 #27
du bruger heller ikke den syntaks, som jeg skev sidst:
If Dcount("*", "Bil", "Stelnr = " & Me!stelnr) > 0 Then
Avatar billede phi-del Nybegynder
08. marts 2005 - 13:29 #28
jeg har ændret det til
If DCount("*", "BIL", "Stelnr = '" & Me!stelnr & "'") > 0 Then
-........................
..........


selvom bil tabellen ikke indholder en stelnr som er = me!stelnr ???
Avatar billede phi-del Nybegynder
08. marts 2005 - 13:31 #29
okay, nu har jeg ændret det til
If Dcount("*", "Bil", "Stelnr = " & Me!stelnr) > 0 Then

men den lyser rødst selvom bil tabellen ikke indholder en stelnr som er = me!stelnr ???
08. marts 2005 - 13:39 #30
Mystisk....jeg tror, at vi er derude (efter 30 indlæg), hvor det kunne være en fordel, hvis du havde mulighed for at sende mig databasen? Så vil jeg kunne finde fejlen på et splitsekund.
Har du mulighed for det?
Avatar billede phi-del Nybegynder
08. marts 2005 - 13:42 #31
jeg har desvære ikke mullighed for at sende databasen
08. marts 2005 - 13:46 #32
ok.

Hvilken værdi giver Dcount("*", "Bil", "Stelnr = " & Me!stelnr)?
Avatar billede phi-del Nybegynder
08. marts 2005 - 13:50 #33
57
Avatar billede phi-del Nybegynder
08. marts 2005 - 13:51 #34
Stelnr forkommer 57 gange i tabellen bil  !
08. marts 2005 - 13:51 #35
Måske er det i virkeligheden den forkerte tabel, du slår op i?

Hvis Bil er den tabel, som din hovedformular er baseret på, så er det jo klart, at den altid vil være rød.

If Dcount("*", "Din undertabel", "Stelnr = " & Me!stelnr) > 0 Then
Avatar billede phi-del Nybegynder
08. marts 2005 - 13:52 #36
men nu har minimeret det her til så der kun findes 15 gange

msgBox Dcount("*", "Bil", "Stelnr = " & Me!stelnr)?
giver nu 17 , og det er de antal records der findes i bil
08. marts 2005 - 13:54 #37
jeg har lavet et lille eks. som du kan kigge på, så du måske kan spore dig frem til fejlen:

http://www.makeiteasy.dk/eksempler/Eksperten/Biler.zip
Avatar billede phi-del Nybegynder
08. marts 2005 - 13:55 #38
min hovedformular refere til en tabel der hedder vogn
min hovedformular har også en felt der hedder stelnr og denne findes også i vogn tabelen

i hovedformularen (Vogn) er der en knap som hedder bil i den er der en formular som hedder bilformular og den er så koblet op til en tabel som hedder BIL
i Bil tabellen findes der en attribut som hedder stelnr
Avatar billede phi-del Nybegynder
08. marts 2005 - 14:04 #39
jeg kan godt se at din virker men hvorfor virker min ikke :(
08. marts 2005 - 14:33 #40
du har heller ikke mulighed for at lave en ny database og blot importere de nødvendige formularer og tabeller (og evt slette følsomme data) og så sende den til mig?

Det er næsten umuligt at gætte sig til hvor fejlen kan være. det er jo så lidt, der skal til...
Avatar billede phi-del Nybegynder
08. marts 2005 - 14:36 #41
aha... så fandt jeg det langt om længe.

Problemmet lå i Tabelen bilforspørge.. fordi den bladre igennem andre kritier end Stelnr, og det skal den blive ved med.
Men har derfor taget den fra Bil tabellen
Avatar billede phi-del Nybegynder
08. marts 2005 - 14:36 #42
Takker mange gange    :) :)
Avatar billede phi-del Nybegynder
08. marts 2005 - 14:37 #43
For hjælpen
08. marts 2005 - 14:37 #44
Super - godt at det lykkedes :o)
Avatar billede phi-del Nybegynder
08. marts 2005 - 15:03 #45
:)
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Ingeniør til Satellitkommunikation

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Sektionschef til Enterprise Arkitektur i Forsvaret på Østerbro