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

vbs - Oracle DB to xls

Frage Entwicklung Datenbanken

Mitglied: KikiMiki

KikiMiki (Level 1) - Jetzt verbinden

17.11.2009 um 12:32 Uhr, 4304 Aufrufe, 6 Kommentare

Hallo,

dank der Hilfe im Forum hier hab ich eine vbs welche mir ein SQL-Statement auf unserer MYSQL DB ausführt und das Ergebnis in xls importiert. Ist das auch für eine Oracle DB möglich?
Hier der von mir benutzte Code:

01.
Option Explicit 
02.
 
03.
'---- CursorTypeEnum Values ---- 
04.
Const adOpenForwardOnly = 0 
05.
' Const adOpenKeyset = 1 
06.
' Const adOpenDynamic = 2 
07.
' Const adOpenStatic = 3 
08.
 
09.
'---- LockTypeEnum Values ---- 
10.
Const adLockReadOnly = 1 
11.
' Const adLockPessimistic = 2 
12.
' Const adLockOptimistic = 3 
13.
' Const adLockBatchOptimistic = 4 
14.
 
15.
'---- CursorLocationEnum Values ---- 
16.
' Const adUseServer = 2 
17.
Const adUseClient = 3 
18.
 
19.
'---- ConnectModeEnum Values ---- 
20.
' Const adModeUnknown = 0 
21.
Const adModeRead = 1 
22.
' Const adModeWrite = 2 
23.
' Const adModeReadWrite = 3 
24.
' Const adModeShareDenyRead = 4 
25.
' Const adModeShareDenyWrite = 8 
26.
' Const adModeShareExclusive = &Hc 
27.
' Const adModeShareDenyNone = &H10 
28.
' Const adModeRecursive = &H400000 
29.
Dim objExcel, objWb, SkriptPfad 
30.
Dim objSheet 
31.
Dim Conn, RS 
32.
Dim rowCount, i, headerSet 
33.
Dim x 'Zähler für Statusbar 
34.
 
35.
 
36.
MsgBox "Mit dem OK-Button wird der Import gestartet."& vbCrLf & "Je nach SQL-Statement kann der Import mehrere Minuten dauern!" ,64, "Info" 
37.
 
38.
 
39.
x = 0 'Anfangswert für Zähler - Anzahl importierter Datensätze 
40.
 
41.
 
42.
rowCount = 1 
43.
 
44.
SkriptPfad = WScript.ScriptFullName 'Pfadermittlung 
45.
SkriptPfad = Left(SkriptPfad, Len(SkriptPfad) - Len(WScript.ScriptName))  'Pfadermittlung 
46.
 
47.
 
48.
Set objExcel = CreateObject("Excel.Application")  
49.
Set objWb = objExcel.Workbooks.Open(SkriptPfad & "Report.xls")'öffnet die angegebene xls 
50.
 
51.
 
52.
 
53.
objExcel.Visible = False 'die geöffnete xls ist während dem Import nicht sichtbar 
54.
objExcel.Sheets("Datenbasis").Select 'wählt die angegebene Mappe der zuvor geöffneten xls 
55.
objExcel.Range("Datenbasis!$1:$65536").ClearContents 'löscht alle Inhalte von angegebener Mappe 
56.
 
57.
'Angabe des Tabellenblattes 
58.
Set objSheet = objExcel.ActiveWorkbook.WorkSheets("Datenbasis") 'Import in angegebenes Tabellenblatt 
59.
 
60.
Set Conn = CreateObject("ADODB.Connection") 
61.
Conn.Provider = "MSDASQL" 
62.
Conn.Mode = adModeRead 
63.
Conn.CursorLocation = adUseClient 
64.
Conn.Open "DRIVER={MySQL ODBC 5.1 Driver};" & _ 
65.
          "SERVER=100.10.19.173;UID=read_user;PWD=geheim;Port=3310;database=kunden_db" 
66.
          
67.
 
68.
Set RS = CreateObject("ADODB.Recordset") 
69.
RS.CursorLocation = adUseClient 
70.
'verwendete SQL-Anweisung 
71.
RS.Source = "SELECT * from Kundentabelle;" 
72.
Set RS.ActiveConnection = Conn 
73.
RS.CursorType = adOpenForwardOnly 
74.
RS.LockType = adLockReadOnly 
75.
RS.Open           
76.
 
77.
Do While Not RS.EOF 
78.
'objExcel.StatusBar = x & " Datensätze aus Kundendatenbank importiert" 'Text für Statusbar 'macht nur Sinn bei objExcel.Visible = True 
79.
'Die Spalenüberschriften einfügen Bezug aus dem SQL-Statement 
80.
	If( headerSet = 0 ) Then 
