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, 2695 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??
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Erkennung und -Abwehr
Port 7547 SOAP Remote Code Execution Attack Against DSL Modems Internet Storm Center (5)

Link von Lochkartenstanzer zum Thema Erkennung und -Abwehr ...

Batch & Shell
gelöst Findstr - code für schwieriger Abfrage gesucht (9)

Frage von reissaus73 zum Thema Batch & Shell ...

Windows Server
Code: 5: Unknown Error (4)

Frage von schauan zum Thema Windows Server ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

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