Avatar billede fyrrebakken Nybegynder
23. oktober 2004 - 00:18 Der er 13 kommentarer og
3 løsninger

Flytte data fra en tabel til en anden

Hvordan kan jeg flytte data fra en tabel til tabel til en anden; De data der skal flyttes er i parantes eks.: (data2). Det er det og ikke anden der skal flyttes over i en ny tabel. Data der står i tabelen er ren tekst og skal forblive det.

Databasen er oprettet i access 2k
Avatar billede vigilante Nybegynder
23. oktober 2004 - 00:22 #1
nu er det jo ikke meget info du skriver men en måde at gøre det på er:

insert into tabel 2(select felt1, felt2, felt3)

Hvis du vil have det mere specifikt bliver du nødt til at give lidt mere info
Avatar billede fyrrebakken Nybegynder
23. oktober 2004 - 00:25 #2
I tabelen er der kun et felt. I det felt er der flg data somm ser ud som følger:

data1 (data2) . Jeg har bruge for at kunne lave to nye tabeler med henholdsvis data1 i den en tabel og data2 i den anden.

Har du brug for mere viden omkring mit problem?
Avatar billede vigilante Nybegynder
23. oktober 2004 - 00:32 #3
Så i begge tabeller har du et felt, og fra den ene tabel vil du have den del af feltet som er i parantes over i feltet i tabel2?
Avatar billede fyrrebakken Nybegynder
23. oktober 2004 - 00:37 #4
ja nemlig. Jeg sidder og arbejder med at hente data fra tabel0 over i henholdsvis tabel1  og tabel2. Og tabel 0 har KUN et felt som de to andre også har - men skulle nu helst ende ud med hver deres data - data1 og data2
Avatar billede vigilante Nybegynder
23. oktober 2004 - 00:41 #5
kigger på det imorgen, hvis ikke andre har løst det inden da =)
Avatar billede fyrrebakken Nybegynder
23. oktober 2004 - 00:42 #6
OK tak for det venter spændt på svar
Avatar billede vigilante Nybegynder
23. oktober 2004 - 01:47 #7
Så blev det imorgen -og her er der et svar:

INSERT INTO Table2 ( felt1 ) SELECT Mid(Table1.felt1,InStr(Table1.felt1,"(")+1,InStr(Table1.felt1,")")-InStr(Table1.felt1,"(")-1) AS felt1
FROM Table1;


Nu er det sengetid, så hvis det ikke lige var det svar du søgte må du spørge igen =)

Nat nat
Avatar billede fyrrebakken Nybegynder
23. oktober 2004 - 12:16 #8
Jeg har brug for lidt mere forklaring. Hvordan skal jeg afvikle din kode? Jeg er lidt grøn i det her databasenoget.
Avatar billede vigilante Nybegynder
23. oktober 2004 - 12:23 #9
Du åbner den database du har dine data i (tag lige en kopi først :) )

Du laver en ny query/forespørgsel, og vælger at lave den i designview

Så trykker du close til det vindue hvor du kan vælge tabeller

Så vælger du menpunktet view/vis og vælger sql view

der indsætter du koden som du selvfølgelig lige tilretter med de rigtige tabelnavne/feltnavne

Så trykker du bare på udråbstegnet "!" og så kører det.
Avatar billede fyrrebakken Nybegynder
23. oktober 2004 - 14:43 #10
Jeg kan ikke få det til at virke skal det se ud som flg:

INSERT INTO Tabel2 ( felt1 )
SELECT Mid(Tabel1.felt1,InStr(Tabel2.felt1,"(")+1,InStr(Tabel1.felt1,")")-InStr(Tabel1.felt1,"(")-1) AS felt1
FROM Tabel0;


Tabel0 er den tabel hvor der hentes fra. Og tabel1 er den tabel, hvor det data der ikke står i parantes skal hen. Mens der i tabel2 skal stå det i parantes
Avatar billede supertekst Ekspert
23. oktober 2004 - 21:19 #11
Hej

Her er et alternativ forslag.

Opret en ny formular i databasen. Formularen skal ikke baseres på nogle tabeller.
Vælg designvisning - indsæt en knap fra værktøjskassen. Højreklik på denne knap - vælg egenskaber(Properties) - hændelsesegenskaber: Ved klik på knappen - vælg generer hændelse via kodegenerator.

Indsæt denne kode via udklipsholder - og tilpas evt. knappens navn - samt evt. tabelnavnene. Gem koden - gå til formularvisning og klik på knappen

Koden er som følger:
====================
Option Compare Database
Option Explicit

Const basisTabel = "tabel0"            'navn t/ bestående tabel
Const uptabel = "tabel1"                'navn t/tabel til text uden ( )
Const mptabel = "tabel2"                '-    -      -  -    med ( )

Dim db, tabA, tabB, tabC
Dim up, mp
Private Sub Kommandoknap0_Click()        'SKAL evt rettes
Dim f
    Set db = CurrentDb
    Set tabA = db.OpenRecordset(basisTabel)
    Set tabB = db.OpenRecordset(uptabel)
    Set tabC = db.OpenRecordset(mptabel)
   
    For f = 1 To tabA.RecordCount
        With tabA
            adskil .Fields(0)
            opdaterTabel tabB, up
            opdaterTabel tabC, mp
           
            .MoveNext
        End With
    Next f
   
    MsgBox ("Adskillelsen er udført")
End Sub
Private Sub opdaterTabel(tabx, txt)
    With tabx
        .AddNew
        .Fields(0) = txt
        .Update
    End With
End Sub
Private Sub adskil(txt)
Dim p1, p2, rtxt
    p1 = InStr(txt, "(")
    p2 = InStr(txt, ")")
   
    mp = Mid(txt, p1 + 1, p2 - (p1 + 1))
    up = LTrim(Mid(txt, 1, p1 - 1) + Mid(txt, p2 + 1))
End Sub

MVH
Avatar billede vigilante Nybegynder
23. oktober 2004 - 21:48 #12
Nej hvis din tabel hedder tabel0 hvor data'ene kommer fra skal det se således ud:

INSERT INTO Tabel2 ( felt1 )
SELECT Mid(Tabel0.felt1,InStr(Tabel0.felt1,"(")+1,InStr(Tabel0.felt1,")")-InStr(Tabel0.felt1,"(")-1) AS felt1
FROM Tabel0;

Og for at få data i tabel1:

INSERT INTO Tabel1 ( felt1 )
SELECT Mid(1,InStr(Tabel0.felt1,"(")-1) AS felt1
FROM Tabel0;
Avatar billede fyrrebakken Nybegynder
03. november 2004 - 20:45 #13
Jeg har fået løst det på en anden måde. Ellers tak for hjælpen. Jeg vil gerne, hvis i der har deltaget i mit problem ligger et svar
Avatar billede vigilante Nybegynder
03. november 2004 - 21:44 #14
svar =)
Avatar billede supertekst Ekspert
04. november 2004 - 08:06 #15
OK

MVH
Avatar billede fyrrebakken Nybegynder
04. november 2004 - 16:20 #16
Mange tak for jeres indsats. Jeg deler pointene lige:
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