Avatar billede puppetmaster Nybegynder
15. april 2002 - 13:05 Der er 26 kommentarer og
1 løsning

VBA-funktion til enable/disable en knap

Funktionen skal kigge i tabellen Log, hente feltet Dato, checke om der er en forekomst af Dato-feltet der er over 6 mdr. gammel. Hvis ja, skal knappen knpSletLogfil være "enabled". Hvis nej, skal knappen være "disabled".
Her er hvad jeg har indtil videre:

Private Sub Form_Open(Cancel As Integer)
  Dim TheDate As Date
  Dim Msg
  TheDate = InputBox("Enter a date")
  Msg = DateDiff("m", Now, TheDate)
  If Msg > 6 Then
    knpSletLogfil.Enabled = True
  Else
    knpSletLogfil.Enabled = False
  End If
End Sub

Jeg får en fejl i linien Msg = DateDiff("m", Now, TheDate"): TYPE MISMATCH
15. april 2002 - 13:08 #1
Prøv med: Msg = DateDiff("m", Now, "#" & TheDate & "#")
15. april 2002 - 13:09 #2
eller:
Msg = DateDiff("m", Now, cvdate(TheDate))
Avatar billede puppetmaster Nybegynder
15. april 2002 - 13:09 #3
Samme resultat...
Avatar billede puppetmaster Nybegynder
15. april 2002 - 13:10 #4
samme igen
Avatar billede puppetmaster Nybegynder
15. april 2002 - 13:10 #5
Kan det laves med et recordset eller noget der henad? Any links to info on how to use recordset's?
Avatar billede puppetmaster Nybegynder
15. april 2002 - 13:12 #6
Accepteret svar????
Jeg har ikke accepteret noget endnu!!! :(
15. april 2002 - 13:17 #7
Jeg undrede mig også!! Men du får pointene retur her: http://www.eksperten.dk/spm/198372

tilbage til spm:

Der er nogle ting her, som ikke helt passer sammen:
Din msg vil aldrig blive støøre end 6, da tallet giver et negativt tal (med mindre at man taster en dato ud i fremtiden)

Endvidere laver denne løsning jo ikke noget opslag i tabellen! Alt er baseret på det, som brugeren indtaster....?
Avatar billede puppetmaster Nybegynder
15. april 2002 - 13:18 #8
Undskyld, det var noget gammelt kode jeg fik pastet.........beklager.
Spørgsmålet er hvor jeg kan finde noget info om hvordan man slår op i databasen vha recordset eller hvad det nu hedder.
15. april 2002 - 13:19 #9
Arh, TheDate skal være Tekst-format!
Og herefter skal du bruge én af mine forslag!
15. april 2002 - 13:38 #10
okay....det var jo noget helt andet ;o)

Jeg vil umiddelbart sige at Online-hjælpen indeholder alt hvad man behøver. Åbn hjælpen inde fra Visual Basic og søg efter "Recordset". Problemet er så bare at det virker totalt uoverskueligt med alle de hits :o(

Princippet er at du definere et object, som repræsenterer en tabel eller forespørgsel (f.eks. kaldes rs)

Dette rs kan du så søge og bladre i, ligesom du kan oprette, redigere og slette poster.

Dette link indeholder en (så vidt jeg ved) fuldstændig dokumentation af ADO (som er datamodellen og den som leverer Recordset-objektet): http://www.microsoft.com/data/ado/adotechinfo/dao2ado.htm
Her er en masse rigtig gode eksempler, selvom niveauet ofte kan være højt.

Ellers vil jeg anbefale dig at købe en Access VBA-bog, som helt sikkert vil gennemgå Recordsets. På engelsk kan jeg anbefale: Beginning Access 2000 VBA udgivet af forlaget WROX.

Ellers giver jeg da gerne lidt undervisning/konsulentassistance ;o)

/Thomas
www.makeiteasy.dk
Avatar billede puppetmaster Nybegynder
15. april 2002 - 13:38 #11
Hmmm...........jeg tror jeg er lidt på vildspor....hvis du glemmer min kode lidt......hvordan ville du løse problemet?
(Funktionen skal kigge i tabellen Log, hente feltet Dato, checke om der er en forekomst af Dato-feltet der er over 6 mdr. gammel. Hvis ja, skal knappen knpSletLogfil være "enabled". Hvis nej, skal knappen være "disabled".)
Avatar billede puppetmaster Nybegynder
15. april 2002 - 13:40 #12
Det lyder en del som ASP, som jo bla. bruger VB, fra hvilken VBA har "arvet" en del......jeg kigger på dit link og giver point snart
15. april 2002 - 13:48 #13
Private Sub Form_Open(Cancel As Integer)
  if DCount("*", "Log", "Dato < " & Dateadd("m",-6, now)) > 0 then
    knpSletLogfil.Enabled = True
  Else
    knpSletLogfil.Enabled = False
  End If
End Sub
Avatar billede puppetmaster Nybegynder
15. april 2002 - 13:50 #14
Det ser jo kanon ud....men now returnerer vist også tidspunktet på dagen, hvilket Dato fra Log-tabellen ikke gør....
Avatar billede puppetmaster Nybegynder
15. april 2002 - 13:51 #15
Det er godt nok også "condensed code" du der fremviser......kigger lige i hjælpefilen til VBA
15. april 2002 - 13:52 #16
Det kan sådan set gøre kortere:
Private Sub Form_Open(Cancel As Integer)
  Me!knpSletLogfil.Enabled = DCount("*", "Log", "Dato<  DateAdd('m', -6, Now)")
end sub
15. april 2002 - 13:53 #17
Private Sub Form_Open(Cancel As Integer)
  Me!knpSletLogfil.Enabled = DCount("*", "Log", "Dato<  DateAdd('m', -6, Date)")
end sub

(Hvis du ikke vil have klokkeslet med - men det gør ingen forskel)
Avatar billede puppetmaster Nybegynder
15. april 2002 - 13:56 #18
Well, jeg får forskellige fejl, afhængig af hvilken løsning jeg bruger:
"Udtrykket, du har indtastet som en forespørgselsparameter, gav fejlen Objektet indeholder ikke Automations-objektet "Date". (ved brug af koden fra 13:52:44)
15. april 2002 - 13:59 #19
Prøv med:
Private Sub Form_Open(Cancel As Integer)
  Me!knpSletLogfil.Enabled = DCount("*", "Log", "[Dato] < DateAdd('m', -6, Date)")
end sub
15. april 2002 - 14:01 #20
Bortset fra det, så bør koden også ligge på Form_Load i stedet for Form_Open.
Men hvis det ikke giver nogle problemer som det er nu, så behøver du ikke at flytte det. Der er bare mange egenskaber, som man ikke kan sætte på Form_Open, da formularen endnu ikke er færdig-indlæst på det tidspunkt.
Avatar billede puppetmaster Nybegynder
15. april 2002 - 14:02 #21
Takker, thomas, koden med Now virker alligevel.....nu skal jeg bare finde ud af om nogle af funktionerne "runder af"...........
Avatar billede puppetmaster Nybegynder
15. april 2002 - 14:03 #22
Aaahhh....ok, tak for det gode råd. (flytter den straks!)
Avatar billede puppetmaster Nybegynder
15. april 2002 - 14:05 #23
Den skelner på DAGEN!!! KANON! :) Tak endnu engang!
15. april 2002 - 15:03 #24
well, skulle jeg så ikke have nogle point retur igen? Bare for god ordens skyld :o)

/Thomas
Avatar billede puppetmaster Nybegynder
15. april 2002 - 15:06 #25
Beklager SÅÅÅ |-                -| meget! Jeg har ikke haft forbindelse til eksperten siden sidste post...tildeler lige et par point....
Avatar billede puppetmaster Nybegynder
15. april 2002 - 15:07 #26
Svar lige her:
Avatar billede puppetmaster Nybegynder
15. april 2002 - 15:08 #27
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