-
Prozessdauer bei Import nach MS Access via ODBC
Vorgeschichte:
Ich habe mir ein Modul erstellt, mit welchem ich AS400-Daten über eine SQL-Abfrage in MS Access importiere.
Zunächst wir hierin die Anzahl der Felder und Datensätze ermittelt und abgefragt, ob der Import weiter verfolgt werden soll. Nach Zustimmung werden nach Anlegen der notendigen Access-Tabelle dann die Daten importiert. Derweil zeigt ein Progressbar den Verlauf an.
Nun das Problem:
Manchmal ist der zuvor im Command-Objekt gesetzt Wert für Timeout (SQL0666) zu klein und die Routine wird abgebrochen. Doch auch wenn dieser erhöht wird, dauert es je nach Komplexität der Abfrage einige Zeit, bis es zum Import kommt bzw. überhaupt etwas passiert. Hier könnte zumindest ein Progressbar Aufschluss über den Aktivitätenverlauf geben.
Hier die Frage:
Ist es möglich die zu erwartende Prozessdauer (die wird m.E. in der SQL0666-Meldung angezeigt) zunächst abzufragen um diese dann in einem Progressbar zu verwenden?
Wäre schön wenn hier was gäbe.
Gruß Thomas
-
Dazu müsstest du den SQL 2 Mal ausführen.
1. CommandTimeout mit 1, Auswerten der Fehlermeldung
2. CommandTimeout mit größerem Wert
Über ADO kannst du den SQL auch asynchron starten, so dass ein Weiterarbeiten möglich ist.
Über das Recordset.State kannst du abfragen, ob der Execute ggf. noch läuft.
Über die Cancel-Eigenschaft kannst du (zumindest bei der AS/400) den laufenden Befehl sogar abbrechen.
Das Connection-Object liefert über ein Ereignis, dass der SQL fertig ist und die daten abgeholt bzw. verarbeitet werdn können (je nach Cursorart).
-
Danke!
Damit mit der Auswertung der Fehlermeldung ist eine gute Lösung. Der zusätzliche SQL nimmt nicht sonderlich viel Zeit in Anspruch und durch das CommandTimeout= 1 ist die Fehlermeldung ruckzuck da!
Aber kannst du das asynchrone Starten näher beschreiben?
Könnte dies so lauten:
Code:
Dim AS400Connect As New ADODB.Connection
Dim AS400Command As New ADODB.Command
Dim AS400Record As New ADODB.Recordset
CommString = "Select * FROM DCWD.KBEWKO WHERE KBKST<>'99999' Order BY KBBTX "
With AS400Connect
.ConnectionString = "DSN=THK-Bibliothek"
.Open "DSN=THK-Bibliothek", Benutzerkennung, Passwort
end with
With AS400Command
.CommandText = CommString
.CommandTimeout = 500
Set .ActiveConnection = AS400Connect
End With
AS400Record .StayInSync = False
AS400Record .Open AS400Command
...
Gruß Thomas
-
Code:
' Ereignisse der Verbindung
Dim WithEvents cLocalWait As ADODB.Connection ' Warten auf Fertigstellung
:
:
With xRecord
.CursorLocation = adUseClient ' lokal Cache
.CursorType = adOpenStatic
.LockType = adLockBatchOptimistic
.CacheSize = 10000
.Open xSQL, cLocal, , , adAsyncExecute Or adAsyncFetch
Do While True
Select Case True
Case Is = (.State And adStateExecuting) = adStateExecuting
DoEvents
Case Else
Exit Do
End Select
Loop
End With
:
:
Private Sub cLocalWait_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)
' Behandlung des Ereignisses
If Not pError Is Nothing Then
' Fehler passiert
End If
End Sub
-
Bei mir läuft die Schleife endlos obwohl .State und adStateExecuting den Wert 4 haben!
Welche Werte kann denn .State überhaupt haben?
-
Auf MSDN gibts eine Beschreibung zu ADO.
Du wirst auch fündig in "C:\WinVerz\HELP\ADO210.CHM". Die Doku ist immer noch weitgehend gültig.
adStateExecuting hat ja den Wert 4.
Similar Threads
-
By olafu in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 05-10-06, 08:13
-
By Fubini in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 06-09-05, 14:11
-
By mdhl in forum NEWSboard Server Software
Antworten: 5
Letzter Beitrag: 11-07-05, 09:18
-
By Rico in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 21-03-05, 09:43
-
By SL in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 22-07-02, 11:54
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks