Avatar billede jensen363 Forsker
27. april 2006 - 10:55 Der er 8 kommentarer og
1 løsning

Opdateringsforespørgsel

Har modtaget en tekstfil, hvor jeg har behov for at skabe nogle logiske relationer ud fra ... indholdet i filen er følgende :

ID  Felt1  Felt2
1  xx      Et eller andet
2  S      ID1

4  yy      Et eller andet
5  S      ID2
6
7  zz      Et eller andet
8  S      ID3
9

Felt1 værdien S skal benyttes som ID i alle ovenstående poster - blank felt indikerer at der er tale om ny post.

Jeg skal i en ny kolonne have indsat værdien i Felt2, hvor Felt1 = "S"

Resultatet skal se således ud :

ID  FeltID  Felt1  Felt2
1  ID1    xx      Et eller andet
2  ID1    S      ID1

4  ID2    yy      Et eller andet
5  ID2    S      ID2
6
7  ID3    zz      Et eller andet
8  ID3    S      ID3
9

Hvordan gøres det ?
Avatar billede supertekst Ekspert
27. april 2006 - 15:40 #1
Ønsker du "kun" som resultat en redigeret tekstfil?
Avatar billede jensen363 Forsker
27. april 2006 - 15:50 #2
Resultatet skal lagres i samme database
Avatar billede supertekst Ekspert
27. april 2006 - 17:47 #3
OK - tabel1 (med en struktur som tekstfilen og de viste data - alle 9 linier) - er kopieret til en ny tabel - tabel2. Heri er der insat et ekstra felt FeltID - præcis som du illustrerer.

Et modul er oprettet i db med følgende indhold:

Option Compare Database
Dim db, tabel
Sub opdaterTabel()
Dim fra, til
    Set db = CurrentDb
    Set tabel = db.OpenRecordset("tabel2")

    fra = 1
    For f = 1 To tabel.RecordCount
        With tabel
            If .Fields(2) = "S" Then
                feltId = .Fields(3)
            Else
                If IsNull(.Fields(2)) = True Then
                    til = .Fields(0) - 1
                    opdater fra, til, feltId
                    fra = .Fields(0) + 1
                End If
            End If
           
        .MoveNext
        End With
    Next f
    tabel.Close
    db.Close
End Sub
Private Sub opdater(fra, til, id)
Dim tabel As Recordset, f
    Set tabel = db.OpenRecordset("tabel2")
   
    For f = fra To til
        If findRecord(f, tabel) = True Then
            With tabel
                .Edit
                .Fields(1) = id
                .Update
            End With
        End If
    Next f
    tabel.Close
End Sub
Private Function findRecord(nr, tabel As Recordset)
    tabel.Index = "primarykey"
    tabel.Seek "=", nr
   
    If Not tabel.NoMatch Then
        findRecord = True
    Else
        findRecord = False
    End If
End Function
- - - - - - - - -

resultatet er følgende i Tabel2:

id    feltID    felt1    felt2
1    ID1    xx    et eller andet
2    ID1    S    ID1
3           
4    ID2    yy    et eller andet
5    ID2    S    ID2
6           
7    ID3    zz    et eller andet
8    ID3    S    ID3
9
Avatar billede jensen363 Forsker
27. april 2006 - 18:14 #4
Koden fejler i

Private Sub opdater(fra, til, id)

Har du testet den ?
Avatar billede supertekst Ekspert
27. april 2006 - 18:27 #5
Ja - det viste resultat er direkte fra tabellen

Hvad er fejlmeldingen?

Ser din tabel strukturelt ud på samme på, som vist i resultatet?
Avatar billede jensen363 Forsker
27. april 2006 - 18:29 #6
Compile error :
Method or data member not found

ved .Edit
Avatar billede supertekst Ekspert
27. april 2006 - 18:29 #7
Hvis du sender din mail til pb@supertekst-it.dk - så kan du få hele databasen.
Avatar billede jensen363 Forsker
27. april 2006 - 18:55 #8
Ok, den fejlede bl.a. fordi jeg ikke havde ID som promær nøgle
Takker for hjælpen
Avatar billede supertekst Ekspert
28. april 2006 - 08:50 #9
Selv tak
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