anoniem Geplaatst: 23 augustus 2002 Delen Geplaatst: 23 augustus 2002 Hallo allemaal, Ik heb een probleempje. Ik geef in mijn applicatie de gebruiker/beheerder de mogelijkheid om adhv wat textboxjes zelf een connectionstring voor een verbinding met SQL-server samen te stellen. Wanneer een beheerder bijv. een fout IP-adres opgeeft en de applicatie opnieuw start met 'zijn' connectionstring, blijft het systeem erg lang zoeken naar dit adres. Mijn vraag is: [b:294de995f9]KAN DE .OPEN OPDRACHT GEANNULEERD WORDEN?[/b:294de995f9] Dit is zo'n beetje de manier van openen. (ik weet niet of ik alles hebt geplakt hier, maar het werkt goed met de juiste connectionstring in ieder geval) Dim dbtest As New ADODB.Connection dbTest.CursorLocation = adUseServer dbTest.ConnectionString = "Provider=sqloledb;Server=192.168.0.1; enz ... dbTest.ConnectionTimeout = 15 dbTest.Open , , , adAsyncConnect dbTest.Properties("Enable Fastload").Value = True Quote Link naar reactie
anoniem Geplaatst: 23 augustus 2002 Auteur Delen Geplaatst: 23 augustus 2002 Dit is geen antwoord op je vraag, maar als ontwikkelaar moet je er altijd voor zorgen dat de gebruiker geen fout kán maken. Er is geen enkel softwarepakket opgewassen tegen fouten als ze mogelijk zijn. Quote Link naar reactie
anoniem Geplaatst: 25 augustus 2002 Auteur Delen Geplaatst: 25 augustus 2002 Ja Wiep, helemaal mee eens, maar als de gebruiker wel een goed IP-adres ingegeven heeft, maar de volgende keer als hij opstart, er geen netwerkverbinding is, blijft hij zo lang zoeken naar het 'goede' IP-adres. Ik wil gewoon een (fout)melding wanneer er de database niet benaderd kan worden. Bedankt voor je reactie. Rob Quote Link naar reactie
anoniem Geplaatst: 25 augustus 2002 Auteur Delen Geplaatst: 25 augustus 2002 [quote:5dd875fcd2="Rob V"]Ja Wiep, helemaal mee eens, maar als de gebruiker wel een goed IP-adres ingegeven heeft, maar de volgende keer als hij opstart, er geen netwerkverbinding is, blijft hij zo lang zoeken naar het 'goede' IP-adres.[/quote:5dd875fcd2] Dit is een eigenschap van het TCP/IP protocol. [quote:5dd875fcd2="Rob V"] Ik wil gewoon een (fout)melding wanneer er de database niet benaderd kan worden.[/quote:5dd875fcd2] [code:1:5dd875fcd2] dbTest.ConnectionTimeout = 15 dbTest.Open , , , adAsyncConnect [/code:1:5dd875fcd2] Laat me raden... Dit gebeurt na maximaal 15 seconden?? :-? Het is misschien ook handig om de parameter [i:5dd875fcd2]adAsyncConnect[/i:5dd875fcd2] te veranderen in een andere waarde. Quote Link naar reactie
anoniem Geplaatst: 25 augustus 2002 Auteur Delen Geplaatst: 25 augustus 2002 Als ik adSyncConnect weglaat, inderdaad na de ingestelde TimeOut. Maar MET adSyncConnect blijft de boel hangen tijdens het openen/benaderen van de database. Waar dient adSyncConnect precies voor? en wat kan ik anders gebruiken? Heeft het te maken met, of de code WEL of NIET doorloopt tijdens openen van database? Rob Quote Link naar reactie
anoniem Geplaatst: 25 augustus 2002 Auteur Delen Geplaatst: 25 augustus 2002 [quote:ab32f6addd="Rob V"]Als ik adSyncConnect weglaat, inderdaad na de ingestelde TimeOut. Maar MET adSyncConnect blijft de boel hangen tijdens het openen/benaderen van de database. Waar dient adSyncConnect precies voor? en wat kan ik anders gebruiken? Heeft het te maken met, of de code WEL of NIET doorloopt tijdens openen van database?[/quote:ab32f6addd] Kort gezegd. Ja. Je moet gewoon wachten totdat er een connectie met de database is gemaakt. Het hoeft niet, maar daarmee maak je het alleen maar ingewikkelder dan het hoeft te zijn. Stel je bent nog bezig om een connectie met de database te maken, dan zou je code gewoon doorlopen en al proberen om gegevens op te halen terwijl dat niet kan, omdat er nog geen connectie met de database is. Je zou de timeout instelling wat kunnen verkleinen. Of e.o.a. statusscherm op het scherm laten zien. Of een splashscreen tonen met daarin de melding: "Bezig met maken van connectie met de database..." Of ... Quote Link naar reactie
anoniem Geplaatst: 26 augustus 2002 Auteur Delen Geplaatst: 26 augustus 2002 Ja dat doe ik. Ik heb een splash-screen die zegt dat er gezocht wordt naar de database. Echter, MET adSyncConnect blijft dit scherm dan hangen, VEEL langer dan de ingestelde TimeOut. ZONDER adSyncConnect verdwijnt het splash-scherm na de TimeOut, maar ik begrijp dat de code dan gewoon doorloopt. (in dit geval doe ik in het begin nog niets met de database, alleen een vlaggetje zetten of hij benaderbaar is of niet. Quote Link naar reactie
anoniem Geplaatst: 26 augustus 2002 Auteur Delen Geplaatst: 26 augustus 2002 [quote:03fe9bece7="Rob V"]Ja dat doe ik. Ik heb een splash-screen die zegt dat er gezocht wordt naar de database. Echter, MET adSyncConnect blijft dit scherm dan hangen, VEEL langer dan de ingestelde TimeOut. [/quote:03fe9bece7] Acties als deze moeten daarom om die reden in een aparte thread uitgevoerd worden. VB heeft hier standaard geen ondersteuning voor. - Of je zou hier rechtstreeks de Windows API functionaliteit voor moeten gebruiken om dit voor elkaar te krijgen. - Of third-party componenten die dit voor je doen. - Of verbinding maken m.b.v. AdAsyncConnect en dan in een loopje controleren of er nog geprobeerd wordt om een verbinding te maken. [code:1:03fe9bece7] dbTest.Open , , , adAsyncConnect Do Until (dbTest.State <> adStateConnecting) DoEvents Loop [/code:1:03fe9bece7] implementatie van de laatst beschreven methode. Het enige nadeel is echter dat deze voor de periode dat deze loop duurt de processor onnodig belast. [url=http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdprostatex.asp]ADO State Property example[/url] [quote:03fe9bece7="Rob V"] ZONDER adSyncConnect verdwijnt het splash-scherm na de TimeOut, maar ik begrijp dat de code dan gewoon doorloopt. (in dit geval doe ik in het begin nog niets met de database, alleen een vlaggetje zetten of hij benaderbaar is of niet.[/quote:03fe9bece7] Quote Link naar reactie
anoniem Geplaatst: 26 augustus 2002 Auteur Delen Geplaatst: 26 augustus 2002 OK, duidelijk antwoord, dank je wel. Ik ga het op die manier proberen. Rob Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen