Avatar billede jimmidreng Nybegynder
18. maj 2001 - 18:20 Der er 10 kommentarer og
2 løsninger

SQL og VB, hvordan? 450 point!

Jeg spurgte om noget lignene for et stykke tid siden, men har aldrig fået et ordentligt svar.
Hvordan eksekvere jeg queries mod en SQL server, så min applikation ikke hænger imens. Jeg ønsker for eksempel at få en løbene status om at querien stadig kører, måske endda mulighed for at stoppe den.
ADO suckz til det, tror jeg. Måske der er noget jeg har misset.

Jeg kunne godt tænke mig et lille eksempel på en løsning.
Avatar billede ortrak Nybegynder
18. maj 2001 - 19:50 #1
Hej Jimmi

Hvad med at benytte noget MSMQ som jo kan processere asynkront.
Du kan se lidt her hvordan du kan få benytte events til at lave callbacks når en query f.eks. er færdig:
http://support.microsoft.com/support/kb/articles/Q176/9/51.ASP

Hvis du så krydrer det med lidt MTS-features til  f.eks. at kunne afbryde en query, så tror jeg godt du kan få det til at spille.

Prøv at søg lidt på msdn.microft.com for yderligere info.


/ortrak
Avatar billede jimmidreng Nybegynder
18. maj 2001 - 23:03 #2
Det begynder langsomt at tage form af noget der ligner noget. Jeg knokler lidt med det, vender stærkt tilbage.
Lige et tillægs spm. Hvordan returnere jeg et recordset med Notifier objektet.
Og kan det virkelig ikke lade sig gøre på anden vis?
Avatar billede jennemaan Nybegynder
19. maj 2001 - 12:36 #3
Referer ado i et vb projekt (Microsoft ActiveX Data Objects 2.x)

Følgende kode skriver du i din form:


Option Explicit
Private WithEvents adoConn As ADODB.Connection

Private Sub adoConn_ExecuteComplete(ByVal RecordsAffected As Long, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pCommand As ADODB.Command, ByVal pRecordset As ADODB.Recordset, ByVal pConnection As ADODB.Connection)
    MsgBox \"Din execute er færdig\"
End Sub


Private Sub Form_Load()

Set adoConn = New ADODB.Connection
adoConn.Execute \"Select * From dinstoretabel\", , adAsyncExecute \'adAsyncExecute=16 - Eksekvér asynkront

End Sub



Bemærk at mens den eksekverer kan du ikke eksekvere andet på din connection.

Hvis du vil vide om adoConn stadig udfører noget kan du spørge på propertien If adoConn.State = adStateExecuting \'(4)... Hvis ja, betyder det at den stadig eksekverer

Når den er færdig med at eksekverer, fyres eventen adoConn_ExecuteComplete.

/Jennemaan
Avatar billede ortrak Nybegynder
19. maj 2001 - 14:34 #4
interessant jennemaan

/ortrak
Avatar billede jennemaan Nybegynder
19. maj 2001 - 14:42 #5
ortrak > der er jo ingen grund til at bruge msmq til at gøre noget ado allerede understøtter.

/Jennemaan
Avatar billede jennemaan Nybegynder
19. maj 2001 - 14:44 #6
Du kan jo selvfølgelig bruge adoConn.Cancel til at afbryde en query

/Jennemaan
Avatar billede jennemaan Nybegynder
19. maj 2001 - 14:48 #7
Husk at hvis du vil bruge Cancel så skal du køre skidtet som en transaktion:

Dvs.

Option Explicit
Private WithEvents adoConn As ADODB.Connection

Private Sub adoConn_ExecuteComplete(ByVal RecordsAffected As Long, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pCommand As ADODB.Command, ByVal pRecordset As ADODB.Recordset, ByVal pConnection As ADODB.Connection)


    adoConn.CommitTrans \'gennemfør transaktionen
    MsgBox \"Din execute er færdig\"

End Sub


Private Sub Form_Load()

Set adoConn = New ADODB.Connection
adoConn.Open \"dinconnectionstring\"
adoConn.BeginTrans \'<- start transaktion
adoConn.Execute \"Select * From dinstoretabel\", , adAsyncExecute \'adAsyncExecute=16 - Eksekvér asynkront

End Sub


Private Sub cmdCancel_Click()

  adoConn.Cancel
  adoConn.RollBackTrans \'ryd op efter dig ;o)
End Sub



/Jennemaan
Avatar billede ortrak Nybegynder
19. maj 2001 - 15:08 #8
Jennemaan:
jeg er helt enig. jeg var bare ikke klar over ado\'s event-muligheder og asynkrone muligheder.


/ortrak
Avatar billede razersedge Nybegynder
19. maj 2001 - 18:37 #9
hvad er SQL præcist?? ved det er en database, men er det freeware? med i office pakken osv..
Avatar billede jimmidreng Nybegynder
19. maj 2001 - 21:28 #10
Så var den der, fedt!
Jennemaan, det var lige præcist det jeg behøvede.
Genialt! Jeg var været rundt om stort set alt andet end den ADO feature. Fantastisk!
Og Ortrak, thanx as well. MSMQ kunne jeg bruge til en anden app, hvor jeg manglede det. Så helt spildt er din hjælp ikke.

Og Razersedge: SQL står for Super Quick Letterformat. Det er en database type som du kan integrere med Outlook Express. Meget avanceret stof.
Avatar billede jennemaan Nybegynder
20. maj 2001 - 22:14 #11
jimmidreng > LOL ;o)

Avatar billede mancap Nybegynder
22. maj 2001 - 22:50 #12
Nøøj... Skal vi ikke ha oprettet en discussion-group omhandlende det brev-format? :-) hæhæhæ
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester