Avatar billede Slettet bruger
15. juli 2005 - 10:01 Der er 5 kommentarer og
1 løsning

SELECT INTO uden oprettelse af ny tabel.

Hej Eksperter,

jeg prøver at tilføje nogle rows fra en tabel til en anden, så at sige kopiere rækker fra en tabel til en anden - der ville jeg så mene at man skulle bruge SELECT INTO, men dokumentation (på denne side: http://www.postgresql.org/docs/7.4/interactive/sql-selectinto.html) siger at query'en opretter en ny tabel, og det er jo ligefrem ikke meningen.

Er der nogle der har et forslag hvordan dette kan gøres, altså uden at dumpe dataene til en extern fil (COPY TO)og derefter lave en COPY FROM ?

Mvh Anders.
Avatar billede jesperjacobsen Nybegynder
15. juli 2005 - 10:45 #1
Hej Anders, jeg har nedenunder et eksempel der kopierer current record fra een tabel til en historik tabel, den skal rettes lidt til men hvis jeg læser dit indlæg korrekt kan den bruges...


Public Function SkrivTilHistorik(Tabelnavn As String, DinTabel As String, PrimærNøgleNavn As String, PrimærNøgleVærdi As Variant, Handling As Byte)
    Dim db As Database
    Dim tdef As TableDef
    Dim tdefHist As TableDef
    Dim n As Byte
    Dim SQLStr As String
   
    Set db = CurrentDb
    Set tdef = db.TableDefs(Tabelnavn)
    Set tdefHist = db.TableDefs(HistorikTabel)
   
    SQLStr = "INSERT INTO [" & DinTabel& "] ( "
    For n = 0 To tdef.Fields.Count - 1
        SQLStr = SQLStr & "[" & tdef.Fields(n).Name & "], "
    Next n
    SQLStr = SQLStr & "ÆndretAf, ÆndretDato, HistorikHandling ) "
   
    SQLStr = SQLStr & "Select "
    For n = 0 To tdef.Fields.Count - 1
        SQLStr = SQLStr & "[" & tdef.Fields(n).Name & "], "
    Next n
    SQLStr = SQLStr & "'" & GetUsername & "', Now(), " & Handling & " "
    SQLStr = SQLStr & "FROM [" & Tabelnavn & "] WHERE [" & PrimærNøgleNavn & "] = " & PrimærNøgleVærdi
    db.Execute SQLStr
End Function

Alle felter med det i recorden copy pastes til

Eksempel på kald af funktionen, vha. en event på en formular:

Private Sub Form_AfterUpdate()
    'Skriv til historik ved ændring
    If PKey > 0 Then
   
      SkrivTilHistorik DinTabel, ,PrimærNøgle, Me(PrimærNøgle), HandlingÆndring

    End If
End Sub


Du kan ligeledes fjerne alt vedr. HandlingÆndring, håber det hjælper dig lidt viddere.

Mvh Jesper
Avatar billede Slettet bruger
15. juli 2005 - 10:49 #2
Hej Jesper,

det var nu ikke fordi jeg ikke kan strikke et PHP5 script sammen der ville gøre det samme som dit script gør, men jeg søger efter en indbygget løsning, en kommando der er indbygget i PostgreSQL der gør det samme, så jeg er fri for at køre dataene igennem en form for ekstern resource.

Men ellers tak for scriptet, hvad er det i, Visual Basic?
Avatar billede arne_v Ekspert
15. juli 2005 - 10:53 #3
Har du prøvet:

INSERT INTO tabelnavn SELECT ...

?
Avatar billede Slettet bruger
15. juli 2005 - 13:21 #4
Nej, men det lyder som en god løsning.... på problemet, jeg får dog ikke mulighed for at prøve for sent i aften, men læg lige et svar såfremt det fungerer.
Avatar billede arne_v Ekspert
15. juli 2005 - 16:58 #5
.
Avatar billede Slettet bruger
17. juli 2005 - 10:18 #6
Jeps virker, takker for svar :-)
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
Computerworld tilbyder specialiserede kurser i database-management

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