Avatar billede tolveren Nybegynder
09. november 2004 - 10:08 Der er 46 kommentarer

Kopier 3 felter fra record hvis de findes i tabellen

Hvordan får man kopieret 3 felter fra record hvis de findes i tabellen. Jeg har forsøgt med Dlookup og med opslag. Jeg har en tabel hvor nogle af recorderne er ens i 3 af felterne. Når jeg skal udfylde en ny record vil jeg gerne have at acces selv skriver de 3 felter hvis identen findes i forvejen. Identen har dublanter og ligger i samme tabel. Kan det lade sig gøre og er der nogen som har en brugbar kode.
Avatar billede jensen363 Forsker
09. november 2004 - 10:15 #1
Skaber du ikke redundante data på den måde ... er der ikke blot tale om at du skal benytte nogle relationer imellem tabellerne ???
Avatar billede tolveren Nybegynder
09. november 2004 - 10:16 #2
Jo det har du ret i men. Jeg kunne have lavet en tabel med identer, det er bare ikke gjort og bliver ikke gennemført., så hvis du har en ide alligevel hører jeg gerne.
Avatar billede jensen363 Forsker
09. november 2004 - 10:22 #3
Giv mig et eksempel på tabelindholdet, og lad os arbejde videre derfra
Avatar billede tolveren Nybegynder
09. november 2004 - 10:32 #4
Regnr,Navn,adresse,Modtagedato,varighed,bemærkninger,osv,slutdato,bruger,regtidspunkt
Navn,adresse kan være i flere records.
Avatar billede jensen363 Forsker
09. november 2004 - 11:09 #5
Hvad er det så du vil i forhold til denne tabel ???
Avatar billede tolveren Nybegynder
09. november 2004 - 11:13 #6
Formen åbner i tilføj record/post. Når jeg taster et regnr som eksisterer, så skal Navn og adresse udfyldes automatisk (kopieres fra gl post og indsættes i den nye post)
Avatar billede jensen363 Forsker
09. november 2004 - 11:36 #7
Du kan lave noget som virker med en opdateringsforespørgsel, lidt a´la dette :

UPDATE tblData
INNER JOIN tblData AS tblData_1
ON tblData.Regnr = tblData_1.Regnr
SET tblData_1.Navn = [tblData]![Navn],
tblData_1.Adresse = [tblData]![Adresse]
WHERE (((tblData_1.Navn) Is Null))
OR (((tblData_1.Adresse) Is Null));
Avatar billede tolveren Nybegynder
09. november 2004 - 11:39 #8
Tak indtil videre jeg skal lige teste og det kan jeg først gøre senere på dagen.
Avatar billede jensen363 Forsker
09. november 2004 - 11:41 #9
Kan du se systematikken i SQL-forespørgslen ?
Avatar billede jensen363 Forsker
09. november 2004 - 11:43 #10
Det ideelle ville naturligvis være, hvis du havde een tabel med kunder ( Regnr, Navn og adresse ) og så udelukkende benyttet Regnr i dine efterfølgende registreringer, med relation til kundetabellen.
Avatar billede tolveren Nybegynder
09. november 2004 - 11:47 #11
Nej jeg er ikke helt med på hvad der sker ! Bliver der oprettet en ekstra tabel ?
Avatar billede tolveren Nybegynder
09. november 2004 - 11:49 #12
Skal jeg lave en kommando:  Runsql på hændelsen focus væk eller ?
Avatar billede jensen363 Forsker
09. november 2004 - 11:51 #13
Nej, det er een og samme tabel ( tblData ) du medtager to gange i forespørslen. Denne sammenligner så med sig selv på de blanke poster ( Is Null ), og opdatere disse, hvis der findes relaterede poster ( SET tblData_1.Navn = [tblData]![Navn] )
Avatar billede jensen363 Forsker
09. november 2004 - 11:53 #14
AfterUpdate eller LostFocus skulle kunne benyttes
Avatar billede tolveren Nybegynder
09. november 2004 - 11:57 #15
Har du hel syntaksen ?:
Runsql UPDATE tblData INNER JOIN tblData AS tblData_1 ON tblData.Regnr = tblData_1.Regnr
SET tblData_1.Navn = [tblData]![Navn],
tblData_1.Adresse = [tblData]![Adresse]
WHERE (((tblData_1.Navn) Is Null))
OR (((tblData_1.Adresse) Is Null));
Avatar billede tolveren Nybegynder
09. november 2004 - 12:01 #16
Har jeg ret:
Docmd.runsql UPDATE tblData INNER JOIN tblData AS tblData_1 ON tblData.Regnr = tblData_1.Regnr
SET tblData_1.Navn = [tblData]![Navn],
tblData_1.Adresse = [tblData]![Adresse]
WHERE (((tblData_1.Navn) Is Null))
OR (((tblData_1.Adresse) Is Null));
Avatar billede jensen363 Forsker
09. november 2004 - 12:07 #17
Plejer selv at benytte DAO :

