[SQL/MS Access] Meerdere records in 1 query *

Pagina: 1
Acties:
  • 104 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

Anoniem: 71698

Topicstarter
Waarschijnlijk is dit al veel vaker gevraagd maar ik kan het zo snel niet vinden,

Ik wil 20 rijen achter elkaar in 1 query toevoegen aan de tabel, volgens mij is dit mogelijk.

Met php heb ik het iig al wel voor elkaar gekregen.
Maar wat is de syntax hiervoor in ASP.NEt???

Ik heb dit al geprobeerd:

INSERT INTO tabel (veld) VALUES IN ('waarde1', 'waarde2', 'waarde...')
of
INSERT INTO tabel (veld) VALUES IN ('waarde1'), ('waarde2'), ('waarde...')


moet ik dan toch alles loopen als dit niet werkt?

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 11:04
Van waar haal je die 'rijen'?
Als je van een andere tabel komen, kan je ze rechtstreeks over pompen:
code:
1
2
INSERT INTO tabel ( veld, veld2 )
SELECT veld1, veld2 FROM anderetabel


Indien niet, dan zal je record per record moeten inserten.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

Anoniem: 71698

Topicstarter
whoami schreef op 03 september 2004 @ 15:02:
Van waar haal je die 'rijen'?
Als je van een andere tabel komen, kan je ze rechtstreeks over pompen:
code:
1
2
INSERT INTO tabel ( veld, veld2 )
SELECT veld1, veld2 FROM anderetabel


Indien niet, dan zal je record per record moeten inserten.
Alle rijen komen uit een webformuliertje... dus ze worden verzonden waarna ze dus in een tabel gestopt moeten worden

Maar dat worden dan dus 20 inserts? ook niet echt leuk voor de server als ie veel formulieren tegelijk moet verwerken

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 11:53

gorgi_19

Kruimeltjes zijn weer op :9

Wat heeft dit met ASP.Net te maken? Eerder met standaard SQL

* gorgi_19 sloopt ASP.Net uit de titel. Sowieso kan het denk ik geen kwaad om je database te vermelden, ivm specifieke syntax problemen :)

[ Voor 31% gewijzigd door gorgi_19 op 03-09-2004 15:05 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 11:04
Anoniem: 71698 schreef op 03 september 2004 @ 15:04:
[...]


Maar dat worden dan dus 20 inserts? ook niet echt leuk voor de server als ie veel formulieren tegelijk moet verwerken
Transactions \o/
Maareh, je server zal er niet zo veel van merken hoor.....

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

Anoniem: 71698

Topicstarter
Het gaat dus om ASP.net met een access database

edit: owjah..transactions....ook goed :P

[ Voor 32% gewijzigd door Anoniem: 71698 op 03-09-2004 15:13 ]


Acties:
  • 0 Henk 'm!

Anoniem: 71698

Topicstarter
Nou ik ben er inmiddels al bijna zelf achter om het voor elkaar te krijgen, door alle records eerst in een DataSet te zetten en daarna weer in de database is het dus wel mogelijk.

Het enige probleem wat ik nu dus heb...ik krijg via de loop een foutmelding als ik datarows wil toevoegen....

de code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 ' Maak de verbinding en de dataAdapter
        Dim OleDbConn As OleDb.OleDbConnection
        Dim OleDataAdapter As OleDb.OleDbDataAdapter

        OleDbConn = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
         "Data Source=" & Global.dbLocatie & "enquete.mdb")
        Response.Write("verbinding! | ")

        OleDataAdapter = New OleDb.OleDbDataAdapter("SELECT * FROM TblResultaat", OleDbConn)

        ' Maak een nieuwe DataSet adhv OleDataAdapter, maak een nieuwe DataRow aan
        Dim DataSet As DataSet = New DataSet
        Dim DataRow As DataRow

        ' Maak een commandbuilder om de rijen toe te kunnen voegen aan de database
        Dim DataRowsCommandBuilder As OleDb.OleDbCommandBuilder = New OleDb.OleDbCommandBuilder(OleDataAdapter)
        ' Voeg de PrimeryKey toe aan het schema van de dataset, deze wordt nl niet automatisch meegenomen
        OleDataAdapter.MissingSchemaAction() = MissingSchemaAction.AddWithKey

        ' vul de dataset met het resultaat van de DataAdapter
        OleDataAdapter.Fill(DataSet, "tblResultaat")

        ' Vul de nieuwe rij en voeg deze toe aan de DataSet Table
        Dim I As Integer = 1
        While I < 21
            DataRow = DataSet.Tables("tblResultaat").NewRow
            DataRow("ResultaatID") = OleDb.OleDbType.Empty
            DataRow("ResultaatUserID") = "1"
            DataRow("ResultaatVraagNr") = I
            DataRow("ResultaatInhoud") = "inhoud vraag"
            Response.Write("Alles ok! " & I)
