Springen naar inhoud


- - - - -

Schijfout


  • Log in a.u.b. om te beantwoorden
Er zijn 5 reacties in dit onderwerp

#1 mlammerts

mlammerts

    Starting Developer

  • Leden
  • 17 berichten
    Laatst bezocht 29 jan 2012 14:28

Geplaatst op 21 augustus 2011 - 23:17

hallo

na het gebruik van een memo veld ( ingesteld op varchar 1500 ) staat de onderstaande code
ik krijg hierna de melding schijffout als ik deze melding negeer wordt de tabel wel geupdate.

weet iemand wat deze melding veroorzaakt.

Groet M.Lammerts
Code:
Private Sub memo_AfterUpdate() 
Dim lmemo As String 
lmemo = Replace(memo, "'", "''") 
lmemo = (Forms![Bestellingen]!memo) sql = "Update dbo.afname_klant SET memo = '" & lmemo & "' WHERE " & "[volnummer]=" & Me![volnummer] DoCmd.RunSQL sql 


#2 guest_ingrid_*

guest_ingrid_*
  • Gasten
    Laatst bezocht

Geplaatst op 05 september 2011 - 12:40

Wat is de melding precies?
Schijffout meldingen komen, in mijn ervaring, meestal uit Windows en niet uit Access.

#3 Herm

Herm

    Junior Developer

  • Leden
  • PipPip
  • 69 berichten
    Laatst bezocht 07 dec 2012 20:03

Geplaatst op 05 september 2011 - 20:16

Hallo Mlammerts,

Kan het dat de schijffout veroorzaakt wordt omdat er in uw lmemo nog altijd garbage zit? (Misschien nog altijd '?)

De plaatsing van uw lmemo = replace(.... in uw code heeft geen enkele zin omdat de inhoud van lmemo in de volgende codelijn al terug wordt overschreven.

Denk er toch nog eens over na om in verband met de terechte opmerkingen (ik denk van Jark en Hypenate) over injunction om parameter query's te gebruiken. Niet alleen is het veiliger maar bovendien krijgt het sql het sein dat wat volgt echt tekst is en niet een of ander verkapt commando. Uw " ' " mag onder die voorwaarden dan ook best blijven staan.

Hierna een prachtig uitgewerkte link over parameterised queries met de Northwind database(dus ook voor access).

http://social.msdn.m...c-4fca2c9e1ea2/

#4 mlammerts

mlammerts

    Starting Developer

  • Leden
  • 17 berichten
    Laatst bezocht 29 jan 2012 14:28

Geplaatst op 07 september 2011 - 22:14

Ingrid zei:

Wat is de melding precies?
Schijffout meldingen komen, in mijn ervaring, meestal uit Windows en niet uit Access.

Hallo

Sorry voor mijn late reactie

ik heb een afbeelding toegevoegd van de melding die ik krijg misschien weten jullie er raad mee.

groet M.Lammerts

#5 mlammerts

mlammerts

    Starting Developer

  • Leden
  • 17 berichten
    Laatst bezocht 29 jan 2012 14:28

Geplaatst op 07 september 2011 - 22:18

Herm zei:

Hallo Mlammerts,

Kan het dat de schijffout veroorzaakt wordt omdat er in uw lmemo nog altijd garbage zit? (Misschien nog altijd '?)

De plaatsing van uw lmemo = replace(.... in uw code heeft geen enkele zin omdat de inhoud van lmemo in de volgende codelijn al terug wordt overschreven.

Denk er toch nog eens over na om in verband met de terechte opmerkingen (ik denk van Jark en Hypenate) over injunction om parameter query's te gebruiken. Niet alleen is het veiliger maar bovendien krijgt het sql het sein dat wat volgt echt tekst is en niet een of ander verkapt commando. Uw " ' " mag onder die voorwaarden dan ook best blijven staan.

Hierna een prachtig uitgewerkte link over parameterised queries met de Northwind database(dus ook voor access).

http://social.msdn.m...c-4fca2c9e1ea2/

Hallo

de replace regel staat erin omdat als men in met memo veld een apostrof gebruikte de inhoud gewist werd en dus niet zichtbaar is op het rapport
ik heb deze oplossing gekregen via het forum.

wat ik verder nog wil toevoegen is dat ik een beginner ben en de database waar ik mee bezig ben een bestaande database is die dagelijks in gebruik is en ik dus niet zomaar alles op zijn kop kan zetten ik ben bezig met eventuele fouten stap voor stap op te lossen.

groet m.lammerts

#6 Herm

Herm

    Junior Developer

  • Leden
  • PipPip
  • 69 berichten
    Laatst bezocht 07 dec 2012 20:03

Geplaatst op 07 september 2011 - 23:41

Iedereen is ooit beginneling geweest dus geen probleem en alle respect ervoor.

De melding komt voort uit een probleem van 'Concurrency'. Op het moment dat jij de db updated hadden andere gebruikers ook de db geopend voor wijzigingen en misschien al wijzigingen aangebracht. Standaard staat SQLServer op 'lock' in zo'n geval om te vermijden dat de gebruikers elkaars wijzigingen zouden overschrijven. Als je dus "Wijzigingen negeren" selecteert dan kan je inderdaad 'updaten' maar dan gaan de wijzigingen die een andere gebruiker aanbrengt, verloren.

Je kunt dit opvangen door een 'Isolation level' in te stellen en dit level moet je zelf beslissen.

Hierna een link met op schitterende wijze vertaald wat 'Concurrency' inhoudt, welke de gevaren zijn en de mogelijke oplossingen van 'Isolation levels' met mooi uitgewerkte voorbeelden.

http://www.sqllion.c...-in-sql-server/

Succes ermee.




0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


Untitled 1

Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)