Avatar billede bigilo Nybegynder
30. marts 2010 - 12:47 Der er 8 kommentarer og
1 løsning

Rækker til kolonner

Jeg benytter en Access 2007 database som FrontEnd til nogle SharePoint lister.
Det er en database over bestyrelsesmedlemmer, men jeg kan ikke få en liste ud som jeg kan bruge til en brevfletning.

Jeg har følgende tabeller:

Tabelnavn: Firma
ID - Tal
Firmanavn - Tekst
CVRnr - Tal
Land - Tekst

Tabelnavn: Contacts
ID - Tal
Navn - Tekst
Adresse - Tekst
Telefon - Tal
Email - Tekst

Tabelnavn: Post
ID - Tal
Position - Tekst

Tabelnavn: bestyrelse
ID - Tal
Firma - Tal
Medlem - Tal
Post - Tal

Hvis jeg køre følgende forespørgsel på databasen: (Er lavet af Access)

SELECT firma.navn, firma.CVRnr, firma.Land, Contacts.Navn, Post.Positions
FROM Post INNER JOIN (firma INNER JOIN (Contacts INNER JOIN bestyrelse ON Contacts.Id = bestyrelse.medlem) ON firma.Id = bestyrelse.firma) ON Post.Id = bestyrelse.post
ORDER BY firma.navn, Post.Id;

Får jeg følgende output:
firma.Navn    CVRnr    Land    Contacts.Navn    Positions
Cykelfabriken    45741145    Danmark    Jens Peter    Formand
Cykelfabriken    45741145    Danmark    Lars Eriksen    Næstformand
Cykelfabriken    45741145    Danmark    Lars Larsen    Bestyrrelsesmedlem
Cykelfabriken    45741145    Danmark    Erik Jørgensen    Bestyrrelsesmedlem
Cykelfabriken    45741145    Danmark    Lars Larsen    Kasserer
Motorfabriken    41474125    Danmark    Lars Eriksen    Formand
Motorfabriken    41474125    Danmark    Jens Peter    Næstformand
Motorfabriken    41474125    Danmark    Lars Larsen    Bestyrrelsesmedlem
Motorfabriken    41474125    Danmark    Hans Eriksen    Bestyrrelsesmedlem

Det er som sådan fint nok, men ville gerne have en liste som ser sådan her ud:

Firma.Navn    CVRnr    Land    Medlem1    Post1    Medlem2    Post2    Medlem3    Post3
Cykelfabriken    45741145    Danmark    Jens Peter    Formand    Lars Eriksen    Næstformand    Lars Larsen    Bestyrrelsesmedlem
Motorfabriken    41474125    Danmark    Lars Eriksen    Formand    Jens Peter    Næstformand    Lars Larsen    Bestyrrelsesmedlem

På en eller anden måde skal den være dynamisk, så der kan være flere medlemmer end bare 3. Der vil også være flere af samme type. Altså flere med posten Bestyrrelsesmedlem.

Ser frem til at få lidt hjælp til denne.

På forhånd tak
Avatar billede supertekst Ekspert
30. marts 2010 - 14:43 #1
Har du en "model af databasen", som der kunne eksperimenteres med?
Måske ville en kombination med VBA gøre det muligt?
Avatar billede bigilo Nybegynder
30. marts 2010 - 15:46 #2
Ja, kan da godt sende en kopi af databasen til dig, hvis det hjælper. Kan du ikke give mig din mail adresse, så sender jeg den til dig
Avatar billede supertekst Ekspert
30. marts 2010 - 15:57 #3
@-adr. er under min profil.
Avatar billede bigilo Nybegynder
31. marts 2010 - 09:35 #4
Så er der sendt en mail til dig.
Avatar billede Slettet bruger
03. april 2010 - 12:54 #5
Hvad vil det sige at benytte en Access 2007 database som FrontEnd til nogle SharePoint lister?

Er det noget manuelt klippe klistre eller har de færdige websider angang til en access databasen (som datakilde - adgang fra webserveren).

Man kan nemlig ikke lave det dynamisk udvidende kolonne antal i ren sql - man er nød til kode. Hvis der er database adgang fra serveren skal det i sidste end laves i asp eller .net og der er ikke så meget grund til at rode med DataSheet view fra en access frontend.
Avatar billede bigilo Nybegynder
09. april 2010 - 10:42 #6
Der ligger nogle lister på vores sharepoint site.
Fra Access kan man koble op til disse lister, og lave forespørgsler mv. på disse lister.

Håber dette svar gav mening.
Avatar billede supertekst Ekspert
09. april 2010 - 11:12 #7
Hvordan går det med den tilsendte løsning?
Avatar billede bigilo Nybegynder
21. april 2010 - 19:07 #8
Den tilsendte løsning er taget i brug, og virker som den skal.
Vil du ligge et svar?
Avatar billede supertekst Ekspert
21. april 2010 - 22:50 #9
Rem VBA-kode indlagt i Excel
Rem ========================

Dim recNr
Dim firmaNavn As String, CVRnr As Long, land As String, navn As String, position As String
Dim rækNr As Long, kolNr As Byte
Public Sub opbygDataTilBrevfletning()
Dim cvr As String
    cvr = ""
    kolNr = 4
    rækNr = 2
   
    tools.åbnforeSp1
   
    With tools.foreSp1
        For recNr = 1 To .RecordCount
            If cvr = "" Then
                cvr = .fields(1)
               
                Cells(rækNr, 1) = .fields(0)          'firma
                Cells(rækNr, 2) = .fields(1)          'cvrNr
                Cells(rækNr, 3) = .fields(2)          'land
                Cells(rækNr, 4) = .fields(3)          'kontakt
                Cells(rækNr, 5) = .fields(4)          'position
            Else
                If cvr = .fields(1) Then
                    Cells(rækNr, kolNr) = .fields(3)          'kontakt
                    Cells(rækNr, kolNr + 1) = .fields(4)        'position
                Else
                    rækNr = rækNr + 1
                    kolNr = 4
                    cvr = .fields(1)
                   
                    Cells(rækNr, 1) = .fields(0)          'firma
                    Cells(rækNr, 2) = .fields(1)          'cvrNr
                    Cells(rækNr, 3) = .fields(2)          'land
                    Cells(rækNr, 4) = .fields(3)          'kontakt
                    Cells(rækNr, 5) = .fields(4)          'position
                End If
            End If
            kolNr = kolNr + 2
        .MoveNext
        Next recNr
    End With
   
    tools.LukDb
   
    ActiveSheet.Columns.AutoFit
End Sub
Rem =============
Rem Module Tools
Rem =============
Dim Sti

Rem Database-def.
Const dataBaseNavn = "STest.mdb"                  'justeres

Public db, foreSp1
Public Sub findSti()
    Sti = ActiveWorkbook.Path
    If Right(xSti, 1) <> "\" Then
        Sti = Sti + "\"
    End If
End Sub
Rem Database - rutiner
Rem ==================
Public Sub LukDb()
    On Error Resume Next
    foreSp1.Close
    db.Close
End Sub
Public Sub åbnDatabase()
    findSti
    Set db = OpenDatabase(Sti + dataBaseNavn)
End Sub
Public Sub åbnforeSp1()
    åbnDatabase
    Set foreSp1 = db.OpenRecordset("Forespørgsel1")
End Sub
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