Toon posts:

[ASP] meerdere INSERT opdrachten na elkaar

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil door middel van een loop een aantal keer achter elkaar een INSERT opdracht uitvoeren.

De opzet van de loop is als volgt:
code:
1
2
3
4
5
6
7
8
9
10
11
set objInsert = Server.CreateObject("ADODB.Command")
objInsert.ActiveConnection = "dsn=Database;"

intTeller = 0
intAantal = 1
do while intTeller < intAantal
  SQLINSERT = INSERT INTO tabel (veld1, veld2) VALUES (waarde1, waarde2)
  objInsert.Commandtext = SQLINSERT
  objInsert.Execute
  intAantal = intAantal + 1
loop

Als ik deze lus 1 keer doorloop, gaat het goed, maar als ik het twee keer wil doen, krijg ik de volgende foutmelding

[Microsoft][ODBC Microsoft Access Driver] Could not update; currently locked by user 'admin' on machine 'WWW05'.

Wat kan ik hier tegen doen? Is de enige mogelijkheid om een pauze in te voegen? Bij twee keer zou ik dat niet zo erg vinden, maar bij 100 keer begint het vervelend te worden......

  • Sjnirk
  • Registratie: Maart 2001
  • Laatst online: 27-03-2025

Sjnirk

Hie vrieve

kun je het dan niet gewoon doen via een recordset?

Bikkelen gebeurt pas na 2:00


  • HansMij
  • Registratie: Mei 2002
  • Laatst online: 21:12
Kun je niet aan het einde van je loop een flush uitvoeren?

waarschijnlijk iets van
code:
1
objInsert.flush

Verwijderd

Topicstarter
Op dinsdag 14 mei 2002 12:04 schreef HansMij het volgende:
Kun je niet aan het einde van je loop een flush uitvoeren?

waarschijnlijk iets van
code:
1
objInsert.flush
Zou misschien kunnen. Dan zou je aan het begin van iedere loop een nieuw objInsert aan moeten maken. Kost dat niet (onnodig) veel tijd?

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 08-09 13:41

Crazy D

I think we should take a look.

Hmmm weird. Ik heb vrij vaak achter elkaar inserts afgevuurd op Access. Alleen maakte ik m'n connectie niet via een dsn maar via een "gewone" connectiestring, maar ja in hoeverre dat nog wat scheelt weet ik niet.

Exact expert nodig?


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Trouwens.. ff iets anders.. Moet je niet de teller ophogen ipv het aantal? Volgens mij kom je in een oneidige lus terecht namelijk...

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Je loop klopt niet...

er komt nooit een eind aan doordat je het aantal ophoogt ipv de teller. Dit kon wel eens voor de foutmelding zorgen.

Verwijderd

Wordt er de eerste keer wel een regel toegevoegd aan je tabel? Zitten er in de database soms restricties?

Verwijderd

Staat er data in je database?

Je hebt een end-less-loop geschreven, je heb best kans dat er duizenden records in je DB staan en dat Access gewoon begint te zeuren omdat Access het te zwaar krijgt.

Verwijderd

Topicstarter
Sorry, die loop klopt inderdaad niet, maar dat is niet het probleem. Ik heb het hier wat simpeler opgeschreven dan het is. Op mijn "echte" pagina klopt de loop wel.

Het probleem is gewoon dat'ie wel 1 keer wil INSERTen, maar bij de tweede keer krijg ik de foutmelding.

Verwijderd

er is geen primaire key gedefinieerd in je tabel en je introduceert met je tweede insert dubbele data.
de engine kan niet meer identificeren welk record je aan het wijzigen bent.

Verwijderd

Topicstarter
Op dinsdag 14 mei 2002 15:09 schreef iskander het volgende:
er is geen primaire key gedefinieerd in je tabel en je introduceert met je tweede insert dubbele data.
de engine kan niet meer identificeren welk record je aan het wijzigen bent.
Er zijn nog meer velden in de tabel, waaronder een primary key. Helaas is dat ook niet het probleem :'(

Verwijderd

Op dinsdag 14 mei 2002 15:09 schreef iskander het volgende:
er is geen primaire key gedefinieerd in je tabel en je introduceert met je tweede insert dubbele data.
de engine kan niet meer identificeren welk record je aan het wijzigen bent.
Dat is bij het updaten moeilijk ja, maar hij insert gewoon, je kan (als mag met keys en indexes) gewoon dubbelle data
toevoegen hoor.

Dubbele data geeft een andere fout melding, iets van:
Could not insert data would create duplicate indexes
ofzo

Verwijderd

Probeer dit eens, de meest standaard manier van data in een
DBtje rammen via ASP:
code:
1
2
3
4
5
6
7
8
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Database"
intTeller = 0
intAantal = 1
Do While intTeller < intAantal
  Conn.Execute("INSERT INTO tabel (veld1, veld2) VALUES (waarde1, waarde2)")
  intTeller = intTeller + 1
loop

Verwijderd

Topicstarter
|:( |:( |:( |:( |:( |:( |:( |:( |:( |:( |:( |:( |:( |:(

Oei, ik ben niet zo handig bezig. Het maken van het ADODB.Command object had ik toch ook binnen de loop staan (in mijn "echte" pagina dan), waardoor objInsert opnieuw gedefinieerd werd, terwijl 'ie nog niet geflusht was.

Probleem opgelost.

(wat hebben we nu geleerd :? Eerst goed kijken voor je om hulp gaat vragen |:( |:()
Pagina: 1