Avatar billede banelars Nybegynder
10. december 2003 - 14:45 Der er 4 kommentarer og
1 løsning

Problemer med opdatering af lister i kombibokse og underforms.

Hej.

Jeg arbejder med en Access 2000 database.
Jeg har en formular med almindelige tekstfelter,
samt nogle kombinationsbokse,som slår nogle data op fra nogle tabeller.
F.eks. en tabel der ser sådan ud :
best (tabelnavnet)
bestnr (autonummereret)
navn
tlf
Jeg indtaster i mine tekstfelter og når jeg kommer til kombinationsboksen vælger jeg det aktuelle navn på listen.
Hvis ikke det er på listen, har jeg tilknyttet en hændelse til "Ved Dobbeltklik", så der åbner en formular, hvor man kan indtaste et nyt navn og tlf.
Jeg lukker derefter formularen og er tilbage i den første formular.
Men her findes det nye navn ikke på listen endnu. Først når jeg opdaterer formularen optræder det nye navn på listen.
Hvis jeg laver en knap til opdatering, eller på anden måde opdaterer formularen, så får jeg et nyt problem.
En boks kommer op hvor der står:
"Microsoft Jet-databasemotoren kan ikke finde en post i tabellen "farb", hvor nøglen svarer til feltet/felterne farbart".
Der hentydes til en tabel der ligger til grund for en anden kombinationsboks. Først når jeg har valgt en af mulighederne fra denne kombiboks, kan jeg opdatere min formular.
Den anden tabel ser sådan ud:
farb (tabelnavn)
farbart (her er indtastet 2 poster man kan vælge imellem ufarbart/frit).
Når jeg vil arbejde i en underformular, som henter data i en tabel, så komer ovenstående boks op igen om Jet-databasemotoren.
Hvordan undgår jeg denne boks og hvordan opdaterer jeg nye navne i min "best" tabel, så de figurerer på listen ?
10. december 2003 - 14:56 #1
Når du åbner den anden formular vha dobbeltklik, kan du gøre det ved at sætte AcDialog efter kaldet og efterfølgende opdatere komboboksen:

docmd.OpenForm "Din formular",,,,acFormAdd,acDialog
Me!Komboboks.requery

Derved vil din komboboks automatisk opdateres, når du lukker formularen

NB: Husk at ændre navnene
Avatar billede banelars Nybegynder
10. december 2003 - 15:06 #2
Nedenstående er sat ind, men den kommer op og siger invalid use of ME-keyword.
Kombiboksen hedder "bestnr".
Formularen hedder "best".

Function best()
On Error GoTo best_Err
 
  DoCmd.OpenForm "best", , , , acFormAdd, acDialog
  Me!bestnr.Requery





best_Exit:
    Exit Function

best_Err:
    MsgBox Error$
    Resume best_Exit

End Function
10. december 2003 - 15:10 #3
okay, det er fordi funktionen Best ikke ligger på den formular, som komboboksen ligger på.

Så enten skal du flytte funktionen til formularen, eller lægge koden på komboboksen OnDoubleclick-hændelse eller ændre referencen til denne:

DoCmd.OpenForm "best", , , , acFormAdd, acDialog
Form![Navn på den formular hvor komboboksen ligger]!bestnr.Requery
Avatar billede banelars Nybegynder
10. december 2003 - 15:11 #4
Jeg har prøvet at udfylde de andre kombibokse (lister med valgfrie data)først.
Herefter kan jeg godt opdatere, hvis jeg bruger en knap til dette.
Men hvorfor SKAL jeg udfylde de andre kombibokse,
for at undgå fejlmeddelelsenmed "Jet-databasemotoren" ?
Avatar billede banelars Nybegynder
10. december 2003 - 15:17 #5
Hej igen Thomas.

Nu har jeg lagt det ind på ved dobbeltklik på selve formularen
og det ser ud til, at virke. Du får allerede point'ene
Men det med fejlmeddelelse ang. "Jet-databasemotoren" er et problem,
hvis jeg f.eks. vil indtaste data i min underformular, eller ikke ønsker at udfylde data i en af kombiboksene. Hvad er årsagen til, at jeg ikke kan lade en af mine kombibokse være tomme. Dette giver nye point, da det egentlig er 2 spørgsmål.
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