--------> DataSet.Tables("tblResultaat").Rows.Add(DataRow)
            I = I + 1
        End While
        ' Voeg de nieuwe rij toe!
        OleDataAdapter.Update(DataSet, "tblResultaat")


Het gaat dus goed tot t pijltje....

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 11:53

gorgi_19

Kruimeltjes zijn weer op :9

Maar dat worden dan dus 20 inserts? ook niet echt leuk voor de server als ie veel formulieren tegelijk moet verwerken
Om maar gelijk roet in het eten te gooien..
It should be noted that these statements are not performed as a batch process; each row is updated individually
Oftewel: Je krijgt hierbij (met de methodiek van datasets en data-adapter) ook tig updates. :) En dat wilde je juist voorkomen; dus de methodiek maakt an sich niet uit. Het enige verschil is dat een dataset optreedt als een Unit Of Work. :)

Aangezien je ook nog de overhead hebt van een dataset, zal het me niets verbazen als deze zelfs iets trager is dan dmv ExecuteNonQuery te gaan updaten / toevoegen :)

[ Voor 16% gewijzigd door gorgi_19 op 07-09-2004 16:38 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Anoniem: 71698

Topicstarter
gorgi_19 schreef op 07 september 2004 @ 16:36:
[...]

Om maar gelijk roet in het eten te gooien..


[...]

Oftewel: Je krijgt hierbij (met de methodiek van datasets en data-adapter) ook tig updates. :) En dat wilde je juist voorkomen; dus de methodiek maakt an sich niet uit. Het enige verschil is dat een dataset optreedt als een Unit Of Work. :)

Aangezien je ook nog de overhead hebt van een dataset, zal het me niets verbazen als deze zelfs iets trager is dan dmv ExecuteNonQuery te gaan updaten / toevoegen :)
OK, je verpest het meteen ;) Maar dit vind ik persoonlijk wat mooier werken. Alleen nou zou die laatste stap dus nog opgelost moeten worden...en daar kom ik nu dus niet uit

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 11:53

gorgi_19

Kruimeltjes zijn weer op :9

Anoniem: 71698 schreef op 07 september 2004 @ 16:38:
[...]


OK, je verpest het meteen ;) Maar dit vind ik persoonlijk wat mooier werken. Alleen nou zou die laatste stap dus nog opgelost moeten worden...en daar kom ik nu dus niet uit
Dan zal je toch minimaal moeten vertellen wat de foutmelding is :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Anoniem: 71698

Topicstarter
Ik testte mn scripts eerst online en dan kreeg geen foutmelding, maar nu ik offline test merk ik dat het hier zit,

code:
1
 DataRow("ResultaatID") = OleDb.OleDbType.Empty


dit is een autonummering veld...maar als ik dit leeg laat krijg ik de melding dat de 0 waarde al bestaat

[ Voor 13% gewijzigd door Anoniem: 71698 op 07-09-2004 17:01 ]


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 11:04
Als die kolom als auto-incr field in je datatable is gedefinieerd, dan hoef je'm geen waarde te geven.
Die lijn die je daar post kan je gewoon weghalen denk ik.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

Anoniem: 71698

Topicstarter
bedankt! werkt...!
Pagina: 1