Toon posts:

[VB] Couldn't update...

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik gebruik Visual Basic 6 om gegevens in een database te laden.

Maar soms krijg ik de fout : "Couldn't update; currently locked by user 'Admin' on machine "PC02349"."

En het is geen fout in de code (want het komt echt heel willekeurig voor / niet altijd bij dezelfde records)

Ik heb al op het net zitten zoeken (heel veel over te vinden), maar nergens vind ik een duidelijke oplossing voor mijn probleem.

Iemand een id?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Staat je database toevallig nog open?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • glashio
  • Registratie: Oktober 2001
  • Laatst online: 14-08 08:20

glashio

C64 > AMIGA > PC

Er is al een sessie geopend door een andere gebruiker ? PC02349 ? Of is dit jou machine naam ?

> Google Certified Searcher
> Make users so committed to Google that it would be painful to leave
> C64 Gospel
> [SjoQ] = SjoQing


Verwijderd

Topicstarter
PC02349 dat is mijn pc.
En ja ik doe men connectie open bij het begin van het programma, ik sluit deze helemaal op het einde. Daartussen doe ik verschillende inserts.

Moet ik bij elke insert de database sluiten en terug openen?

Is dit niet traag?

  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Die foutmelding krijg je inderdaaad als je nog een tabel open hebt in een Acces database.
Ik zou eens een kijkje gaan nemen bij de machine die de DB gelockt heeft.

It’s nice to be important but it’s more important to be nice


  • Lorn
  • Registratie: Maart 2000
  • Laatst online: 13-01-2025

Lorn

I have a bad feeling...

Volgens mij treed zoiets op als de database (access toevallig?) al exclusief is geopened door iets of iemand anders. Denk dat de enigste oplossing een goede foutafhandeling binnen je app is.

Verwijderd

Topicstarter
De access database is zeker en vast gesloten. De ldb-file is weg (dus niet meer gelocked)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 04 april 2003 @ 12:16:
PC02349 dat is mijn pc.
En ja ik doe men connectie open bij het begin van het programma, ik sluit deze helemaal op het einde. Daartussen doe ik verschillende inserts.

Moet ik bij elke insert de database sluiten en terug openen?

Is dit niet traag?
Database openen = Je database is al open door middel van een ander programma.
Je hebt je database al een ker geopend in bijvoorbeeld Access, en je wilt dan het programma gaan uitvoeren.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • glashio
  • Registratie: Oktober 2001
  • Laatst online: 14-08 08:20

glashio

C64 > AMIGA > PC

Niet nog open staan in 'Visdata' Hulptool van Visual Basic ?

> Google Certified Searcher
> Make users so committed to Google that it would be painful to leave
> C64 Gospel
> [SjoQ] = SjoQing


  • Lorn
  • Registratie: Maart 2000
  • Laatst online: 13-01-2025

Lorn

I have a bad feeling...

Verwijderd schreef op 04 April 2003 @ 12:16:
PC02349 dat is mijn pc.
En ja ik doe men connectie open bij het begin van het programma, ik sluit deze helemaal op het einde. Daartussen doe ik verschillende inserts.

Moet ik bij elke insert de database sluiten en terug openen?

Is dit niet traag?
Nee, dit is niet nodig. Je moet gewoon één keer een connectie kunnen openen om dan vervolgens een hele zooi aan statements te verwerken. Je zult je probleem ergens anders moeten zoeken.

Verwijderd

Topicstarter
Nope Visdata is niet open.

PS: Mag je eigelyk meerdere tabellen aanroepen op basis van 1 connectiestring en ado-declaraties... lijkt me vanzelfsprekend dat het mag maar je weet maar nooit :) ?

  • glashio
  • Registratie: Oktober 2001
  • Laatst online: 14-08 08:20

glashio

C64 > AMIGA > PC

Mag je eigelyk meerdere tabellen aanroepen op basis van 1 connectiestring en ado-declaraties...
Uiteraard, no prob..
Alle gedeclareerde objecten op Nothing gezet eind van code ? Misschien blijft er een recordset open staan.. en sluit deze na een timeout .. dat zou de spontaniteit verklaren..

