Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Fortschrittsanzeige für folgenden Code

Frage Entwicklung Batch & Shell

Mitglied: KikiMiki

KikiMiki (Level 1) - Jetzt verbinden

05.03.2009, aktualisiert 17:00 Uhr, 2711 Aufrufe

Hallo ich habe folgenden Code

01.
 
02.
Option Explicit 
03.
 
04.
'---- CursorTypeEnum Values ---- 
05.
Const adOpenForwardOnly = 0 
06.
' Const adOpenKeyset = 1 
07.
' Const adOpenDynamic = 2 
08.
' Const adOpenStatic = 3 
09.
 
10.
'---- LockTypeEnum Values ---- 
11.
Const adLockReadOnly = 1 
12.
' Const adLockPessimistic = 2 
13.
' Const adLockOptimistic = 3 
14.
' Const adLockBatchOptimistic = 4 
15.
 
16.
'---- CursorLocationEnum Values ---- 
17.
' Const adUseServer = 2 
18.
Const adUseClient = 3 
19.
 
20.
'---- ConnectModeEnum Values ---- 
21.
' Const adModeUnknown = 0 
22.
Const adModeRead = 1 
23.
' Const adModeWrite = 2 
24.
' Const adModeReadWrite = 3 
25.
' Const adModeShareDenyRead = 4 
26.
' Const adModeShareDenyWrite = 8 
27.
' Const adModeShareExclusive = &Hc 
28.
' Const adModeShareDenyNone = &H10 
29.
' Const adModeRecursive = &H400000 
30.
Dim objExcel, objWb, SkriptPfad 
31.
Dim objSheet 
32.
Dim Conn, RS 
33.
Dim rowCount, i, headerSet 
34.
Dim x 'Zähler für Statusbar 
35.
 
36.
x = 0 'Anfangswert für Zähler 
37.
 
38.
 
39.
rowCount = 1 
40.
 
41.
SkriptPfad = WScript.ScriptFullName 'Pfadermittlung 
42.
SkriptPfad = Left(SkriptPfad, Len(SkriptPfad) - Len(WScript.ScriptName))  'Pfadermittlung 
43.
 
44.
 
45.
Set objExcel = CreateObject("Excel.Application")  
46.
Set objWb = objExcel.Workbooks.Open(SkriptPfad & "../test.xls")'öffnet die angegebene xls 
47.
 
48.
 
49.
 
50.
objExcel.Visible = False 
51.
objExcel.Sheets("Datenbasis").Select 'wählt die angegebene Mappe der zuvor geöffneten xls 
52.
objExcel.Range("Datenbasis!$1:$65536").ClearContents 'löscht alle Inhalte von angegebener Mappe 
53.
 
54.
'Angabe des Tabellenblattes 
55.
Set objSheet = objExcel.ActiveWorkbook.WorkSheets("Datenbasis") 'Import in angegebenes Tabellenblatt 
56.
 
57.
Set Conn = CreateObject("ADODB.Connection") 
58.
Conn.Provider = "MSDASQL" 
59.
Conn.Mode = adModeRead 
60.
Conn.CursorLocation = adUseClient 
61.
Conn.Open "DRIVER={MySQL ODBC 5.1 Driver};" & _ 
62.
          "DATABASE=name;" & _ 
63.
          "SERVER=server;", _ 
64.
          "user", "password" 
65.
 
66.
Set RS = CreateObject("ADODB.Recordset") 
67.
RS.CursorLocation = adUseClient 
68.
'verwendete SQL-Anweisung 
69.
RS.Source = "SELECT P* From Kunde;" 
70.
Set RS.ActiveConnection = Conn 
71.
RS.CursorType = adOpenForwardOnly 
72.
RS.LockType = adLockReadOnly 
73.
RS.Open           
74.
 
75.
Do While Not RS.EOF 
76.
objExcel.StatusBar = x & " Datensätze aus DB importiert" 'Text für Statusbar 
77.
'Die Spalenüberschriften einfügen Bezug aus dem SQL-Statement 
78.
	If( headerSet = 0 ) Then 
79.
		For i = 0 to RS.Fields.Count - 1 
80.
		  objSheet.Cells(rowCount, i+1).Value = RS.Fields.Item(i).Name 
81.
		Next 
82.
		headerSet = 1 
83.
    End If 
84.
'Die dazugehörigen Werte einfügen 
85.
	For i = 0 to RS.Fields.Count -1  
86.
	  objSheet.Cells(rowCount+1, i+1).Value = RS.Fields.Item(i).Value 
87.
	Next 
88.
    rowCount = rowCount + 1 
89.
	RS.MoveNext 
90.
	 
91.
x = x + 1 
92.
Loop 
93.
objExcel.Statusbar = False 'Statusbar bereinigen 
94.
 
95.
 
96.
objExcel.Sheets("Pivot1").Select 'wählt die angegebene Mappe der zuvor geöffneten xls 
97.
 
98.
 
99.
RS.Close 
100.
Set RS = Nothing 
101.
 
102.
Conn.Close 
103.
Set Conn = Nothing 
104.
 
105.
 
106.
MsgBox "Datenimport! Die Datenbasis zeigt den Stand vom " &  Date  & " bis " & Time & "!" & vbCrLf & "Aktualisieren Sie die Pivottabellen über die Schaltfläche!" & vbCrLf & "Es wurden " & x & " Datensätze aus DB importiert",64, "Info" 
107.
 
Bisher war das excel sichtbar, möchte es aber im Hintergrund laufen lassen. Deshalb objExcel.Visible = False. (Quellcode Zeile 50)

Ich möchte den Anwender aber über die Aktivität des Imports informieren

D.h. ich bräuchte einen Fortschrittsbalken werden der Import im Hintergrund läuft

in dem Code ist die Variable x deklariert, sie gibt die Anzahl der importieren Datensätze an.

Da ich aber nicht weiß wieviele Datensätze es werden, wie soll es dann prozentual dargestellt werden?


Hab mir folgendes überleget:

ich könnte ja vor dem eigentlichen SQL ein weiteres SQL ausführen welche mir die Anzahl der Zeilen ausgibt:

01.
SELECT COUNT(*) FROM Kunden';
Damit würde ich die Gesamtanzahl kriegen.

Wie kann ich diesen Wert in einem Fortschrittsbalken zu meinem Wert x prozentual darstellen.

Jemand eine Idee??
Ähnliche Inhalte
Microsoft Office
VBA Code zum Kopieren von einzelnen Zellen in Excel (3)

Frage von SebastianL zum Thema Microsoft Office ...

VB for Applications
gelöst VBA Code Änderung Access 2010 (6)

Frage von Dr.Cornwallis zum Thema VB for Applications ...

Windows Systemdateien
gelöst JDK MSI verteilen mit Error Code 1603 (1)

Frage von WinLiCLI zum Thema Windows Systemdateien ...

Windows 10
gelöst Installation - CreateProcess schlug Fehl: Code 2 (3)

Frage von KLeinstein.tm zum Thema Windows 10 ...

Neue Wissensbeiträge
Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(38)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
POS Hardware und alternativen zu Raid 1? (21)

Frage von Brotkasten zum Thema Festplatten, SSD, Raid ...

Viren und Trojaner
Verschlüsselungstrojaner simulieren (18)

Frage von AlbertMinrich zum Thema Viren und Trojaner ...

Ubuntu
gelöst Nextcloud 12 Antivirus App for Files (10)

Frage von horstvogel zum Thema Ubuntu ...

SAN, NAS, DAS
+100tb Storagelösung (10)

Frage von Data-Fabi zum Thema SAN, NAS, DAS ...