Hallo

Welkom, Gast. Alsjeblieft inloggen of registreren.

Recent

222 gasten, 0 leden

Welkom, Gast. Alsjeblieft inloggen of registreren.

28 maart 2024, 17:06:28

Login met gebruikersnaam, wachtwoord en sessielengte

Nieuws

Welkom op het vernieuwde NL Computer Forum!

Auteur Topic: Disk or network error  (gelezen 16771 keer)

0 leden en 1 gast bekijken dit topic.

Offline jvdpeet †
  • Senior lid
  • ****
  • Berichten: 365
  • Geslacht: Man
Disk or network error
« Gepost op: 16 mei 2011, 14:43:31 »
Ik krijg fout "Disk or network error" in de volgende Sub. Deze Sub wordt aangeroepen in Form_Load en de fout meldt zich bij terugkeer in Form_Load. Ik heb geen idee wat de oorzaak van deze fout kan zijn en op internet wordt ik ook niet veel wijzer omtrent deze fout. Variabele df bevat waarde 1.
Heeft iemand een idee wat deze fout kan veroorzaken? 
Het codefragment is:
Public Sub WriteLOG(LogText)
' Create or add to existing logfile, filename is current date
Dim df%
df = FreeFile
Open LOGDIR & Format(Date, "yyyymmdd") & "LOG.TXT" For Append As #df
Print #df, Now & Chr(32) & LogText
'WriteLOG ("---< " & App.Title & " started >---" & ernum & " " & Foutbron)      ' Write main start to logfile
Close #df
End Sub

 
m.vr.gr.,

Jan

Offline Peter

  • Sysop
  • *****
  • Berichten: 5.683
  • Geslacht: Man
Re: Disk or network error
« Reactie #1 Gepost op: 16 mei 2011, 20:16:44 »
Hoi Jan,

Citaat
Variabele df bevat waarde 1.
Dat is oke.

Staat er geen errornummer bij de melding?
Wat is stringwaarde van LOGDIR & Format(Date, "yyyymmdd") & "LOG.TXT" ?
Hoe groot is het bestand waarin je de logtekst wilt schrijven? Hernoem dat oude bestand eerst of gooi het weg.


Peter

Offline jvdpeet †
  • Senior lid
  • ****
  • Berichten: 365
  • Geslacht: Man
Re: Disk or network error
« Reactie #2 Gepost op: 17 mei 2011, 11:32:14 »
Hoi Peter,
Er wordt geen errornumber bij de fout vermeld, maar als ik op Help klik, krijg ik error 524.
In LOGDIR etc. staat het pad naar het logbestand en de naam van het nieuw aangemaakt logbestand is 20110517LOG.TXT en dat bestand is 190 kB groot.
 
 
groetjes,
 
Jan

Offline Peter

  • Sysop
  • *****
  • Berichten: 5.683
  • Geslacht: Man
Re: Disk or network error
« Reactie #3 Gepost op: 17 mei 2011, 20:59:06 »
Hoi Jan,

Vermoedelijk treedt de fout ergens anders op. Heb je een fout-afhandeling in de Form_Load event?
Plaats anders eens wat breakpoints in je code om te achterhalen waar het precies fout gaat. Ik denk aan een database-onderdeel.

Ik neem aan dat LOGDIR een toegankelijke station/map is.
190kb voor een logfile hoeft geen probleem te zijn. Staat daar geen aanwijzing in over hoe en wat je programma zoal doet of juist niet doet?

Het programma wordt toch niet meerdere keren gestart?


Peter

Offline jvdpeet †
  • Senior lid
  • ****
  • Berichten: 365
  • Geslacht: Man
Re: Disk or network error
« Reactie #4 Gepost op: 18 mei 2011, 01:01:55 »
Hoi Peter,
Ik heb het programma met F8 vanaf het begin tot het einde van Writelog doorgelopen en het programma geeft nergens onderweg een fout, maar alleen bij het laatste laatste statement van Writelog. Als de fout in vorige routines zou zitten, moet de fout toch in een van die routines optreden of ergens aan het einde van de routine waar de fout optreedt.
De code welke aan Writelog vooraf gaat luidt:
PROGDIR = App.Path & "\"    ' Set PROGDIR
LOGDIR = PROGDIR & "LOG\"   ' Set LOGDIR
If Len(Dir(LOGDIR, vbDirectory)) = 0 Then       ' directory niet gevonden?
    MkDir LOGDIR    ' Create it
End If
' Maken van foutenlog.
Call WriteLOG("---< " & App.Title & " started >---")            ' Write main start to logfile: Deze misschien omwisselen met het volgende  regels.

groetjes,
 
Jan

Offline Peter

  • Sysop
  • *****
  • Berichten: 5.683
  • Geslacht: Man
Re: Disk or network error
« Reactie #5 Gepost op: 18 mei 2011, 19:52:15 »
Hoi Jan,

Als dit de enige code is in Form_Load waarbij het al fout gaat dan snap ik het niet. Het enige wat er fout kan gaan is dat het programma in de root van een drive staat, dus niet in een submap. PROGDIR krijgt dan bijv. de stringwaarde "C:\\" omdat App.Path dan al het backslash-teken bevat. LOGDIR wordt dan "C:\\LOG\" en dan lust het OPEN statement niet waardoor je "error 76: Path not found" krijgt.

