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

Tacksam för tips om makro


stjak

Rekommendera Poster

Hej!

 

Jag bygger en databas för olika språk. Behöver tips om hur ett makro ser för följande problem ser ut:

 

Regelbundna verb består av "stam" och "ändelse". Infinitivformen = "stam" & "ändelse". Jag tänkte skapa ett formulär i access kopplat till en tabell som bl.a. innehåller kolumnerna "infinitiv", "stam" och "ändelse". I formuläret skall "stam" och "ändelse" fyllas i. "infinitiv" skall skapas automatiskt av ett makro.

 

Hur ser makrot ut?

 

stjak

 

Länk till kommentar
Dela på andra webbplatser

Magnus Ahlkvist

Du ska inte använda macron i Access. Använd VBA-kod istället. Skillnaden mellan Makro och VBA-kod är att VBA-kod tillåter felhantering, och dessutom ger dig möjlighet att göra mer.

 

I AfterUpdate-eventet för stam- och ändelse-kontrollerna skriver du in följande kod (här förutsätter jag att kontrollerna heter stam, ändelse respektive infinitiv, byt ut mot de kontrollnamn du har i ditt formulär)

 

if not isnull(stam) and not isnull(ändelse)
infinitiv=stam & ändelse
end if

 

--

En röst talade till mig och sade:

"Le och var glad, ty det kunde vara värre".

Så jag log, och jag var glad.

Och det blev värre.

 

Länk till kommentar
Dela på andra webbplatser

Tack för det snabba svaret. Koden ser rimlig ut och jag tror säkert att det fungerar, problemet är att jag inte förstår var exakt jag skall lägga in koden.

 

Jag har aldrig programmerat ett accessdokument tidigare.

 

Jag har bara gjort Tabeller och tillhörande Formulär rakt upp och ner utan finesser.

 

stjak

 

Länk till kommentar
Dela på andra webbplatser

Magnus Ahlkvist

När du dubbelklickar på en kontroll får du upp en ruta med egenskaper. Där har du en flik som heter "Händelse" eller "Event" beroende på språkversion. Om du ställer markören i "After Update" eller "Efter uppdatering" får du en knapp med tre punkter på till höger. Klicka, och välj "Kodverktyget" eller engelsk motsvarighet i dialogrutan du får upp. Skriv koden i kodfönstret, i den sub som skapats.

 

 

--

En röst talade till mig och sade:

"Le och var glad, ty det kunde vara värre".

Så jag log, och jag var glad.

Och det blev värre.

 

Länk till kommentar
Dela på andra webbplatser

Är det rätt uppfattat att kodningen skall se ut så här?

 

Private Sub ändelse_AfterUpdate()

if not isnull(stam) and not isnull(ändelse)

infinitiv=stam & ändelse

End If

 

 

Länk till kommentar
Dela på andra webbplatser

Magnus Ahlkvist

Yep, det är rätt uppfattat. Också ska det vara en "End Sub" sist.

 

--

En röst talade till mig och sade:

"Le och var glad, ty det kunde vara värre".

Så jag log, och jag var glad.

Och det blev värre.

 

Länk till kommentar
Dela på andra webbplatser

Tack för svaret. Men något verkar gå fel.

 

Private Sub andelse_AfterUpdate()

if not isnull(stam) and not isnull(andelse)

infinitiv=stam & andelse

End If

 

End Sub

 

Det blir kompileringsfel på "If"-raden om jag tolkar felmeddelandet rätt. Vad gör jag för fel?

 

Länk till kommentar
Dela på andra webbplatser

Magnus Ahlkvist

Ah, ett missat ord.

Rätt är:

 

Private Sub andelse_AfterUpdate()
if not isnull(stam) and not isnull(andelse) THEN
infinitiv=stam & andelse
End If
End Sub

 

--

En röst talade till mig och sade:

"Le och var glad, ty det kunde vara värre".

Så jag log, och jag var glad.

Och det blev värre.

 

Länk till kommentar
Dela på andra webbplatser

Hej

 

Det blev bättre, men "infinitiv"-raden är "röd" och det blir kompileringsfel/syntaxfel???????

 

Det känns som det är nära till att fungera nu, och då vill jag fortsätta bygga in inteligens i databasen. Kan du tipsa mig om någon bra självstudie, likt den Carl-Johan Nordqvist gjort om ASP.

 

Jag är glad, men jag skrattar inte.

 

 

 

Länk till kommentar
Dela på andra webbplatser

Magnus Ahlkvist

Exakt såhär ser min kod ut - har provat att bygga ett formulär med tre text-boxar, stam, ändelse och infinitiv, och har lagt till följande kod i händelse-procedurerna för After Update för både ändelse och stam:

 

Private Sub ändelse_AfterUpdate()
   If Not IsNull(stam) And Not IsNull(ändelse) Then
       infinitiv = stam & ändelse
   End If
End Sub

 

Funkar klockrent för mig, så jag tror inte jag kan hjälpa dig hitta något fel, om din kod ser ut som ovan. Konstigt att det inte funkar. Du har inte gjort något konstigt skrivfel ngnstans?

 

 

--

En röst talade till mig och sade:

"Le och var glad, ty det kunde vara värre".

Så jag log, och jag var glad.

Och det blev värre.

 

Länk till kommentar
Dela på andra webbplatser

Hurra!!!!!!!

 

Nu funkar de´. Jag bytte ut "&" mot "&" och då gick det. Tusen tack för hjälpen. Nu har jag fått blodad tand och skall lära mig VBA-programmering. Som gammal pensionär har man ju tid över.

 

Databasen blir ett elektroniskt lexikon. Det aktuella handlar om svensk-spanskt.

 

Min uppskattning för all hjälp är *****

 

Stig Jakobsson

 

Länk till kommentar
Dela på andra webbplatser

Magnus Ahlkvist

Aha, ok, ibland när man klistrar in i eforum förvandlas & till & (& är HTML-koden för &).

 

Kul att det löste sig :)

 

Access är fantastiskt för applikationer som inte har särskilt mycket transaktioner. Oerhört snabbt att skapa formulär och rapporter, och flexibelt eftersom man har VBA.

 

 

--

En röst talade till mig och sade:

"Le och var glad, ty det kunde vara värre".

Så jag log, och jag var glad.

Och det blev värre.

 

Länk till kommentar
Dela på andra webbplatser

  • 2 veckor senare...

Hej

 

Jag har kommit en bra bit på vägen. Programmet för de regelbundna verben är klart och testkört.

 

Nu håller jag på med reglerna för de oregelbundna verben, och har naturligtvis stött på problem, som beror på att jag inte kan vba-programmering.

 

När det gällde de regelbundna verben, kunde jag använda "stammen" för att frå fram alla olika böjningar av verbet. Men när det gäller oregelbundna verb skall en vokal i vissa böjningar bytas ut mot en annan. S.k. vokalbyte. Jag har försökt med olika instruktioner, replace bl.a. för att byta vokal men det vill sig inte. Har du något tips?

Private Sub PresensKonjunktivSing1_BeforeUpdate

(Cancel As Integer)

(hur ser instruktionen ut?) replace(stam,"o","üe")

PresensKonjunktivSing1 = stam & ändelse

 

Hälsningar

Stig

 

[inlägget ändrat 2003-02-26 09:26:23 av stjak]

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...