Problemer med Vizual Basic i Access
Hej - er der nogen til vil kigge på en eksempel access base og lave kodningen for et felt som jeg så kan gå ind og se bagefter.Jeg har aldrig arbejdet med Visual Basic før så 200 point til den der gider løse problemet...
min email er... jt@dandial.dk
Problemstillingen er : (Gammelt spørgsmål - hvor jeg til sidst har kastet håndkædet i ringen ;o)))
Hente data fra en undertabel til hovedtabel 100 point fra jthom
X Hej,
jeg har en formular bestående af 8 faneblade som hver er baseret på egen tabel. (Altså 1. faneblad er hovedformularen - de øvrige er sat ind i fanerne som underformularer). Tabellerne er relateret sammen med et unikt kundenummer.
Spørgsmålet er så : er der nogen derved hvordan jeg kan hive/kopiere enkelte felter fra underformularerne om på Fane 1 - det er fordi jeg gerne vil have de vigtigste data om på Fane 1 i oversigtsform.
Kan ikke huske hvordan man gør...
Kommentar: hnteknik
30/11-2006 10:28:23 me.underformular.form.underformularvariabel
Accepteret svar: hnteknik
30/11-2006 10:31:17
Point: 34,00 Som eksempel
Me!xadr.Form!LstF.Value
Kommentar: jthom
30/11-2006 10:48:24 hejsa,
ok..
jeg har f.eks en underformular der hedder anlaegstype - er det så Me!anlaegstype.Form!LstF.Value
skal det tastes ind i kontrolelement kilde ? Får nemlig fejl...
Accepteret svar: spg
30/11-2006 11:02:59
Point: 33,00 I dit tekstfelt på faneblad 1, vælger du egenskaber og kontrolkilde og skriver:
=[Forms]![NavnPåDinHovedformular]![NavnPåDinUnderformular]![NavnPåDitFelt]
Kommentar: jthom
30/11-2006 11:14:02 ok det fungerer næsten. Sætningen lyder nu
=Formularer!Search!Anlaegstype!type_Anlaegstype
har bare lige et lille problem da data i feltet type_Anlaegstype er fra en opslagskollone (baseret på en tabel med et id og så et felt (Felt 1) med navnene på de forskellige anlæg.
Overstående sætning sætter id'et ind - f.eks 3 i stedet for "anlæg 4". Hvordan får jeg den til at snuppe anlæggets navn.
Skal jeg slette id-kolonnen i opslagstabellen ?
Kommentar: hnteknik
30/11-2006 11:18:54 Du mener et rullegardin ?
value giver sikkert værdien såm sikker er kolonne 0. Prøv at hente værdien i kolonne 1 som sikkert er den tekst du vier i rullegardinen.
Kommentar: jthom
30/11-2006 11:32:49 ja et rullegardin som tager data fra en tabel baseret på en tabel med et id (kolonne 1) og så felt 1 (Kolonne 2) med navnene på de forskellige anlæg.
hvordan skrives sætningen så ? Lige nu hedder den =[Formularer]![Search]![Anlaegstype]![type_Anlaegstype]
og den tager dataene fra Kolonne 1, hvor jeg skal have dataene fra kolonne 2...
Nøgle:_
Search er hovedformular
Anlaegstype er underformular
type_Anlaegstype er "Rullegardin" som slår op i en tabel der også hedder Anlaegstype som indeholder de to kolonner..
Kommentar: spg
30/11-2006 11:36:21 Egenskaber for rullegardin:
Bundet kolonne: 2 (her starter det nemlig ikke med 0, logisk ikke sandt!~)
Kommentar: jthom
30/11-2006 12:55:10 Hvis jeg definerer bundetkolonne til 2 i rullegardinet på underformularen Anlaegstype så ændres tabellens valg til id altså autonummerede tal..
den stod til kolonne 1 og dropdownfelterne passede fint men i hovedformularen hiver den stadig det autonummerede id-felt over. Så det fungerer ikke rigtigt...
skal have den til at hente data fra kolonne 2 og ikke 1
Kommentar: spg
30/11-2006 13:01:30 Så må du lave et skjult felt, som kan indeholde det rigtige. På rullegardinets afterupdate event, går du i visual basic og skriver:
me.NavnSkjultfelt=me.NavnRullegardin.column(1)
og så refererer du til dette felt fra faneblad 1...
Ha' en fortsat god dag, jeg er den, der er smuttet!~)
Kommentar: jthom
30/11-2006 13:43:41 jeg er ikke så velbevandret i Visual Basic - kan jeg sende en eksempel database til nogle ?
Accepteret svar: fdata
30/11-2006 22:18:34
Point: 33,00 Du er nødt til at skrive kode 2 steder:
I Form_Current() på Search (så du ser den aktuelle værdi)
og
I type_Anlaegstype_AfterUpdate hændelsen på Anlaegstype (så du ser evt. ændringer afspejlet på hovedformularen)
På Search:
Private Sub Form_Current()
Me.EtFelt = Me.Anlaegstype.Form.type_Anlaegstype.Column(1)
End Sub
... og på underformularen:
Private Sub type_Anlaegstype_AfterUpdate()
Me.Parent.EtFelt = Me.type_Anlaegstype.Column(1)
End Sub
Kommentar: jthom
01/12-2006 09:48:17 hejsa...
jeg har lavet en lille eksempelbase - er der nogle der kan kigge på den og evt. vise mig hvordan - kan ikke få ovenstående til at virke. Forstår nok ikke det med hændelser o.s.v. suk. Skriv evt. til jt@dandial.dk