81.
		For i = 0 to RS.Fields.Count - 1 
82.
		  objSheet.Cells(rowCount, i+1).Value = RS.Fields.Item(i).Name 
83.
		Next 
84.
		headerSet = 1 
85.
    End If 
86.
'Die dazugehörigen Werte einfügen 
87.
	For i = 0 to RS.Fields.Count -1  
88.
	  objSheet.Cells(rowCount+1, i+1).Value = RS.Fields.Item(i).Value 
89.
	Next 
90.
    rowCount = rowCount + 1 
91.
	RS.MoveNext 
92.
	 
93.
x = x + 1 
94.
Loop 
95.
'objExcel.Statusbar = False 'Statusbar bereinigen 'macht nur Sinn bei objExcel.Visible = True 
96.
 
97.
 
98.
objExcel.Sheets("Kunden").Select 'wählt die angegebene Mappe der zuvor geöffneten xls 
99.
objExcel.Cells(12, 5) = Date & " / " & Time & " Uhr"  
100.
objExcel.Cells(13, 5) = x & " Datensätze" 
101.
 
102.
 
103.
RS.Close 
104.
Set RS = Nothing 
105.
 
106.
Conn.Close 
107.
Set Conn = Nothing 
108.
 
109.
 
110.
objExcel.Visible = False  
111.
 
112.
objExcel.ActiveWorkBook.Save  
113.
objExcel.Quit 
114.
 
115.
 
Mitglied: Biber
17.11.2009 um 13:13 Uhr
Moin KikiMiki,

natürlich ist es möglich.

Benötigst du das denn auf einem Rechner, auf dem ein (=irgendein) Oracle-Client installiert ist oder liegt nur der Original-MS-Oracle-Dünnbrett-Treiber vor?

Grüße
Biber
Bitte warten ..
Mitglied: KikiMiki
17.11.2009 um 13:17 Uhr
Hi Biber
Bin jetzt nicht so der Proooofi
Über Toad for Oracle greif ich auch unsere DB...

Hilft dir das weiter?
Bitte warten ..
Mitglied: Biber
17.11.2009 um 13:39 Uhr
Moin KikiMiki,

wenn TOAD installiert ist, dann gibt es wahrscheinlich auch eine richtig einstellte tnsnames.ora.
Aus dieser kannst du dann die Feinheiten abtippen.

Das grobe Raster für Egal-welchen-Oracle-Zugriff findest du ansonsten auf Connectionstrings.

Grüße
Biber
Bitte warten ..
Mitglied: KikiMiki
17.11.2009 um 14:02 Uhr
Hi Biber

bezogen auf meinen geposteten Code, welche Passagen muss ich ändern?
Ist der Aufbau der gleiche und nur die Verbindungsparameter müssen geändert werden?
Bitte warten ..
Mitglied: Biber
17.11.2009 um 14:41 Uhr
Moin KikiMiki,

es sollte mit der gleichen Mimik funktionieren, lediglich die Zeilen 61-65 sollten mit den Daten der Oracle-Connection gefüllt werden.

Da es (soweit es ersichtlich) nur um Lesezugriffe geht, ist kein größerer Änderungsaufwand ableitbar.

Grüße
Biber
Bitte warten ..
Mitglied: Bacaaardi
17.11.2009 um 15:05 Uhr
Hallo,

irgendwie check ich das nicht


01.
Conn.Provider = "MSDASQL"  
02.
Conn.Mode = adModeRead  
03.
Conn.CursorLocation = adUseClient  
04.
Conn.Open "DRIVER={MySQL ODBC 5.1 Driver};" & _  
05.
          "SERVER=100.10.19.173;UID=read_user;PWD=geheim;Port=3310;database=kunden_db" 
Kann ich exakt die gleiche Syntax nehmen?
Nur Server, UID, PWD,POrt und databese mit den entsprechenden Werten ersetzten?
Brauch ich keine zusätzlichen Werte, heißt auch alles Gleich z.B. UID oder UserID?

Bei Conn.Provider was muss da stehen wenn es eine Oracle DB ist?

Damit mein Skript über die MySQL überhaupt lief musste ich mysql-connector-odbc-5.1.5-win32.msi installieren
Brauch ich auch was für dei Oracle DB?
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Batch & Shell
Eventlog Druckjobs mit VBS auslesen (2)

Frage von joni2000de zum Thema Batch & Shell ...

VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

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

Frage von Xaero1982 zum Thema Microsoft ...

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

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...