18. maj 2001 - 18:20Der 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.
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?
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.
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
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.
Nøøj... Skal vi ikke ha oprettet en discussion-group omhandlende det brev-format? :-) hæhæhæ
Synes godt om
Ny brugerNybegynder
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.