Hej! Som Acces expert har jag ett jättebra tips för sådanahär situationer. Vilket kanontips Andreas! Det har jag aldrig tänkt på... Jag har alltid kört med en DLookUp för varje kolumn, det går ju inte överdrivet fort, men prestandan har aldrig varit avgörande... Detta ska jag använda i fortsättningen =)!
Ett litet problem med access.
Jag har fått i uppdrag att skapa en access databas med programmet access, där av denna förtvivlan.
I access har jag skapat två tabeller kallad test1 och test 2. Dessa tabeller innehåller kolumnerna Sperid (primärnyckel), Namn, datum, version. Dessa två är exakt lika. Sedan har jag skapat ett formulär till test 2 med formulärguiden och fått fälten länkad till resp kolumn. I test 1 så skall det finnas ett visst antal poster med information. I test2 formuläret har jag sedan laggt till en kombobox där jag via guiden har länkat den till test1 tabellen. Nu till mitt dilemma
I komboboxen som nu är länkad med Sperid, namn till tabell 1 syns när man klickar i boxen. Nu vill jag kunna markera ett namn i komboboxen och sedan skall den posten jag väljer (i komboboxen) från tabell 1 fyllas i i fälten i formuläret för tabell 2.
Typ:
kombobox val ger
test2!Sperid = test1!sperid
test2! Namn = test1!namn
osv...
Jag skulle vilja veta hur jag skriver denna kod i kombo_afterupdate händelsen
/PhinalaSv: !
Jag antar att Test1 tabellen innehåller "mallar" för Test2 posterna. Litet problem Sperid är primärnyckel i test2. Efter som du bara kan skapa en post med samma id som i Test1. Om Sperid är Autonumber så är ej fältet uppdterbart. Så för att mitt exempel ska fungera är Sperid Autonumber och Primärnyckel i Test1 men ett Number och ingen primärnyckel i test2.
Okej, här är hur du gör.
* Skapa ett formulär som är bundet till test2
* Lägg till fält för motsvarande kolumn, Sperid behövs ej.
* lägg till en Combobox
* Sätt följande egenskaper för Comboboxen:
ControlSource = Sperid
ColumnCount = 4
ColumnWidths = 0cm;;0cm;0cm
RowSource = SELECT [Sperid], [Namn], [datum], [version] FROM test1;
* Lägg till följande kod i AfterUpdate(I mitt fal heter Comboboxen Combo8):
Private Sub Combo8_AfterUpdate()
On Error GoTo Combo8_AfterUpdate_Err
Sperid = Combo8.Column(0)
Namn = Combo8.Column(1)
datum = Combo8.Column(2)
version = Combo8.Column(3)
Combo8_AfterUpdate_Exit:
Exit Sub
Combo8_AfterUpdate_Err:
MsgBox Err.Description, vbCritical
Resume Combo8_AfterUpdate_Exit
End Sub
Detta kanske ger en knuff i rätt riktning...
//Mvh, Andreas HillqvistSv: !
/Johan