Ga naar inhoud

VB SQLSERVER Open-opdracht annuleren


anoniem

Aanbevolen berichten

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
Link naar reactie
[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.
Link naar reactie
[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 ...
Link naar reactie
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.
Link naar reactie
[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]
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...