> Google Certified Searcher
> Make users so committed to Google that it would be painful to leave
> C64 Gospel
> [SjoQ] = SjoQing


  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Ik denk dat het verstandig is om wat relevante code te posten anders is het natuurlijk zoeken naar een speld in een hooiberg.

It’s nice to be important but it’s more important to be nice


Verwijderd

Access lockt zijn records per 'page' en niet per record. Een page bevat, afhankelijk van de grootte van het record meestal tussen de 4 en 10 records. Het kan dus zijn dat je record gelocked is terwijl dat record op dat moment helemaal niet gewijzigd wordt. Als jouw programma op dat momentnog bezig is de voorgaande regel te wijzigen oid, kan dat voor problemen zorgen. Stop eens wat DoEventjes ertussen, en probeer eens transactie-verwerking te doen. Daarmee kun je veel beter controleren wat er goed en wat er fout gaat.

Post eens wat code, wie weet zit er wel een foutje in...

Verwijderd

Topicstarter
Idd ja, dat was ik ook al aan het denken.
Ik voeg ineens heel veel records toe. En precies of hij niet kan volgen :-s

Ik zal ff met DoEvents proberen en als ik het niet opgelost krijg dan zal ik wel een stukje code hier placeren...

Tnx

Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
On Error GoTo Err_InsertStructuur:

    mstrSQLInsertCFS = "INSERT INTO Structuur (inf_seqID,inf_parent,inf_subdir,inf_niveauID) VALUES ('" & mstrVorigeSeqID(mintAantalCodes) & "','" & mstrVorigeParent(mintAantalCodes) & "','" & mstrVorigeSubdir(mintAantalCodes) & "','" & Left(mstrVorigeSeqID(mintAantalCodes), 1) & "')"

    
    madoCmdInsertCFS.CommandText = mstrSQLInsertCFS
    madoCmdInsertCFS.CommandType = adCmdText
    madoCmdInsertCFS.ActiveConnection = madoConnInsertCFS
    madoCmdInsertCFS.Execute
    
    
Exit Sub
    
Err_InsertStructuur:
    MsgBox "InsertStructuur" & vbCrLf & mstrSQLInsertCFS & vbCrLf & Err.Description


Deze code staat in een loop.

[ Voor 19% gewijzigd door Verwijderd op 04-04-2003 12:57 ]


  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Is het niet mogelijk om al je inserts in een soort queue te zetten en dan slechts 1 keer een execute te doen?

* pjonk heeft alleen ervaring met DAO en niet met ADO

It’s nice to be important but it’s more important to be nice


Verwijderd

Topicstarter
Mja die queue moet ik dan toch ook nog aflopen met een for lus? Dus dan duikt dat probleem daar weer op ... :-(

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 15-08 11:47

Sponge

Serious Game Developer

Volgens mij kan je 1 execute doen, en moet je daarna een close doen, voordat je weer een execute kunt doen (of voor de execute)

Naja dat meende ik iig ;)

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 14-08 12:38

Crazy D

I think we should take a look.

41.6C.6D.61.72 schreef op 04 April 2003 @ 15:35:
Volgens mij kan je 1 execute doen, en moet je daarna een close doen, voordat je weer een execute kunt doen (of voor de execute)
Nope, je kunt gewoon een aantal executes achter elkaar doen.

Misschien moet je tussen de queries een kleine pauze inbouwen? (hoewel als dat werkt, het waarschijnlijk afhankelijk is van de snelheid en de belasting van het systeem).

Exact expert nodig?


  • Lorn
  • Registratie: Maart 2000
  • Laatst online: 13-01-2025

Lorn

I have a bad feeling...

41.6C.6D.61.72 schreef op 04 April 2003 @ 15:35:
Volgens mij kan je 1 execute doen, en moet je daarna een close doen, voordat je weer een execute kunt doen (of voor de execute)

Naja dat meende ik iig ;)
Zoals CrazyD ook al zei, je kunt idd meerdere queries achter elkaar uitvoeren met een ADO Command. Een keer aanmaken en de active connection aan toe kennen, vervolgens kun je zoveel verschillende queries uitvoeren als je maar wilt. Een ADO Command kent ook geen close functie dus dat hoef je zeker niet te doen. In principe ziet de geposte code er OK uit.
Pagina: 1