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, 2705 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
Switche und Hubs
gelöst Cisco SG 200-08 firmware boot code language upgrade Was ist zu beachten ? (9)

Frage von dxellas zum Thema Switche und Hubs ...

Batch & Shell
gelöst PS: Suche "eleganteren" Code (10)

Frage von Kraemer zum Thema Batch & Shell ...

Windows Update
gelöst Windows Update Fehler Code 0x80244018 bei Exchange 2010 (5)

Frage von Froschmedia zum Thema Windows Update ...

Batch & Shell
gelöst Powershell: Fortschrittsanzeige beim Laden von Snapins (5)

Frage von Raven42 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Google Android

Cyanogenmod alternative Downloadquelle

(5)

Tipp von Lochkartenstanzer zum Thema Google Android ...

Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(5)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Statische Routen mit Shorewall, ISC-DHCP Server konfigurieren für Android Devices (24)

Frage von terminator zum Thema LAN, WAN, Wireless ...

Server
gelöst Wie erkennen, dass nur deutsche IPs Zugang zu einer Website haben? (22)

Frage von Coreknabe zum Thema Server ...

Hardware
16-20 Port POE Switch mit VLAN (19)

Frage von thomasreischer zum Thema Hardware ...

Windows Server
Exchange HyperV Prozessorlast (18)

Frage von theoberlin zum Thema Windows Server ...