Kun je een gedeelte van het Form_Load in een nieuw project plakken om te zien of het daarmee ook fout gaat?


Peter

Offline jvdpeet †
  • Senior lid
  • ****
  • Berichten: 365
  • Geslacht: Man
Re: Disk or network error
« Reactie #6 Gepost op: 27 mei 2011, 14:59:19 »
Hoi Peter,
Ik heb wat uitgeprobeerd en kom voor mij onbegrijpelijke dingen tegen. Als ik het hele form waarin de fout optreedt in een nieuw project zet en alles op tekst zet wat niet met het logbestand te maken heeft, krijg ik de fout ook. Het gekke is daarbij dat na het verlaten van Form_Load het programma terecht komt in Sub Form_Resize, hoewel deze nergens aangeroepen wordt. Bij het verlaten van Form_Load krijg ik twee keer de fout "Er is een schijf-of netwerkfout opgetreden" en vervolgens vijf keer de fout "Disk- or network error", hoewel er na Exit Sub van Form_Load geen opdrachten staan. Ra-ra hoe kan dat?
Als ik in een tweede project alles wat niet met het form van sub Form_Load  te maken heeft verwijder, wordt de fout niet gegeven. Wat ik nu nog wil uitproberen is, wat er gebeurt als ik één voor één alle subs van het form van Form_Load verwijder of op tekst zet. Als de fout dan blijft, kan die alleen maar veroorzaakt worden door het form van Form_Load. Het vervelende is dat de fout niet wordt gesignaleerd onmiddellijk na het optreden daarvan, maar pas helemaal aan het einde. 

Offline Peter

  • Sysop
  • *****
  • Berichten: 5.683
  • Geslacht: Man
Re: Disk or network error
« Reactie #7 Gepost op: 27 mei 2011, 21:16:21 »
Hoi Jan,

Citaat
Als ik het hele form waarin de fout optreedt in een nieuw project zet en alles op tekst zet wat niet met het logbestand te maken heeft, krijg ik de fout ook.
Dat lijkt me logisch omdat het probleem daar niet zit. Je zou dan nl. een andere foutmelding krijgen.

Citaat
Het gekke is daarbij dat na het verlaten van Form_Load het programma terecht komt in Sub Form_Resize, hoewel deze nergens aangeroepen wordt.
Dat is normaal. Nadat het formulier geladen is (Form_Load) wordt het meestal zichtbaar gemaakt. Omdat het zichtbaar wordt en waarschijnlijk een andere grootte krijgt, wordt automatisch Form_Resize getriggert.
Daarna wordt het formulier actief, dit triggert Form_Activate. Als laatste volgt er nog een Form_Paint event, omdat er op het formulier nog wat ververst wordt.
Dit is de volgorde van startup events voor een formulier:
Form_Initialize
Form_Load
Form_Resize
Form_Activate
Form_Paint

Als je 1 van deze events gebruikt, plaats daar dan lokale error-afhandeling en log deze acties en eventueele errors.

Citaat
Bij het verlaten van Form_Load krijg ik twee keer de fout "Er is een schijf-of netwerkfout opgetreden" en vervolgens vijf keer de fout "Disk- or network error",
Dat lijkt wel dezelfde melding, de 1e in het Nederlands, de 2e in het Engels !!!?

[info]Nog een tip: Als je bepaalde routines in andere formulieren aanroept terwijl dat formulier nog niet geladen was, dan gebeurt dit ook automatisch!
Log dus ook in alle andere formulieren het Form_Load event.[/info]

Kun je hier wat mee?


Peter
« Laatst bewerkt op: 28 mei 2011, 12:41:29 door Peter »

Offline jvdpeet †
  • Senior lid
  • ****
  • Berichten: 365
  • Geslacht: Man
Re: Disk or network error
« Reactie #8 Gepost op: 28 mei 2011, 11:59:32 »
Hoi Peter,
Met deze uitleg kan ik inderdaad wat, hoewel het voor de oplossing van dit ptobleem niet strict meer nodig is. Ik heb de fout inmiddels opgelost. Gelukkig had ik nog een oude backup van vóór de fout en vergelijking met de huidige versie leverde op dat de datasource van een tabel op tekst was gezet. Door de ' weg te halen bleef de fout weg. Dat was dus de boosdoener. Maar je tips over het doorlopen van Form-routines en het daaraan toevoegen van foutcode kan
helpen fouten nauwkeuriger te lokaliseren. Hartelijk dank.
 
Jan

Offline Peter

  • Sysop
  • *****
  • Berichten: 5.683
  • Geslacht: Man
Re: Disk or network error
« Reactie #9 Gepost op: 28 mei 2011, 12:45:36 »
Hoi Jan,

Citaat
de datasource van een tabel op tekst was gezet. Door de ' weg te halen bleef de fout weg. Dat was dus de boosdoener.
Mooi dat het nu werkt. Ik zat al te denken aan een corrupte database-koppeling en dat klopte dus  8) .


Groeten, Peter