Function Opdater_tblData()
Dim strSQL As String
Dim db As DAO.Database

    Set db = CurrentDb()
   
    strSQL = "UPDATE tblData "
    strSQL = strSQL & "INNER JOIN tblData AS tblData_1 "
    strSQL = strSQL & "ON tblData.Regnr = tblData_1.Regnr "
    strSQL = strSQL & "SET tblData_1.Navn = [tblData]![Navn], "
    strSQL = strSQL & "tblData_1.Adresse = [tblData]![Adresse] "
    strSQL = strSQL & "WHERE (((tblData_1.Navn) Is Null)) "
    strSQL = strSQL & "OR (((tblData_1.Adresse) Is Null));"

        db.Execute strSQL
       

End Function
Avatar billede tolveren Nybegynder
09. november 2004 - 12:09 #18
Jeg prøver den lige
Avatar billede jensen363 Forsker
09. november 2004 - 12:14 #19
Husk ref til dao :o)
Avatar billede tolveren Nybegynder
09. november 2004 - 12:16 #20
Ja, det har jeg, men det virker ikke. Skal der være komma efter [Navn] ?
Avatar billede jensen363 Forsker
09. november 2004 - 12:17 #21
Ja
Avatar billede tolveren Nybegynder
09. november 2004 - 12:18 #22
Jeg har lagt koden på after update på feltet Regnr
Avatar billede jensen363 Forsker
09. november 2004 - 12:19 #23
Og ... hvad sker der ?
Avatar billede tolveren Nybegynder
09. november 2004 - 12:21 #24
ingenting. Er der byttet om på tbldata og tbldata_1. Det er jo tbldata der skal opdateres.
Avatar billede jensen363 Forsker
09. november 2004 - 12:22 #25
Aller først, hvad hedder din tabel ????
Avatar billede tolveren Nybegynder
09. november 2004 - 12:24 #26
Tabellen hedder: kode1.
--------------
Avatar billede jensen363 Forsker
09. november 2004 - 12:26 #27
Se det forklarer jo noget ... :o)

Dim strSQL As String
Dim db As DAO.Database

    Set db = CurrentDb()
   
    strSQL = "UPDATE tblData "
    strSQL = strSQL & "INNER JOIN kode1 AS kode1_1 "
    strSQL = strSQL & "ON kode1.Regnr = kode1_1.Regnr "
    strSQL = strSQL & "SET kode1_1.Navn = [kode1]![Navn], "
    strSQL = strSQL & "kode1_1.Adresse = [kode1]![Adresse] "
    strSQL = strSQL & "WHERE (((kode1_1.Navn) Is Null)) "
    strSQL = strSQL & "OR (((kode1_1.Adresse) Is Null));"

        db.Execute strSQL
       

End Function
Avatar billede tolveren Nybegynder
09. november 2004 - 12:31 #28
Det kan da ikke passe. Der skal vel også rettes ud for update, men det virker stadig ikke
Avatar billede jensen363 Forsker
09. november 2004 - 12:33 #29
Ups ... glemte lige 1. linie

