Avatar billede mss Nybegynder
25. august 2001 - 21:08 Der er 7 kommentarer og
1 løsning

Hvordan foretage man en kørsel, som ændre indholdet i en tabel??

Jeg har en access database, hvor jeg har behov for at ændre indholdet, såfremt en opstillet betingelse er opfyldt.

I en post findes et felt, som f.eks. har værdien \"2\".
Jeg ønsker derfor at foretage en kørsel, hvor indholdet i feltet skal ændres til \"3\", hvis indholdet altså har værdien \"2\".

Hvordan gøres dette?? - skær det gerne ud i pap.....

Avatar billede jiggypoof Nybegynder
25. august 2001 - 21:12 #1
Følgende funktion finder en angivet streng i et modul og erstatter den linje, der indeholder denne streng, med en ny angivet linje.

Function SøgOgErstat(strModuleName As String, strSearchText As String, _
    strNewText As String) As Boolean
    Dim mdl As Module
    Dim lngSLine As Long, lngSCol As Long
    Dim lngELine As Long, lngECol As Long
    Dim strLine As String, strNewLine As String
    Dim intChr As Integer, intBefore As Integer, intAfter As Integer
    Dim strLeft As String, strRight As String

    \' Åben modulet.
    DoCmd.OpenModule strModuleName
    \' Returner referencen til modulobjektet.
    Set mdl = Modules(strModuleName)

\' Søg efter strengen.
    If mdl.Find(strSearchText, lngSLine, lngSCol, lngELine, lngECol) Then
        \' Gem den tekstlinje, der indeholder strengen.
        strLine = mdl.Lines(lngSLine, Abs(lngELine - lngSLine) + 1)
        \' Bestem linjelængden.
        intChr = Len(strLine)
        \' Bestem det antal tegn, der skal skrives forud for søgeteksten.
        intBefore = lngSCol - 1
        \' Bestem det antal tegn, der skal skrives efter søgeteksten.
        intAfter = intChr - CInt(lngECol) - 1

\' Gem tegnene til venstre for søgeteksten.

        strLeft = Left$(strLine, intBefore)
        \' Gem tegnene til højre for søgeteksten.
        strRight = Right$(strLine, intAfter)
        \' Konstruer en streng med en erstatningstekst.
        strNewLine = strLeft & strNewText & strRight
        \' Erstat den oprindelige linje.
        mdl.ReplaceLine lngSLine, strNewLine
        SøgOgErstat = True
    Else
        MsgBox \"Teksten blev ikke fundet.\"
        SøgOgErstat = False
    End If


Exit_SøgOgErstat:
    Exit Function

Error_SøgOgErstat:

MsgBox Err & \": \" & Err.Description
    SøgOgErstat = False
    Resume Exit_SøgOgErstat
End Function
Avatar billede jiggypoof Nybegynder
25. august 2001 - 21:13 #2
Der er kommentare (:
Avatar billede stigc Nybegynder
25. august 2001 - 21:23 #3
havd med en SQL sætning:

update post set felt=3 where felt=2
Avatar billede martens Guru
25. august 2001 - 22:42 #4
ved at lave en forespørgsel som ser således ud :

UPDATE TABELNAVN SET TABELNAVN.FELTNAVN= 3
WHERE ((((TABELNAVN.FELTNAVN=2));

mvh martens
Avatar billede martens Guru
25. august 2001 - 22:43 #5
stigc´s idé virker IKKE i Access
Avatar billede mugs Novice
26. august 2001 - 00:33 #6
martens svar er korrekt og bygger på at lave en opdateringsforespørgsel, men du kan undgå at lave en forespørgsel ved i VBA at benytte flg. kommando
If FELTNAVN = 3 Then
DoCmd.RunSQL \"UPDATE TABELNAVN SET TABELNAVN.FELTNAVN = 2;\"
Else:
Exit Sub
End If
Avatar billede mss Nybegynder
26. august 2001 - 02:26 #7
Den løsning virker mest enkel og virker desuden i praksis..... Tak for hjælpen
Avatar billede martens Guru
26. august 2001 - 13:16 #8
tja...

Engang imellem er det uhyggeligt nemt, men  jeg kan skam også skyde gråspurve med kanoner....
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