Hallo

Welkom, Gast. Alsjeblieft inloggen of registreren.

Recent

205 gasten, 0 leden

Welkom, Gast. Alsjeblieft inloggen of registreren.

28 maart 2024, 18:48:08

Login met gebruikersnaam, wachtwoord en sessielengte

Nieuws

Welkom op het vernieuwde NL Computer Forum!

Auteur Topic: Alle in de toepassing gebruikte data controls in de Form_Load coderen  (gelezen 13414 keer)

0 leden en 1 gast bekijken dit topic.

Offline jvdpeet †
  • Senior lid
  • ****
  • Berichten: 365
  • Geslacht: Man
In form Main van een toepassing codeer ik de database  en de recordsource van alle in de toepassing gebruikte data controls.
Bij het verlaten van de Form_Load krijg ik een aantal keren Disk or network error.
Verplaats ik de definitie van database en recordsource van de data controls naar de routine waar de betreffende databases gebruikt worden, dan krijg ik evenveel keren Disk or network error als in de vorige oplossing. Het op één plaats definiëren van de database en recordsource i.p.v. op de plaats waar gebruikt, is dus kennelijk geen probleem. 
Naar aanleiding daarvan heb ik een aantal vragen.
Waar wordt bij gebruik van data controls de database geopend en waar gesloten?
Als form Main geladen wordt is toch nog niet de hele toepassing geladen en zijn eventuele fouten m.b.t de datacontrols toch nog niet bekend (zo er al fouten in zouden zitten).
Ik wil overstappen naar ADO, omdat je dan zelf kunt bepalen of en wanneer een database open of gesloten is.  Ik gebruik echter alleen Access en zou dus kunnen volstaan met DAO, maar vrees dat gebruikers dan problemen zouden kunnen krijgen met bepaalde dll's, ocx-en of drivers. Is deze vrees terecht?
 

Offline Peter

  • Sysop
  • *****
  • Berichten: 5.683
  • Geslacht: Man
Re: Alle in de toepassing gebruikte data controls in de Form_Load coderen
« Reactie #1 Gepost op: 8 juli 2012, 21:38:41 »
Hoi Jan,

Citaat
Waar wordt bij gebruik van data controls de database geopend en waar gesloten?
Het toekennen van een ongeldige of niet bereikbaar database bestand zal tot een foutmelding leiden met Data1.DataBaseName = <database>

Het sluiten van een database met een Data1 control gaat via Data1.DataBase.Close

Citaat
Als form Main geladen wordt is toch nog niet de hele toepassing geladen en zijn eventuele fouten m.b.t de datacontrols toch nog niet bekend (zo er al fouten in zouden zitten).
Zie het antwoord op de 1e vraag. Of heb je soms in de VB IDE al bestanden toegekend aan de database controls? Post eventueel de logregels van je programma die deze fouten genereren.

Citaat
Ik wil overstappen naar ADO, omdat je dan zelf kunt bepalen of en wanneer een database open of gesloten is.  Ik gebruik echter alleen Access en zou dus kunnen volstaan met DAO, maar vrees dat gebruikers dan problemen zouden kunnen krijgen met bepaalde dll's, ocx-en of drivers. Is deze vrees terecht?
Geen idee.


Peter



Offline jvdpeet †
  • Senior lid
  • ****
  • Berichten: 365
  • Geslacht: Man
Re: Alle in de toepassing gebruikte data controls in de Form_Load coderen
« Reactie #2 Gepost op: 11 juli 2012, 15:37:15 »
Hoi Peter,
De fout "Disk or network error" is een fout met een vage aanduiding die verschillende foutcodes kan hebben. Bovendien wordt deze fout soms pas gemeld als je bijv. met F8 de betreffende coderegel al lang bent gepasseerd. Je kunt de plaats van de fout dus moeilijk lokaliseren.
Ik heb ervaren dat deze fout optreedt als je bijv. de databasenaam al ingevuld hebt in de properties van de data control en hem dan later in de code vermeldt. De database wordt dan dus 2 keer geopend en dat geeft de fout.
Ik dacht er goed aan te doen dit te melden. Als je op internet naar een verklaring van deze fout zoekt vind je vrijwel nergens een simpele en duidelijke verklaring. Mogelijk kan iemand met bovenstaande melding zijn voordeel doen.
Overigens Peter krijg ik in de code die ik indertijd van je heb gehad ook een Disk or network error na de WriteLOG. Bestaat er een instructie die aangeeft of een bestand al geopend is? Ik kan er wel een vinden voor Excel-bestanden maar niet voor andere bestanden. In mijn geval wil ik controleren of LOGDIR al geopend is, maar ik weet niet hoe je dat doet  in VB6.
 
 
Jan

Offline Peter

  • Sysop
  • *****
  • Berichten: 5.683
  • Geslacht: Man
Re: Alle in de toepassing gebruikte data controls in de Form_Load coderen
« Reactie #3 Gepost op: 11 juli 2012, 18:27:35 »
Hoi Jan,

Citaat
De database wordt dan dus 2 keer geopend en dat geeft de fout.
Dat lijkt me meer een programmeer-fout. Je kan toch bijhouden of je de database al geopend hebt.

Citaat
Bestaat er een instructie die aangeeft of een bestand al geopend is?
Niet direct maar als je een bestand opent en je krijgt error 70 (Permission Denied), dan is het bestand geopend/bezet.

Citaat
In mijn geval wil ik controleren of LOGDIR al geopend is, maar ik weet niet hoe je dat doet  in VB6.
LOGDIR? dat lijkt mij een map verwijzing en die kan niet geopend worden zoals een bestand. Of LOGDIR verwijst naar een netwerkmap die soms niet beschikbaar is of waar je geen schrijfrechten hebt.


Peter