Det burde virke ... har du prøvet at åbne/lukke formularen og set, om posten er opdateret ?
Avatar billede tolveren Nybegynder
09. november 2004 - 12:34 #30
Jeg skal lige spise min madpakke.
Avatar billede jensen363 Forsker
09. november 2004 - 12:35 #31
Velbekommen ... :o)
Avatar billede tolveren Nybegynder
09. november 2004 - 12:42 #32
Skal jeg lave en function og så lave call på den.
Hvis du tager hele "after update" koden med, hvordan ser det så ud ?
Avatar billede jensen363 Forsker
09. november 2004 - 13:32 #33
Om du afvikler den som en global funktion, eller direkte ifbm AfterUpdate er uden betydning, altså ...

Private Sub Regnr_LostFocus()
Dim strSQL As String
Dim db As DAO.Database

    Set db = CurrentDb()
   
    strSQL = "UPDATE kode1 "
    strSQL = strSQL & "INNER JOIN kode1 AS kode1_1 "
    strSQL = strSQL & "ON kode1.Regnr = kode1_1.Regnr "
    strSQL = strSQL & "SET tblData_1.Navn = [tblData]![Navn], "
    strSQL = strSQL & "kode1.Adresse = [kode1]![Adresse] "
    strSQL = strSQL & "WHERE (((kode1_1.Navn) Is Null)) "
    strSQL = strSQL & "OR (((kode1_1.Adresse) Is Null));"

        db.Execute strSQL
                           
    Me.Refresh

End Sub
Avatar billede tolveren Nybegynder
09. november 2004 - 13:40 #34
Jeg prøver lige
Avatar billede tolveren Nybegynder
09. november 2004 - 14:07 #35
Noget virker nu men, navn og adresse indsættes på seneste post og ikke på aktuelle post. Hvad mener du om det.
Avatar billede jensen363 Forsker
09. november 2004 - 14:12 #36
Seneste post er vel også den som er blank ?
Avatar billede tolveren Nybegynder
09. november 2004 - 14:17 #37
Når jeg f eks tapper ned på næste felt, så skulle navnet og adressen dukke op.
Me.Refresh vil ikke køre. Selv om jeg vælger opdater i menuen så dukker navn og adresse ike op i felterne i aktuelle post. Når jeg har lukket formen og genåbnet så kan jeg navigere tilbage og se at Navn og adresse er blevet indsat ?
Avatar billede jensen363 Forsker
09. november 2004 - 14:19 #38
Ok, så kan vi i hvertfald konstatere, at opdateringen i posten foretages, så er det blot at få formularen opdateret i samme åndedrag.
Avatar billede jensen363 Forsker
09. november 2004 - 16:20 #39
Jeg har lige været til møde ... er du kommet længere ?
Avatar billede tolveren Nybegynder
09. november 2004 - 16:24 #40
ja lidt, Hvis jeg taster "Enter" og går tilbage til posten, så er navn og adresse blevet indsat. Nu roder jeg med en kode som vil flytte frem og tilbage ved at jeg taster "tap". Jeg har prøvet: Recordset.Movelast  Det er ikke godt.
Avatar billede jensen363 Forsker
09. november 2004 - 16:27 #41
Jeg har desværre ikke mere tid til at hjælpe i dag ... håber du finder en løsning
Avatar billede tolveren Nybegynder
09. november 2004 - 16:28 #42
Tak for idag
Avatar billede jensen363 Forsker
09. november 2004 - 16:28 #43
selv tak
Avatar billede Jørgen Kirkegaard Professor
16. november 2004 - 16:03 #44
Håber, at dit ping-pong med jensen har fået dig tættere på en beskrivelse af problemet. Foreslår, at du lukker og stiller et nyt og mere præcist spørgsmål - nyhedens interesse er vist stor herinde.
Avatar billede tolveren Nybegynder
16. november 2004 - 16:12 #45
Jeg har lavet en function og kalder den fra feltet "Regnr"
-------------------------------------------------
Call Opdater_kode1
            Forms!Indtast_data_rediger.Refresh
            Call Opdater_kode1
            Forms!Indtast_data_rediger.Refresh
            [Navn].SetFocus
------------------------
Og det virker. Det underlige er bare at der skal laves refresh 2 gange ?
Avatar billede Jørgen Kirkegaard Professor
16. november 2004 - 16:15 #46
Ok, det er sjældent at vi IT'ere forsker i ting, der virker - så jeg synes bare du skal 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