Gå til innhold

Anbefalte innlegg

morn alle sammen.

 

har en access database med et skjema, hvor jeg vil ha en hvor jeg vil ha et skjema med en kombobox (el) som automatisk henter inn alle rapportene (reports) jeg har laget.

 

Noen som vet hvordan?

 

takker på forhånd.

Lenke til kommentar
Videoannonse
Annonse

Legg denne funksjonen inn i en form eller modul.

 

Function AlleRapporter(fld As Control, ID As Variant, row As Variant, col As Variant, CODE As Variant) As Variant
   Static intReportsCount As Integer
   Dim vReturnValue As Variant
   
   Select Case CODE
       Case acLBInitialize             ' Initialize.
           intReportsCount = CurrentDb.Containers("Reports").Documents.Count
           
           vReturnValue = intReportsCount
       Case acLBOpen                       ' Open.
           vReturnValue = Timer         ' Unique ID.
       Case acLBGetRowCount                ' Get rows.
           vReturnValue = intReportsCount
       Case acLBGetColumnCount     ' Get columns.
           vReturnValue = 1
       Case acLBGetColumnWidth     ' Get column width.
           vReturnValue = -1           ' Use default width.
       Case acLBGetValue                   ' Get the data.
           vReturnValue = CurrentDb.Containers("Reports").Documents(row).NAME
   End Select
   
   AlleRapporter = vReturnValue
End Function

 

For å bruke den i en comboboks så skriver du funksjonsnavnet, AlleRapporter, inn i comboboksens 'Row Source Type' property. Ja, du leste riktig, propertyen der du kan velge mellom 'Table/Query', 'Field List' eller 'Value List'.

Lenke til kommentar

Antar at man kan bruke CurrentDb.Containers("Reports").Documents.Count og CurrentDb.Containers("Reports").Documents(row).NAME

for å hente inn eventuelt andre ting også, exempel tabeller, spørringer, skjemaer osv...

 

Rowsourcetype var jo et gulltips.

 

Takker så meget Kaffenils.

Lenke til kommentar

Containers inneholder 9 Container objeckter. I Immediate vinduet finner du lett navnet på de forskjellige Container objektene ved å skrive

currentdb.Containers(i).Name

og bytte ut i med verdier fra 0 til 8.

 

Anbefaler å bruke

currentdb.TableDefs(i).Name

. Antall tabeller finner du selvflgelig vha. Count egenskapen til Tabledefs.

 

For å finne alle queries bruker du Querydefs istedet for Tabledefs, men vær klar over at du også får alle spørringer som er definert direkte i f.eks. et forms Recordsource egenskap. Du vil se at disse får noen merkelige navn med masse krusseduller.

Lenke til kommentar
  • 3 uker senere...

Jeg har prøvd meg frem litt nå, og får frem alle rapportene mine i kombiboksen, men hvordan kan jeg få til sånn at men går til den rapporten (forhåndsvisningsmodus, ikke direkte utskrift) når man velger en av de?

 

 

Edit: Fant det ut, man måtte sette denne inn i VB-koden:

 

 stDocName = Kombinasjonsboks0.Value
   DoCmd.OpenReport stDocName, acPreview

 

Men, en ting jeg lurer på er, hvordan kan jeg konvertere den til å liste opp alle skjemaer i stedenfor? Jeg prøvde å bytte ut alle steder det stod Reports i koden med Forms, men det funka ikke. Noen som kan hjelpe??? Skal bruke det i en innlevering som skal leveres i natt.

 

Dette prøvde jeg:

Function AlleSkjemaer(fld As Control, ID As Variant, row As Variant, col As Variant, CODE As Variant) As Variant
  Static intFormsCount As Integer
  Dim vReturnValue As Variant
  
  Select Case CODE
      Case acLBInitialize             ' Initialize.
          intFormsCount = CurrentDb.Containers("Forms").Documents.Count
          
          vReturnValue = intFormsCount
      Case acLBOpen                       ' Open.
          vReturnValue = Timer         ' Unique ID.
      Case acLBGetRowCount                ' Get rows.
          vReturnValue = intFormsCount
      Case acLBGetColumnCount     ' Get columns.
          vReturnValue = 1
      Case acLBGetColumnWidth     ' Get column width.
          vReturnValue = -1           ' Use default width.
      Case acLBGetValue                   ' Get the data.
          vReturnValue = CurrentDb.Containers("Forms").Documents(row).Name
  End Select
  
  AlleSkjemaer = vReturnValue
End Function

Endret av larstdahl
Lenke til kommentar
Function AlleSkjemaer(fld As Control, ID As Variant, row As Variant, col As Variant, CODE As Variant) As Variant
  Static intFormsCount As Integer
  Dim vReturnValue As Variant
  
  Select Case CODE
      Case acLBInitialize             ' Initialize.
          intFormsCount = CurrentDb.Containers("Forms").Documents.Count
          
          vReturnValue = intFormsCount
      Case acLBOpen                       ' Open.
          vReturnValue = Timer         ' Unique ID.
      Case acLBGetRowCount                ' Get rows.
          vReturnValue = intFormsCount
      Case acLBGetColumnCount     ' Get columns.
          vReturnValue = 1
      Case acLBGetColumnWidth     ' Get column width.
          vReturnValue = -1           ' Use default width.
      Case acLBGetValue                   ' Get the data.
          vReturnValue = CurrentDb.Containers("Forms").Documents(row).Name
  End Select
  
  AlleSkjemaer = vReturnValue
End Function

Har testet funksjonen din og den fungerer perfekt når jeg lager en test-database. Hvis du kan poste databasen her så er det enklere å hjelpe deg. Evt. så kan du sende den på mail til meg. Jeg har sendt deg en mail med mailadressen du kan sende til.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...