Avatar billede jalle76 Nybegynder
16. januar 2004 - 13:25 Der er 8 kommentarer og
2 løsninger

Indsætte flere records med en insert query

Er det muligt at koge følgende 100 inster querys ned til én insert query?

INSERT INTO table (kol1, kol2) VALUES (1234, 1)
INSERT INTO table (kol1, kol2) VALUES (1234, 2)
INSERT INTO table (kol1, kol2) VALUES (1234, 3)
...
INSERT INTO table (kol1, kol2) VALUES (1234, 100)

kol2 er ikke en autonummereret kolonne. Men værdierne er fortløbne.

- J.A.
Avatar billede mufoxe Nybegynder
16. januar 2004 - 13:27 #1
Nej, kun hvis du har dine data i en anden tabel, kan du gøre det.

F.eks.

INSERT INTO table(kol1, kol2)
  SELECT kol1, kol2 FROM table2
Avatar billede mufoxe Nybegynder
16. januar 2004 - 13:28 #2
Hvis du kun vil have kol2 til at variere kan du bruge en WHILE løkken

DECLARE @counter INT
SET @counter = 1

WHILE @counter < 1000
BEGIN
  INSERT INTO table (kol1, kol2) VALUES(1234, @counter)
END
Avatar billede mufoxe Nybegynder
16. januar 2004 - 13:31 #3
Du kan også bruge WHILE løkken til at indsætte forskellige værdier i begge kolonner

DECLARE @counter1 INT
DECLARE @counter2 INT
SET @counter1 = 1
SET @counter2 = 2

WHILE @counter1 < 1000
BEGIN
  WHILE @counter2 < 1000
  BEGIN
    INSERT INTO table (kol1, kol2) VALUES (@counter1, @counter2)
    SET @counter2 = @counter2 + 1

  END

  @counter1 = @counter + 1

END

Mit eksempel nr. mangler der en SET @counter = @counter + 1 efter INSERT.
Avatar billede terry Ekspert
16. januar 2004 - 13:51 #4
fufoxe>where are you wrinting this ?

DECLARE @counter1 INT
DECLARE @counter2 INT
SET @counter1 = 1
SET @counter2 = 2

WHILE @counter1 < 1000
BEGIN
  WHILE @counter2 < 1000
  BEGIN
    INSERT INTO table (kol1, kol2) VALUES (@counter1, @counter2)
    SET @counter2 = @counter2 + 1

  END

  @counter1 = @counter + 1

END

Never seen this syntax in Access before!
Avatar billede mufoxe Nybegynder
16. januar 2004 - 13:56 #5
You right click on an object and choose "SQL" in the Queries section of your database.
Avatar billede overchord Nybegynder
16. januar 2004 - 13:57 #6
princippet er der vel, men SQL'en skal koeres hver gang, saa isted for BEGIN...END kan man bruge:

strsql = "INSERT INTO table (kol1, kol2) VALUES (" & counter1 & "," & counter2 & ");"
docmd.RunSQL (strsql)
counter1 =  counter1+1
....
Avatar billede mufoxe Nybegynder
16. januar 2004 - 13:57 #7
I am not really an Access developer so I don't know all that much about to actually apply the SQL in Access but I am told that you should be able to use it.
Avatar billede terry Ekspert
16. januar 2004 - 17:54 #8
some feedback from jalle76 would be nice though
Avatar billede fynbohans Nybegynder
17. januar 2004 - 18:16 #9
For mig ville det nemmeste være at bruge VBA i en formular:
Hvis din tabel er tom, og du har de 2 felter TAL1 og TAL2, lav en formular med de 2 felter [TAL1] og [TAL2].
Ved åbning indsætter du følgende kode:

Private Sub Form_Open(Cancel As Integer)
            Dim Tal As Long
            Tal = 0
            Do
                Tal = Tal + 1
                DoCmd.GoToRecord , , acNewRec
                [TAL1] = 1234
                [TAL2] = Tal
           
                If Tal = 100 Then Exit Do
            Loop
            DoCmd.Close
           
End Sub
Avatar billede jalle76 Nybegynder
06. marts 2004 - 08:50 #10
Undskyld den lange svartid. Men sygdom har forhindret mig i at være ved computeren i lang tid. Problemet blev løst på anden vis, men jeg takker for hjælpen.
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