Avatar billede madsnn Juniormester
30. maj 2001 - 15:57 Der er 18 kommentarer og
1 løsning

Newbie i access

Hej Eksperter

Jeg har 2 tabeller med en 1 til 1 relation !!!
Jeg laver 2 formularer, en til hver tabel.
Når man har indtastet alt i formular 1 skal man kunne trykke på en knap så \"ref_nr\" bliver sendt fra tabel 1 over i tabel 2 og samtidig åbner formular 2.
Der skal være en forbindelse mellem de 2 tabeller hele tiden

Mads.
Avatar billede riversen Nybegynder
30. maj 2001 - 16:01 #1
riversen@get2net.dk

mailer du den lige
Avatar billede mugs Novice
30. maj 2001 - 20:25 #2
Hej

Koden er gældende for Access97:

Dim Rst As Recordset, Db As Database
Set Rst = DBEngine.Workspaces(0).Databases(0).OpenRecordset(\"tabel 2\")
    With Rst
    .AddNew
    .Fields![ref_nr] = ref_nr
    .Update
End With

Mvh / mugs
Avatar billede madsnn Juniormester
30. maj 2001 - 23:34 #3
Er det ikke ASP kode ???

Hvis det ikke er, så skal jeg bruge lidt hjælp til hvor jeg skal skrive den kode du har skrevet, og en forklaring til hvad der sker i koden !!
Avatar billede mugs Novice
31. maj 2001 - 08:23 #4
Hej madsnn.
\"Variabelerklæringer:\"
Dim Rst As Recordset, Db As Database

\"Definerer variablen Rst og åbner tabel2\"
Set Rst = DBEngine.Workspaces(0).Databases(0).OpenRecordset(\"tabel 2\")

\"Med variablen Rst\"
    With Rst
\"Gør den nu åbne tabel2 klar til opdatering\"
    .AddNew
\"Overfører indholdet af feltet [ref_nr] i tabel1 til feltet ref_nr i tabel2\"
    .Fields![ref_nr] = ref_nr
\"tabel2 opdateres med den nye post\"
    .Update
\"Afslutter with-proceduren\"
End With

Efter denne linie kan du indsætte endnu en linie der åbner formular2:

DoCmd.OpenForm \"formular2\"

hvor DoCmd. er et objekt i Access-objektbiblioteket. DoCmd benyttes til en lang række handlinger som at åbne tabeller, rapporter, formularer m.v.

På formular2 kan du endvidere lave en ny kommandoknap hvor du indsætter en hændelsesprocedüre i Click:

Docmd.Close

der lukker den aktive formular og sender dig tilbage til det sted hvor du kom fra.

Når du i dit kodevindue skriver DoCmd., så læh mærke til hvad der sker når du sætter  dit punktum, der åbnes et dropdown vindue, der giver dig en oversigt over alle metoderne o DoCmd-objektet. Når du taster et bogstav vil markøren stille sig på den første metode der begynder med dette bogstev. Du kan vælge metoden ved at trykke Enter.

Håber det bragte dig en skridt videre. Ellers må du vende tilbage.


Mvh / mugs
Avatar billede mugs Novice
31. maj 2001 - 08:26 #5
Jeg glemte at skrive, at det er VBA.

mugs
Avatar billede madsnn Juniormester
31. maj 2001 - 09:38 #6
Hej mugs

Tak for dine indlæg ;)

Mads.
Avatar billede madsnn Juniormester
31. maj 2001 - 09:54 #7
Hej igen mugs

Når man slutter koden med \"End With\" er forbindelsen så brudt mellem de 2 tabeller ???

Mads.
Avatar billede madsnn Juniormester
31. maj 2001 - 10:25 #8
Hej igen

En sidste ting, hvor skal koden indtastes ??

Mads
Avatar billede mugs Novice
31. maj 2001 - 11:18 #9
Mads

Dette har intet med en forbindelse mellem tabellerne. Når du taler om forbindelse må du mene relationer. Uanset om du har eller ikke har relationer mellem dine tabeller virker koden altid.

Jeg kan godt se, at du i dit spørgsmål skriver, at der skal være forbindelse mellem tabellerne. Hvorfor?

En \"With\" procedure indledes med ordet \"With\", så er vi nødt til at slutte proceduren med ordene \"End With\". På samme måde som f.eks en \"If..Then\" sætning altid skal afsluttes med \"End If\".

Lad mig antage, at din formular1 refererer til tabel1 og formular2 tio tabel2. I formular1 laver du en kommandoknap, åbner dens kodevindue og i vinduets øverste højre side ser du en dropdown liste som du ruller ned i til du møder ordet Click. Det vælger du og markøren stiller sig i kommandoknappens click-procedure, hvor Access allerede har lavet en \"procedurekrop\". Imellem disse 2 linier indsætter du den procedure jeg har sendt dig.

Det betyder nu, ar proceduren bliver kørt hver gang du klikker på kommandoknappen.

Hvis du også indsætter linien DoCmd.OpenForm vil formular2 blive åbnet. Du kan på formular2 også indsætte en kommandoknap og i dennes Click-procedure indsætte kommandoen DoCmd.Close hvorefter formular2 bliver lukket, og du returnerer til formular1.

Husk: Du behøver ikke at taste koden selv. Kopier direkte her fra siden, og indsæt i dine formularers kodevindue.

Jeg hører gerne fra dig om hvordan det er gået.


Mogens (mugs)
Avatar billede madsnn Juniormester
31. maj 2001 - 11:37 #10
Hej Mogens

De 2 tabeller skal hænge sammen fordi de engang var 1 tabel hvori der var meget spildt plads.
Så det skal virke som indtastning og som opslag, så hvis man åbner post 2 i formular 1 og trykker på knappen så skal den komme frem med formular 2 som viser de tilhørende data (sammen kædet af ref_nr\'et)
Det kan godt være at jeg har vildledt dig, men det har ikke været med vilje.

Og jeg har indsat din kode og det virker ikke, jeg får en fejl(Invalid use of property) her:
.Fields! [Refnr] = Ref_nr
det er \"Ref_nr\" der er fejlen, men det hedder feltet/posten i den tabel2.


Mvh. Mads
Avatar billede mugs Novice
31. maj 2001 - 12:06 #11
Hej igen
Vildledt og vejledning! Det kan være noget abstrakt at beskrive disse emner.

I dit spørgsmål staver du feltnavnene med småt (ref_nr), nu staver du dem med stort (Ref_nr), selv om det ikke burde den være fejlmeddelelse du får, bør du kontrollere stavemåden. Jeg sidder på mit arbejde og kan ikke på denne maskine kontrollere procedürerne. Det kan jeg først når jeg kommer hjem. Du kan evt. maile databasen til mig på:

mugs@get2net.dk

Du er naturligvis velkommen til at tømme den for data, blot du indtaster nogle opdigtede data jeg kan arbejde med.

Men mads - der er noget i dit seneste svar der fortæller mig, at vi måske kører ad en forkert vej. Når du taler om en åben formular1, og ved et klik på en kommandoknap skal se tilknyttede data i formular 2, så taler vi slet ikke om VBA-procedürer, men derimod om sammenkædede formularer, der fungerer netop på den måde. Du laver sammenkædede formularer ved at åbne databasevinduet og lave en ny formular. Følg guiden der tilbyder forskellige muligheder.

Mogens

Avatar billede madsnn Juniormester
31. maj 2001 - 12:34 #12
Hej Mogens

Jeg er ude efter en løsning der kan tilføje en ny post hvis der ikke allerede er en, og hvis der er en skal denne post vises.

Mads
Avatar billede mugs Novice
31. maj 2001 - 12:53 #13
Hej Mads

En venlig sjæl har lånt mig en maskine og jeg har villedt dig.

I linien:.Fields...

Har jeg byttet om på felterne, det skal være:

.Fields![ref_nr] = refnr

Ordet Fields skal selvfølgelig pege på det felt der skal opdateres, og vi har jo tidligere i proceduren åbnet tabel2. Jeg har lavet en db med de samme felter og procedure og det virker.

I dit svar skriver du, at posten kun skal tilføjes hvis den ikke allerede eksisterer. Hvis den eksistere skal du få en meddelelse, idet feltet jo er unik nøgle.

Hvis det ikke er unik nøgle skal vi ind i en Dcount procedure, men det kan vi også lave.

Jeg skal til et møde her kl 13, og er ikke på kontoret mere idag. Men afventer din tilbagemelding når jeg kommer hjem.

Mogens
Avatar billede madsnn Juniormester
31. maj 2001 - 13:04 #14
Hej Mogens

Jeg vil prøve og melde tilbage ;)

Mads.
Avatar billede madsnn Juniormester
31. maj 2001 - 13:09 #15
Hej Mogens

Fejlen jeg får er:
Syntax error. i linjen: .Fields! [Ref_nr] = Ref nr

Jeg bruger Access 2000, har det noget at sige ?

Mads.
Avatar billede mugs Novice
31. maj 2001 - 21:14 #16
Hej Mads

Ja - det kan meget vel være fejlen. Som jeg skrev igår kl 2025 gælder koden for Access97. Jeg kender intet til Access2000 bortset fra at den kan konvertere fra og til 97. Prøv eventuelt at tage en kopi og konvertere den til 97 og se om du stadig har fejlen.

Jeg har afprøvet koden i Access97, og den virker. Jeg har dog tidligere kopieret koder oprettet i 2000 til 97 uden problemer.

Du er stadig velkommen til at sende mig databasen, men blot skal du huske at konvertere den til 97.

Jeg har nærlæst vores korrespondance og måske er vi gået gal af hinanden fra starten.
I dit oprindelige spørgsmål skriver du, at \"ref_nr\" sendes fra tabel1 til tabel2, det forstår jeg sådan, at det er en ny post du opretter i tabel1 og derefter ønsker den oprettet i tabel2. Den kode jeg har sendt dig opretter netop en ny post i tabel2 efter du har oprettet den i tabel1.

Har du kontrolleret for stavefejl? I dit sidste svar staver du feltnavnene med stort \"R\". Er det korrekt.

Mogens

 
Avatar billede madsnn Juniormester
01. juni 2001 - 09:20 #17
Hej Mogens

I de første mails skrev jeg \"ref_nr\", men det var før jeg havde checket hvad de hed. Nu har heg givet dem forskellige navne så jeg kan kende forskel på dem.

Mvh. Mads
Avatar billede mugs Novice
01. juni 2001 - 11:16 #18
Hej igen igen

Jamen - hvordan går det så?

Jeg kan evt. sende dig den lille testdatabase i Access97, hvor koden virker, så kan du konvertere den til 2000, og derfra hvordan koden skal være.

Mvh / Mogens
Avatar billede riversen Nybegynder
02. juli 2001 - 20:03 #19
Hvad med at lukke?!
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