Avatar billede chester Nybegynder
21. december 2006 - 16:31 Der er 17 kommentarer

Kan man lave en etiket der får inhold fra en database?

Hej Eksperter.
Jeg sidder og roder med en database i 2002 Access.
Jeg har to tabeller, en med virksomhed og en med regnsskab og jeg har oprettet en formular vha. af den der wizard. Et felt i formularen for regsnskab er afhængigt af et felt i tabellen virskomhed. Derfor ville jeg gerne navngive min etiket til feltet i regsnakb, ved at hente data fra det rigtige felt i virksomhed.
Kan det lade sig gøre?
mvh
Chester
Avatar billede hnteknik Novice
21. december 2006 - 16:50 #1
Ja - det kan man sagten. Du skal blot lave det i VBA

et eller andet sted

If condition eller andet er i orden så

Me.etiket.caption = rs("etellerandet")
Avatar billede mugs Novice
21. december 2006 - 16:51 #2
Du kan tage en ubundet felt fra din værktøjskasse og bruge funktionen DLookUo med et kriterie. Men det forudsætter, at du hasr unikke værdier i dine tabeller.

Me!Ubundet tekstboks = DLookup("[Feltnavn]", "virksomhed", "[ID i virksomhed]=" & Me.Id i regnskab)

Hvor felterne id matcher de samme poster.

Men jeg synes nu, det er en bøvlet måde at gøre det på, kan du ikke lave en forespørgsel og relatere tabllerne til hinanden, og så benytte denne forespørgsel som postkilde i din formular?
Avatar billede hnteknik Novice
21. december 2006 - 16:51 #3
Hvis det er på en form, så skal du nok lave et Dlookup() for at hente fra en anden tabel end den aktuelle.
Avatar billede chester Nybegynder
21. december 2006 - 17:06 #4
tak for de hurtige svar.
Hvis jeg laver en forespørgsel, hvordan får jeg så relateret den til etiketten gennem VBA?
Avatar billede mugs Novice
21. december 2006 - 17:57 #5
Du kan ikke se etiketter i en forespørgsel!

Men lav en forespørgsel og hent relevante tabeller ind i forespørgseln (der kommer en dialofboks der tilbyder dig eksisterende tabeller). Derefter peger du på det relevante felt og TRÆKKER musen til relevant felt i den anden tabel. Så er din relation oprettet.
Avatar billede chester Nybegynder
21. december 2006 - 18:09 #6
Hej igen,
jeg har lavet en forespørgsel der finder de rigtige data. Kan man så anvende den forespørgsel i en VBA kode der peger på etiketten?
Avatar billede mugs Novice
21. december 2006 - 18:11 #7
Hvad er det du vil med den etiket?
Avatar billede chester Nybegynder
21. december 2006 - 18:22 #8
I virksomheds tabellen har jeg et felt der hedder aktivitet1, det er et tekst felt, og kan for eksempel være "Bus transport". Når man så fylder data i regnskabstabellen, vil jeg gerne have at etiketten for aktivitet1(i regnskabstabellen) hedder "Bus transport". Det tilhørende indtastningsfelt er et tal felt, og man vil så skulle skrive 2.000.000 ind i det felt. Da indholdet af virksomhedstabellens aktivitet1 ikke altid er "Bus Transport", vil jeg gerne at etiketten til feltet i regnskabstabellen giver et mere sigende navn end aktivitet1.
Jeg havde forestillet mig at man ville kunne anvende en forespørgsel i noget VBA kode der så er linket til pågældende etikket. Jeg er ikke så stiv i VBA kodning, så jeg ved ikke om det kan lade sig gøre. Ellers kan man vel lave en tilsvarende SQL kode, og anvende den i VBA koden, men det er jeg heller ikke for stiv i ;)
Giver det mening?
Avatar billede mugs Novice
21. december 2006 - 18:27 #9
Select Case Aktivitet1
Case Is = "Bus transport"
Me!Etiket1.Caption = "Bus transport
Case is = ""Tog transport"
Me!Etiket1.Caption = "Togtransport"
Case is = "Bil Transport"
Me!Etiket1.Caption = "Bil transport"
End Select
Avatar billede chester Nybegynder
21. december 2006 - 18:38 #10
hvordan finder jeg så ud af hvilken case, der stemmer overens med det der står i virksomhedtabellen?
Avatar billede mugs Novice
21. december 2006 - 18:55 #11
Det har du vel via dine relationer.
Avatar billede chester Nybegynder
22. december 2006 - 11:51 #12
Hej, jeg har fået strikket en SQL Query sammen der finder lige netop det felt jeg har brug for.
Nu mangler jeg bare at få den til at køre i VBA. Har forsøgt med følgende:
Private Sub Aktivitet1_Etiket_BeforeUpdate(Cancel As Integer)
Dim hans As String
Dim ole As String
Dim SQL1 As String

SQL1 = "SELECT Selskab.Aktivitet1, Regnskab.FKSelskabID, Regnskab.RegnskabID FROM Selskab INNER JOIN Regnskab ON Selskab.SelskabID = Regnskab.FKSelskabID WHERE Regnskab.RegnskabID = hans"

hans = RegnskabID.Value  // tekstfelt i min formular//
ole = DoCMD.RunSQL SQL1 
Me.Aktivitet1_Etiket.Value = ole
End Sub
Men den fejler.
Hvad er der galt?
Avatar billede mugs Novice
22. december 2006 - 12:05 #13
Det er vel ikke i etiketten du skal placere koden, men i det felt etiketten er afhængig af.
Avatar billede chester Nybegynder
22. december 2006 - 12:55 #14
Hej Igen, du har helt ret ned hensyn til etiketten.
Jeg har så flyttet koden ned på en "frem" knap.

Private Sub Kommandoknap95_Click()
Dim hans As String
Dim ole As String
Dim SQL1 As String

hans = RegnskabID.Value
SQL1 = "SELECT Selskab.Aktivitet1, Regnskab.FKSelskabID, Regnskab.RegnskabID FROM Selskab INNER JOIN Regnskab ON Selskab.SelskabID = Regnskab.FKSelskabID WHERE Regnskab.RegnskabID = hans"
ole = DoCmd.RunSQL(SQL1, 0) / her fejler den! Kan ikke engang skrive koden, uden der er fejl!- Kan man ikke bruge en DoCMD som input til en variabel?

 
Me.Aktivitet1_Etiket.Value = ole
Avatar billede mugs Novice
22. december 2006 - 13:16 #15
Me!Aktivitet1_Etiket.caption = ole

Du skriver ikke om det fungerer. Jeg tvivler. Prøv evt. at ændre den sidste linie til ovenstående.
Avatar billede chester Nybegynder
22. december 2006 - 13:58 #16
Det fungerer ikke...
Jeg har et problem med at få VBA til at acceptere "ole = DoCMD.RunSQL SQL1"
Går udfra at RunSQL returnerer en string med indholdet af søgningen. Men det gør den måske ikke?
Avatar billede mugs Novice
22. december 2006 - 14:05 #17
ole = DoCmd.RunSQL SQL1
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